⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imwheel.patch

📁 gpm-1.20.0.tar.gz
💻 PATCH
📖 第 1 页 / 共 4 页
字号:
diff -ru --exclude=Makefile ./ChangeLog ../imwheel/gpm-imwheel/ChangeLog--- ./ChangeLog	Fri Nov 12 08:27:37 1999+++ ../imwheel/gpm-imwheel/ChangeLog	Sun Feb 27 16:30:46 2000@@ -346,6 +346,8 @@  	<tob@world.std.com> for braindead chords in t-mouse with 2 button  	mice. +CHANGED 12/16/98 by Jonathan Atkins. updated for imwheel.+ Tue Nov 17 23:10:04 1998  Ian T Zimmerman  <itz@transbay.net>  	* configure.in (release): Step to 1.16.0@@ -806,6 +808,8 @@ Sat Jul 25 21:08:46 1998 Edmund Grimley Evans (edmund@vocalis.com)  	* mice.c: added M_ms_plus and M_ms_plus_lr++CHANGED 9/8/98 for imwheel by Jonathan Atkins.  Diff in imwheel contains changes  Mon Jul  6 13:00:23 1998 Robin Houston (robin.houston@guardian.co.uk) Only in ../imwheel/gpm-imwheel: ChangeLog.origdiff -ru --exclude=Makefile ./debuglog.c ../imwheel/gpm-imwheel/debuglog.c--- ./debuglog.c	Fri Nov 12 08:27:37 1999+++ ../imwheel/gpm-imwheel/debuglog.c	Sun Feb 27 16:30:46 2000@@ -58,6 +58,8 @@ void gpm_debug_log(int level, char* fmt, ...) {+  //printf("level=%d\n",level);+  //printf("gpm_debug_level=%d\n",gpm_debug_level);   if (level <= gpm_debug_level) {     va_list ap;     va_start(ap, fmt);Only in ../imwheel/gpm-imwheel: debuglog.c.origdiff -ru --exclude=Makefile ./gpm.c ../imwheel/gpm-imwheel/gpm.c--- ./gpm.c	Fri Nov 12 08:27:36 1999+++ ../imwheel/gpm-imwheel/gpm.c	Sun Feb 27 16:30:46 2000@@ -5,6 +5,9 @@  * Copyright 1994-1997   rubini@linux.it (Alessandro Rubini)  * Copyright (C) 1998	Ian Zimmerman <itz@rahul.net>  *+ * Modified on 9/8/1998 by Jonathan Atkins for use with wheel mice+ *                         <jcatki@home.com>+ *  *   This program is free software; you can redistribute it and/or modify  *   it under the terms of the GNU General Public License as published by  *   the Free Software Foundation; either version 2 of the License, or@@ -61,6 +64,7 @@   DEF_TYPE, DEF_DEV, DEF_SEQUENCE,   DEF_BAUD, DEF_SAMPLE, DEF_DELTA, DEF_ACCEL, DEF_SCALE, 0 /* scaley */,   DEF_TIME, DEF_CLUSTER, DEF_THREE, DEF_TOGGLE, DEF_GLIDEPOINT_TAP,+  DEF_WHEEL, DEF_NO_MIDDLE,   (Gpm_Type *)NULL   }, };@@ -74,6 +78,7 @@ int opt_ptrdrag=DEF_PTRDRAG; int opt_kill=0; int opt_repeater=0, opt_double=0;+int opt_wheel_repeater=0; char* opt_repeater_type = 0; int opt_aged = 0; char *opt_special=NULL; /* special commands, like reboot or such */@@ -86,6 +91,7 @@ struct winsize win; int maxx, maxy; int fifofd=-1;+int wheel_fifofd=-1;  int eventFlag=0; Gpm_Cinfo *cinfo[MAX_VC+1];@@ -349,7 +355,7 @@       gpm_debug_log(LOG_NOTICE,"Skipping a data packet (?)");       return NULL;       }-  gpm_debug_log(LOG_DEBUG,"Data %02x %02x %02x (%02x)",data[0],data[1],data[2],data[3]);+  gpm_debug_log(LOG_DEBUG,"Data %02x %02x %02x (%02x %02x %02x %02x %02x %02x)",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8]);   return data; } @@ -368,28 +374,52 @@   static struct vt_stat stat;   static struct timeval tv1={0,0}, tv2; /* tv1==0: first click is single */   static struct timeval timeout={0,0};+  int stick;   fd_set fdSet;   static int newB=0, oldB=0, oldT=0; /* old buttons and Type to chain events */   /* static int buttonlock, buttonlockflag; */+  static int wheel_fakeup;+  static unsigned char buttons;  #define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL)) #define DIF_TIME(t1,t2) ((t2.tv_sec -t1.tv_sec) *1000+ \                          (t2.tv_usec-t1.tv_usec)/1000)  +  gpm_debug_log(LOG_DEBUG,"processMouse(%d,%p,%p,%d)",fd,event,type,kd_mode);   oldT=event->type;+  wheel_fakeup=0;    if (eventFlag)     {     eventFlag=0; +    gpm_debug_log(LOG_DEBUG,"nEvent.dx=%d  nEvent.dy=%d",nEvent.dx,nEvent.dy);     if (m_type->absolute)       /* a pen or other absolute device */       {+      gpm_debug_log(LOG_DEBUG,"absolute coords.");       event->x=nEvent.x;       event->y=nEvent.y;       }+    else+      gpm_debug_log(LOG_DEBUG,"not absolute coords.");     event->dx=nEvent.dx;     event->dy=nEvent.dy;+    if(opt_wheel)+      {+      gpm_debug_log(LOG_DEBUG,"nEvent.stick_x=%d  nEvent.stick_y=%d",nEvent.stick_x,nEvent.stick_y);+      event->stick_x=nEvent.stick_x;+      event->stick_y=nEvent.stick_y;+      }+    if(opt_wheel && nEvent.buttons&(GPM_W_UP|GPM_W_DOWN|GPM_W_RIGHT|GPM_W_LEFT))+      {+      gpm_debug_log(LOG_DEBUG,"Doing wheel button fakeup.");+      event->buttons=nEvent.buttons&7;+      oldB=newB; newB=event->buttons;+      event->type=GPM_UP;+      wheel_fakeup=1;+      }+    else     event->buttons=nEvent.buttons;     }   else@@ -411,9 +441,21 @@       event->modifiers = nEvent.modifiers; /* propagate modifiers */        /* propagate buttons */-      nEvent.buttons = opt_sequence[nEvent.buttons]&7; /* change the order */+      gpm_debug_log(LOG_DEBUG,"nEvent.buttons=%d  opt_sequence=%d  opt_wheel=%d",nEvent.buttons,opt_sequence[nEvent.buttons&7]&7,opt_wheel);+      stick=nEvent.buttons&GPM_STICK;+      nEvent.buttons = (opt_sequence[nEvent.buttons&7]&7)|+	(opt_wheel?((nEvent.buttons&GPM_W_UP)|(nEvent.buttons&GPM_W_DOWN)|+		    (nEvent.buttons&GPM_W_RIGHT)|(nEvent.buttons&GPM_W_LEFT))+	          :0);       oldB=newB; newB=nEvent.buttons;+      gpm_debug_log(LOG_DEBUG,"nEvent.buttons=%d", nEvent.buttons);       if (!i) event->buttons=nEvent.buttons;+      if(opt_wheel)+      {+        gpm_debug_log(LOG_DEBUG,"nEvent.stick_x=%d  nEvent.stick_y=%d",nEvent.stick_x,nEvent.stick_y);+        event->stick_x=nEvent.stick_x;+        event->stick_y=nEvent.stick_y;+      }        if (oldB!=newB) 	{@@ -425,7 +467,12 @@       if (!(m_type->absolute)) /* mouse */ 	{ 	if (abs(nEvent.dx)+abs(nEvent.dy) > opt_delta)+	{+	  gpm_debug_log(LOG_DEBUG,"opt_delta met."); 	  nEvent.dx*=opt_accel, nEvent.dy*=opt_accel;+	}+	else+	  gpm_debug_log(LOG_DEBUG,"opt_delta met.");  	/* increment the reported dx,dy */ 	event->dx+=nEvent.dx;@@ -444,9 +491,72 @@          } /* eventFlag */ +  if(!wheel_fakeup)+  { /*....................................... update the button number */    if ((event->buttons&GPM_B_MIDDLE) && !opt_three) opt_three++;+  if ((event->buttons&GPM_W_UP || event->buttons&GPM_W_DOWN ||+	event->buttons&GPM_W_LEFT || event->buttons&GPM_W_RIGHT)+      && !opt_wheel)+    opt_wheel++;+  if(opt_wheel && event->buttons&(GPM_W_UP|GPM_W_DOWN))+    gpm_debug_log(LOG_DEBUG,"Wheel - %s%s",(event->buttons&GPM_W_UP?"Up ":""),+	(event->buttons&GPM_W_DOWN?"Down":""));+  if(opt_wheel && (event->stick_x || event->stick_y))+    gpm_debug_log(LOG_DEBUG,"Stick - %d,%d",event->stick_x,event->stick_y);++/* .................................... repeat wheel to special fifo */+  +  if(wheel_fifofd)+  {+    char buffer;++    if((event->buttons&(GPM_W_DOWN|GPM_W_UP|GPM_W_LEFT|GPM_W_RIGHT))+	&& event->buttons>0)/* button down, not up! (not the wheel motion) */+    {+      event->type=GPM_DOWN;+      if(event->buttons&GPM_W_UP)+      {+	buffer=4;+	gpm_debug_log(LOG_DEBUG,"repeat wheel: %d",buffer);+	write(wheel_fifofd,&buffer,1);+      }+      if(event->buttons&GPM_W_DOWN)+      {+	buffer=5;+	gpm_debug_log(LOG_DEBUG,"repeat wheel: %d",buffer);+	write(wheel_fifofd,&buffer,1);+      }+      if(event->buttons&GPM_W_LEFT)+      {+	buffer=6;+	gpm_debug_log(LOG_DEBUG,"repeat wheel: %d",buffer);+	write(wheel_fifofd,&buffer,1);+      }+      if(event->buttons&GPM_W_RIGHT)+      {+	buffer=7;+	gpm_debug_log(LOG_DEBUG,"repeat wheel: %d",buffer);+	write(wheel_fifofd,&buffer,1);+      }+    }+    else if (stick)+    {+      buffer=8; /* stick x & y delta values follow */+      gpm_debug_log(LOG_DEBUG,"repeat stick: %d",buffer);+      write(wheel_fifofd,&buffer,1);+      buffer=event->stick_x;+      gpm_debug_log(LOG_DEBUG,"repeat wheel: %d",buffer);+      write(wheel_fifofd,&buffer,1);+      buffer=event->stick_y;+      gpm_debug_log(LOG_DEBUG,"repeat wheel: %d",buffer);+      write(wheel_fifofd,&buffer,1);+      event->buttons^=GPM_STICK;+    }+  }+  buttons=event->buttons;+  event->buttons=event->buttons&7;  /*....................................... we're a repeater, aren't we? */ @@ -470,6 +580,7 @@       }     return 0; /* no events nor information for clients */     }+  event->buttons=buttons;  /*....................................... no, we arent a repeater, go on */ @@ -515,11 +626,12 @@   else     event->type = (event->buttons > oldB ? GPM_DOWN : GPM_UP); +  }   switch(event->type)                    /* now provide the cooked bits */     {     case GPM_DOWN:       GET_TIME(tv2);-      if (tv1.tv_sec && (DIF_TIME(tv1,tv2)<opt_time)) /* check first click */+      if ((!opt_wheel || (event->buttons&7)) && tv1.tv_sec && (DIF_TIME(tv1,tv2)<opt_time)) /* check first click */ 	statusC++, statusC%=3; /* 0, 1 or 2 */       else statusC=0;       event->type|=(GPM_SINGLE<<statusC);@@ -580,7 +692,7 @@   if (opt_special && event->type & GPM_DOWN)      return processSpecial(event); -  return 1;+  return (!wheel_fakeup); }  /*-------------------------------------------------------------------*/@@ -706,6 +818,7 @@       event.vc = stat.v_active;       event.x=statusX;   event.y=statusY;       event.dx=maxx;     event.dy=maxy;+      gpm_debug_log(LOG_DEBUG,"statusB=%d", statusB);       event.buttons= statusB;       event.clicks=statusC;       /* fall through */@@ -875,6 +988,8 @@   int maxfd=-1;   int pending;   Gpm_Event event;+  int wheel_done;+  Gpm_Event eventbuf;    prgname=argv[0];   setuid(0); /* just in case... */@@ -1035,7 +1150,7 @@     if (ioctl(fd, KDGETMODE, &kd_mode)<0)       oops("ioctl(KDGETMODE)");     close(fd);-    if (kd_mode != KD_TEXT && !opt_repeater)+    if (kd_mode != KD_TEXT && !opt_repeater && !opt_wheel_repeater)       {       wait_text(&mouse_table[1].fd);       maxfd=max(maxfd,mouse_table[1].fd);@@ -1056,15 +1171,38 @@       if (FD_ISSET(which_mouse->fd,&selSet)) 	  { 	  FD_CLR(which_mouse->fd,&selSet); pending--;-	  if (processMouse(which_mouse->fd, &event, m_type, kd_mode))+	  wheel_done=0;+	  do

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -