www.nico.schottelius.org/software/gpm/browse_source/gpm-1.20.3pre4/patches/todo/msuite.patch
Nico Schottelius 95a46c5577 import gpm from unix.schottelius.org
Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
2009-10-08 22:52:35 +02:00

80 lines
2.9 KiB
Diff

--- gpm-1.18.1/gpm.h Fri Nov 12 15:27:37 1999
+++ gpm-1.18.2/gpm.h Wed Jan 5 09:45:52 2000
@@ -72,6 +72,13 @@
/*....................................... Cfg buttons */
+/* i think there are possible mouses with more, than 3 advanced buttons ? */
+#define GPM_B_ADVANCED5 128
+#define GPM_B_ADVANCED4 64
+
+#define GPM_B_ADVANCED3 32
+#define GPM_B_ADVANCED2 16
+#define GPM_B_ADVANCED1 8
#define GPM_B_LEFT 4
#define GPM_B_MIDDLE 2
#define GPM_B_RIGHT 1
--- gpm-1.18.1/gpm-root.y Fri Nov 12 15:27:37 1999
+++ gpm-1.18.2/gpm-root.y Wed Jan 5 09:45:52 2000
@@ -214,6 +214,11 @@
button: T_BUTTON '1' {$$=GPM_B_LEFT;}
| T_BUTTON '2' {$$=GPM_B_MIDDLE;}
| T_BUTTON '3' {$$=GPM_B_RIGHT;}
+ | T_BUTTON '4' {$$=GPM_B_ADVANCED1;}
+ | T_BUTTON '5' {$$=GPM_B_ADVANCED2;}
+ | T_BUTTON '6' {$$=GPM_B_ADVANCED3;}
+ | T_BUTTON '7' {$$=GPM_B_ADVANCED4;}
+ | T_BUTTON '8' {$$=GPM_B_ADVANCED5;}
;
menu: '{' {$<draw>$=cfgcurrent=cfg_alloc();}
--- gpm-1.18.1/gpm.c Fri Nov 12 15:27:36 1999
+++ gpm-1.18.2/gpm.c Wed Jan 5 09:50:40 2000
@@ -411,7 +411,8 @@
event->modifiers = nEvent.modifiers; /* propagate modifiers */
/* propagate buttons */
- nEvent.buttons = opt_sequence[nEvent.buttons]&7; /* change the order */
+ nEvent.buttons = (nEvent.buttons & 0xf8) | /* 1111 1000 (mask for normal buttons) */
+ opt_sequence[nEvent.buttons]&7; /* change the order */
oldB=newB; newB=nEvent.buttons;
if (!i) event->buttons=nEvent.buttons;
--- gpm-1.18.1/mice.c Fri Nov 12 15:27:37 1999
+++ gpm-1.18.2/mice.c Wed Jan 5 09:46:24 2000
@@ -74,6 +74,25 @@
* The return value is the number of unprocessed bytes
*/
+/*
+ * M_msuite function was written by Vadim V. Osikov aka Osa
+ * (osa@re.com.ua, http://re.com.ua/~osa)
+ */
+
+static int M_msuite(Gpm_Event *state, unsigned char *data) {
+ if ( data [1] == GPM_EXTRA_MAGIC_1 && data [2] == GPM_EXTRA_MAGIC_2 ) {
+ // advanced side buttons are D5 (lower) - D3 (higher)
+ state -> buttons |= ( ( data [0] & 7) << 3 ) ;
+ } else {
+ state -> buttons = ((data[0] & 0x20) >> 3) /* left */
+ | ((data[0] & 0x10) >> 4); /* right */
+ state -> dx = (char)(((data[0] & 0x03) << 6) | (data[1] & 0x3F));
+ state -> dy = (char)(((data[0] & 0x0C) << 4) | (data[2] & 0x3F));
+ // state -> dz = (signed char)((data [3] & 0xf) << 4) >> 4 ;
+ }
+ return 0 ;
+}
+
static int M_ms(Gpm_Event *state, unsigned char *data)
{
/*
@@ -1436,6 +1455,9 @@
*/
Gpm_Type mice[]={
+ {"msuite", "The MouseSuite 98 (side buttons and wheel) protocol.",
+ "", M_msuite, I_serial, CS7 | STD_FLG,
+ {0x40, 0x40, 0x40, 0x00}, 4, 1, 1, 0},
{"mman", "The \"MouseMan\" and similar devices (3/4 bytes per packet).",
"Mouseman", M_mman, I_serial, CS7 | STD_FLG, /* first */
{0x40, 0x40, 0x40, 0x00}, 3, 1, 1, 0, 0},