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

📄 mouse_wheel.patch

📁 gpm-1.20.0.tar.gz
💻 PATCH
📖 第 1 页 / 共 4 页
字号:
   i=ePtr->type; ePtr->type=0;   return i; /* number of buttons */ }++int Gpm_GetSnapshot(Gpm_Event *ePtr)+{+   int rc;+   Gpm_EventExt eTmp;+   rc = Gpm_GetSnapshotExt(&eTmp);	+   if (ePtr)+      memcpy(ePtr, &eTmp, sizeof(Gpm_Event));+   return rc;	 	+	+}     /* Local Variables: */ /* c-indent-level: 2 */ /* End: */+diff -u -r gpm-1.19.3/mev.c gpm-1.19.3.wheel/mev.c--- gpm-1.19.3/mev.c	Tue Jan 18 09:23:00 2000+++ gpm-1.19.3.wheel/mev.c	Sat Nov 11 19:17:46 2000@@ -90,15 +90,15 @@ int opt_pointer =  0;  /*===================================================================*/-int user_handler(Gpm_Event *event, void *data)+int user_handler(Gpm_EventExt *event, void *data) {   if (opt_fit) Gpm_FitEvent(event); -  printf("mouse: event 0x%02X, at %2i,%2i (delta %2i,%2i), "+  printf("mouse: event 0x%05X at %2i,%2i (delta %2i,%2i,%2i,%2i), "          "buttons %i, modifiers 0x%02X\r\n", 	 event->type, 	 event->x, event->y,-	 event->dx, event->dy,+	 event->dx, event->dy, event->dw, event->dw2, 	 event->buttons, event->modifiers);    if (event->type & (GPM_DRAG|GPM_DOWN)) {@@ -110,7 +110,7 @@ }  /*-------------------------------------------------------------------*/-int emacs_handler(Gpm_Event *event, void *data)+int emacs_handler(Gpm_EventExt *event, void *data) {   int i,j;   static int dragX, dragY;@@ -230,8 +230,8 @@ /*===================================================================*/ int usage(void) {-  printf( "(" GPM_NAME ") " GPM_RELEASE ", " GPM_DATE "\n"-          "Usage: %s [options]\n",prgname);+//  printf( "(" GPM_NAME ") " GPM_RELEASE ", " GPM_DATE "\n"+//          "Usage: %s [options]\n",prgname);   printf("  Valid options are\n"          "    -C <number>   choose virtual console (beware of it)\n"          "    -d <number>   choose the default mask\n"@@ -334,8 +334,9 @@ void  do_snapshot() {-  Gpm_Event event;-  int i=Gpm_GetSnapshot(&event);+  Gpm_EventExt event;+  int rsize=sizeof(Gpm_EventExt);+  int i=Gpm_GetSnapshotExt(&event);   char *s;    if (-1 == i) {@@ -479,8 +480,9 @@       } /*if*/     } /*if*/     if (FD_ISSET(gpm_fd, &readset)) {-      Gpm_Event evt;-      if (Gpm_GetEvent(&evt) > 0) {+      Gpm_EventExt evt;+      if (Gpm_GetEventExt(&evt) > 0) {+/*      if (Gpm_GetEvent(&evt) > 0) { */         my_handler(&evt, 0);       } else {         fprintf(stderr, "Oops, Gpm_GetEvent()\n");diff -u -r gpm-1.19.3/mice.c gpm-1.19.3.wheel/mice.c--- gpm-1.19.3/mice.c	Wed Mar  8 01:10:00 2000+++ gpm-1.19.3.wheel/mice.c	Wed Nov 22 21:51:35 2000@@ -25,7 +25,7 @@  * This file is part of the mouse server. The information herein  * is kept aside from the rest of the server to ease fixing mouse-type  * issues. Each mouse type is expected to fill the `buttons', `dx' and `dy'- * fields of the Gpm_Event structure and nothing more.+ * fields of the Gpm_EventExt structure and nothing more.  *  * Absolute-pointing devices (support by Marc Meis), are expecting to  * fit `x' and `y' as well. Unfortunately, to do it the window size must@@ -208,7 +208,7 @@  * The return value is the number of unprocessed bytes  */ -static int M_ms(Gpm_Event *state,  unsigned char *data)+static int M_ms(Gpm_EventExt *state,  unsigned char *data) {   /*    * some devices report a change of middle-button state by@@ -223,17 +223,21 @@   prev = state->buttons;   state->dx=      (signed char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));   state->dy=      (signed char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));+  state->dw=      0;+  state->dw2=     0;    return 0; } -static int M_ms_plus(Gpm_Event *state, unsigned char *data)+static int M_ms_plus(Gpm_EventExt *state, unsigned char *data) {   static unsigned char prev=0;    state->buttons= ((data[0] & 0x20) >> 3) | ((data[0] & 0x10) >> 4);   state->dx=      (signed char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));   state->dy=      (signed char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));+  state->dw=      0;+  state->dw2=     0;    /* Allow motion *and* button change (Michael Plass) */ @@ -248,7 +252,7 @@   return 0; } -static int M_ms_plus_lr(Gpm_Event *state,  unsigned char *data)+static int M_ms_plus_lr(Gpm_EventExt *state,  unsigned char *data) {   /*    * Same as M_ms_plus but with an addition by Edmund GRIMLEY EVANS@@ -258,6 +262,8 @@   state->buttons= ((data[0] & 0x20) >> 3) | ((data[0] & 0x10) >> 4);   state->dx=      (signed char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));   state->dy=      (signed char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));+  state->dw=      0;+  state->dw2=     0;    /* Allow motion *and* button change (Michael Plass) */ @@ -285,7 +291,7 @@ int SUMMA_BORDER=100; int summamaxx,summamaxy; char summaid=-1;-static int M_summa(Gpm_Event *state, unsigned char *data)+static int M_summa(Gpm_EventExt *state, unsigned char *data) {   int x, y; @@ -307,7 +313,7 @@   /* Thu Jan 28 20:54:47 MET 1999 hof@hof-berlin.de SummaSketch reportformat */-static int R_summa(Gpm_Event *state, int fd)+static int R_summa(Gpm_EventExt *state, int fd) {   signed char buffer[5];   static int x,y;@@ -335,7 +341,7 @@   /* 'Genitizer' (kw@dtek.chalmers.se 11/12/97) */-static int M_geni(Gpm_Event *state,  unsigned char *data)+static int M_geni(Gpm_EventExt *state,  unsigned char *data) {   /* this is a little confusing. If we use the stylus, we    * have three buttons (tip, lower, upper), and if@@ -352,25 +358,48 @@    state->dx = ((data[1] & 0x3f) ) * ((data[0] & 0x10)?1:-1);      state->dy = ((data[2] & 0x3f) ) * ((data[0] & 0x8)?-1:1);+  state->dw=      0;+  state->dw2=     0;    return 0; }  /* m$ 'Intellimouse' (steveb 20/7/97) */-static int M_ms3(Gpm_Event *state,  unsigned char *data)+static int M_ms3(Gpm_EventExt *state,  unsigned char *data) {   state->buttons= ((data[0] & 0x20) >> 3)	/* left */ 		| ((data[3] & 0x10) >> 3)	/* middle */ 		| ((data[0] & 0x10) >> 4);	/* right */   state->dx=      (signed char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));   state->dy=      (signed char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));-  /* wheel (dz??) is (data[3] & 0x0f) */+  state->dw=      data[3] & 0x0f;+  if (data[3] & 0x08)  state->dw -= 16;+  state->dw2=     0;++  return 0;+}++/* A4 tech 4D mouse serial (michg@alphalink.com.au 11/11/00) */+static int M_a4d(Gpm_EventExt *state,  unsigned char *data)+{+  state->buttons= ((data[0] & 0x20) >> 3)	/* left */+		| ((data[3] & 0x10) >> 3)	/* middle */+		| ((data[0] & 0x10) >> 4);	/* right */+  state->dx=      (signed char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));+  state->dy=      (signed char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));+  switch(data[3] & 0x0f)+  { case 0x01: state->dw= 1; state->dw2 =  0; break;+    case 0x02: state->dw= 0; state->dw2 =  1; break;+    case 0x0f: state->dw=-1; state->dw2 =  0; break;+    case 0x0e: state->dw= 0; state->dw2 = -1; break;	+    default:   state->dw= 0; state->dw2 =  0;+  }    return 0; }  /* M_brw is a variant of m$ 'Intellimouse' the middle button is different */-static int M_brw(Gpm_Event *state,  unsigned char *data)+static int M_brw(Gpm_EventExt *state,  unsigned char *data) {   state->buttons= ((data[0] & 0x20) >> 3)	/* left */ 		| ((data[3] & 0x20) >> 4)	/* middle */@@ -385,6 +414,9 @@ 			data[0], data[1], data[2], data[3]); 	  return -1;   }+  state->dw=      data[3] & 0x0f;+  if (data[3] & 0x08) state->dw -= 16;+  state->dw2=     0;   /* wheel (dz) is (data[3] & 0x0f) */   /* where is the side button? I can sort of detect it at 9600 baud */   /* Note this mouse is very noisy */@@ -392,35 +424,41 @@   return 0; } -static int M_bare(Gpm_Event *state,  unsigned char *data)+static int M_bare(Gpm_EventExt *state,  unsigned char *data) {   /* a bare ms protocol */   state->buttons= ((data[0] & 0x20) >> 3) | ((data[0] & 0x10) >> 4);   state->dx=      (signed char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));   state->dy=      (signed char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));+  state->dw=      0;+  state->dw2=     0;   return 0; } -static int M_sun(Gpm_Event *state,  unsigned char *data)+static int M_sun(Gpm_EventExt *state,  unsigned char *data) {   state->buttons= (~data[0]) & 0x07;   state->dx=      (signed char)(data[1]);   state->dy=     -(signed char)(data[2]);+  state->dw=      0;+  state->dw2=     0;   return 0; } -static int M_msc(Gpm_Event *state,  unsigned char *data)+static int M_msc(Gpm_EventExt *state,  unsigned char *data) {   state->buttons= (~data[0]) & 0x07;   state->dx=      (signed char)(data[1]) + (signed char)(data[3]);   state->dy=     -((signed char)(data[2]) + (signed char)(data[4]));+  state->dw=      0;+  state->dw2=     0;   return 0; }  /* itz Mon Jan 11 23:51:38 PST 1999 this code moved here from gpm.c */ /* (processMouse) */ -static int R_msc(Gpm_Event *state, int fd)+static int R_msc(Gpm_EventExt *state, int fd) {   signed char buffer[5]; @@ -432,39 +470,121 @@  } -static int M_logimsc(Gpm_Event *state,  unsigned char *data) /* same as msc */+static int M_logimsc(Gpm_EventExt *state,  unsigned char *data) /* same as msc */ {   state->buttons= (~data[0]) & 0x07;   state->dx=      (signed char)(data[1]) + (signed char)(data[3]);   state->dy=     -((signed char)(data[2]) + (signed char)(data[4]));+  state->dw=     0;+  state->dw2=     0;   return 0; } -static int M_mm(Gpm_Event *state,  unsigned char *data)+static int M_mm(Gpm_EventExt *state,  unsigned char *data) {   state->buttons= data[0] & 0x07;   state->dx=      (data[0] & 0x10) ?   data[1] : - data[1];   state->dy=      (data[0] & 0x08) ? - data[2] :   data[2];+  state->dw=     0;+  state->dw2=     0;   return 0; } -static int M_logi(Gpm_Event *state,  unsigned char *data) /* equal to mm */+static int M_logi(Gpm_EventExt *state,  unsigned char *data) /* equal to mm */ {   state->buttons= data[0] & 0x07;   state->dx=      (data[0] & 0x10) ?   data[1] : - data[1];   state->dy=      (data[0] & 0x08) ? - data[2] :   data[2];+  state->dw=     0;+  state->dw2=     0;   return 0; } -static int M_bm(Gpm_Event *state,  unsigned char *data) /* equal to sun */+static int M_bm(Gpm_EventExt *state,  unsigned char *data) /* equal to sun */ {   state->buttons= (~data[0]) & 0x07;   state->dx=      (signed char)data[1];   state->dy=     -(signed char)data[2];+  state->dw=     0;+  state->dw2=     0;+  return 0;+}++static int M_ps2(Gpm_EventExt *state,  unsigned char *data)+{+  static int tap_active=0; /* there exist glidepoint ps2 mice */++  state->buttons=+    !!(data[0]&1) * GPM_B_LEFT ++    !!(data[0]&2) * GPM_B_RIGHT ++    !!(data[0]&4) * GPM_B_MIDDLE;++  if (data[0]==0 && opt_glidepoint_tap) /* by default this is false */+    state->buttons = tap_active = opt_glidepoint_tap;+  else if (tap_active)+    if (data[0]==8)+      state->buttons = tap_active = 0;+    else state->buttons = tap_active;++ /* Some PS/2 mice send reports with negative bit set in data[0]+  * and zero for movement.  I think this is a bug in the mouse, but+  * working around it only causes artifacts when the actual report is -256;+  * they'll be treated as zero. This should be rare if the mouse sampling+  * rate is set to a reasonable value; the default of 100 Hz is plenty.+  * (Stephen Tell)+  */+  if(data[1] != 0)+    state->dx=   (data[0] & 0x10) ? data[1]-256 : data[1];+  else+    state->dx = 0;+  if(data[2] != 0)+    state->dy= -((data[0] & 0x20) ? data[2]-256 : data[2]);+  else+    state->dy = 0;+  state->dw=      0;+  state->dw2=     0;+  return 0;+}++static int M_imps2(Gpm_EventExt *state,  unsigned char *data)+{+  static int tap_active=0; /* there exist glidepoint ps2 mice */++  state->buttons=+    !!(data[0]&1) * GPM_B_LEFT ++    !!(data[0]&2) * GPM_B_RIGHT ++    !!(data[0]&4) * GPM_B_MIDDLE;++  if (data[0]==0 && opt_glidepoint_tap) /* by default this is false */+    state->buttons = tap_active = opt_glidepoint_tap;+  else if (tap_active)+    if (data[0]==8)+      state->buttons = tap_active = 0;+    else state->buttons = tap_active;++ /* Some PS/2 mice send reports with negative bit set in data[0]+  * and zero for movement.  I think this is a bug in the mouse, but+  * working around it only causes artifacts when the actual report is -256;+  * they'll be treated as zero. This should be rare if the mouse sampling+  * rate is set to a reasonable value; the default of 100 Hz is plenty.+  * (Stephen Tell)+  */+  if(data[1] != 0)+    state->dx=   (data[0] & 0x10) ? data[1]-256 : data[1];+  else+    state->dx = 0;+  if(data[2] != 0)+    state->dy= -((data[0] & 0x20) ? data[2]-256 : data[2]);+  else+    state->dy = 0;+  state->dw = (data[3] >= 128) ? data[3]-256 : data[3]; +  state->dw2=     0;+   return 0; } 

⌨️ 快捷键说明

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