Skip to contentSkip to conversation

PS2 Input Core Support

DISCUSSION Petr Vandrovec 3 participants 4 messages Jul 17, 2002

lore
Share & tools
lore
#0 lore raw
Quoted 11 lines · Vojtech Pavlik

drivers/input/mouse/psmouse.c Wed Jul 17 12:19:13 2002 line 148

Quoted 11 lines
drivers/input/mouse/psmouse.c Wed Jul 17 12:19:13 2002 +1 -1
@@ -142,7 +142,7 @@
  */
 
        if (psmouse->type == PSMOUSE_IMEX) {
-               input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[2] & 7));
+               input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[3] & 7));
                input_report_key(dev, BTN_SIDE, (packet[3] >> 4) & 1);
                input_report_key(dev, BTN_EXTRA, (packet[3] >> 5) & 1);
        }

Hi,
any plans to support A4Tech mouse? It uses IMEX protocol, but

switch(packet[3] & 0x0F) {
    case 0: /* nothing */
    case 1: vertical_wheel--; break;
    case 2: horizontal_wheel++; break;
    case 0xE: horizontal_wheel--; break;
    case 0xF: vertical_wheel++; break;
}

and obviously it never reports wheel move > 1 in one sample.
Thanks,
Petr Vandrovec [email protected]

#1 lore raw
Quoted 25 lines · Petr Vandrovec
Quoted 11 lines · Vojtech Pavlik

drivers/input/mouse/psmouse.c Wed Jul 17 12:19:13 2002 line 148

Quoted 11 lines
drivers/input/mouse/psmouse.c Wed Jul 17 12:19:13 2002 +1 -1
@@ -142,7 +142,7 @@
  */
 
        if (psmouse->type == PSMOUSE_IMEX) {
-               input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[2] & 7));
+               input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[3] & 7));
                input_report_key(dev, BTN_SIDE, (packet[3] >> 4) & 1);
                input_report_key(dev, BTN_EXTRA, (packet[3] >> 5) & 1);
        }

Hi,
any plans to support A4Tech mouse? It uses IMEX protocol, but

switch(packet[3] & 0x0F) {
    case 0: /* nothing */
    case 1: vertical_wheel--; break;
    case 2: horizontal_wheel++; break;
    case 0xE: horizontal_wheel--; break;
    case 0xF: vertical_wheel++; break;
}
Quoted 1 line

and obviously it never reports wheel move > 1 in one sample.

Is there a way to detect whether it's an ImEx or A4? Or will we need a command line parameter ... ?

Signature · 2 lines
Vojtech Pavlik
SuSE Labs
#2 lore raw
Quoted 26 lines · Vojtech Pavlik
Quoted 25 lines · Petr Vandrovec
Quoted 11 lines · Vojtech Pavlik

drivers/input/mouse/psmouse.c Wed Jul 17 12:19:13 2002 line 148

Quoted 11 lines
drivers/input/mouse/psmouse.c Wed Jul 17 12:19:13 2002 +1 -1
@@ -142,7 +142,7 @@
  */
 
        if (psmouse->type == PSMOUSE_IMEX) {
-               input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[2] & 7));
+               input_report_rel(dev, REL_WHEEL, (int) (packet[3] & 8) - (int) (packet[3] & 7));
                input_report_key(dev, BTN_SIDE, (packet[3] >> 4) & 1);
                input_report_key(dev, BTN_EXTRA, (packet[3] >> 5) & 1);
        }

Hi,
any plans to support A4Tech mouse? It uses IMEX protocol, but

switch(packet[3] & 0x0F) {
    case 0: /* nothing */
    case 1: vertical_wheel--; break;
    case 2: horizontal_wheel++; break;
    case 0xE: horizontal_wheel--; break;
    case 0xF: vertical_wheel++; break;
}
Quoted 4 lines
Quoted 1 line

and obviously it never reports wheel move > 1 in one sample.

Is there a way to detect whether it's an ImEx or A4? Or will we need a command line parameter ... ?

from http://home.t-online.de/home/gunther.mayer/gm_psauxprint-0.01.c :

char a4tech_id[]={ 0xf3,200, 0xf3,100, 0xf3,80, 0xf3,60, 0xf3,40, 0xf3,20};

if(a4tech) {

sendbuf(fd,f,a4tech_id,12);
        buf[0]=0xf2;
        write(fd,&buf,1);
        b=consumefa(f);
        printf("a4tech ID(f2) is %x\n",b);

        if(b==6 || b==8) printf("AUTODETECT: a4tech\n");
        // b=6: spiffy gyro-mouse "8D Profi-Mouse Point Stick"
        // b=8: boeder Smartmouse Pro (4Button, 2Scrollwheel, 520dpi) PSM_4DPLUS_ID MOUSE_MODEL_4DPLUS
}
#3 lore raw
Quoted 21 lines · Gunther Mayer
Quoted 11 lines
Quoted 11 lines

Hi,
any plans to support A4Tech mouse? It uses IMEX protocol, but

switch(packet[3] & 0x0F) {
    case 0: /* nothing */
    case 1: vertical_wheel--; break;
    case 2: horizontal_wheel++; break;
    case 0xE: horizontal_wheel--; break;
    case 0xF: vertical_wheel++; break;
}
Quoted 4 lines
Quoted 1 line

and obviously it never reports wheel move > 1 in one sample.

Is there a way to detect whether it's an ImEx or A4? Or will we need a command line parameter ... ?

from http://home.t-online.de/home/gunther.mayer/gm_psauxprint-0.01.c :

char a4tech_id[]={ 0xf3,200, 0xf3,100, 0xf3,80, 0xf3,60, 0xf3,40, 0xf3,20};

if(a4tech) {

Quoted 10 lines
sendbuf(fd,f,a4tech_id,12);
        buf[0]=0xf2;
        write(fd,&buf,1);
        b=consumefa(f);
        printf("a4tech ID(f2) is %x\n",b);

        if(b==6 || b==8) printf("AUTODETECT: a4tech\n");
        // b=6: spiffy gyro-mouse "8D Profi-Mouse Point Stick"
        // b=8: boeder Smartmouse Pro (4Button, 2Scrollwheel, 520dpi) PSM_4DPLUS_ID MOUSE_MODEL_4DPLUS
}

Cool! Anyone send me a patch? ;)

Signature · 2 lines
Vojtech Pavlik
SuSE Labs