> Matteo Bigoi - Bigo! wrote:
> > I've rewritten this patch for 2.6!
> 
> Hello Bigo!
> 
> Great, but it does not work for me :-(
> 
> I have seen that you also added the option ADB_TRACKPAD_ABSOLUTE, so I
> assume that you have an ADB trackpad. My iBook G4 (PowerBook6,7) has a USB
> trackpad and this may be the cause why it does not work for me.
> 

I've seen that this patch works together with the one written by Loca
Bigliard1 for the adb touchpad [1]... I'm not an expert about C and
kernel but I think I've the solution ;-)
Try the patch attached in a vanilla kernel..
The documentation is in the help during a make menuconfig!

> However, I also tried with an external USB mouse, this also had no effect.
> 
> cu, Magnum
> 
[1] http://www.artha.org/shammash/ppc/adb_syn/ 

Ciao

                Bigo!

-- 
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'

------------------------------------------------------
           Registered Linux User # 365044
      http://dust.homelinux.org/~bigo/index.html
    Please don't send me any Micro$oft attachments!
------------------------------------------------------
                    
--- linux-2.6.16.11.ORIG/drivers/input/input.c  2006-04-24 22:20:24.000000000 
+0200
+++ linux-2.6.16.11/drivers/input/input.c       2006-04-26 10:41:49.000000000 
+0200
@@ -47,6 +47,10 @@ static LIST_HEAD(input_handler_list);
 
 static struct input_handler *input_table[8];
 
+#ifdef CONFIG_MAC_EMUMOUSEBTN
+extern int mac_hid_mouse_emulate_buttons(int,int,int);
+#endif
+
 void input_event(struct input_dev *dev, unsigned int type, unsigned int code, 
int value)
 {
        struct input_handle *handle;
@@ -72,6 +76,12 @@ void input_event(struct input_dev *dev, 
                        break;
 
                case EV_KEY:
+#ifdef CONFIG_MAC_EMUMOUSEBTN
+                       if (mac_hid_mouse_emulate_buttons(2, code, value))
+                               code = BTN_RIGHT;
+                       if (mac_hid_mouse_emulate_buttons(3, code, value))
+                               code = BTN_MIDDLE;
+#endif
 
                        if (code > KEY_MAX || !test_bit(code, dev->keybit) || 
!!test_bit(code, dev->key) == value)
                                return;
--- linux-2.6.16.11.ORIG/drivers/macintosh/mac_hid.c    2006-04-24 
22:20:24.000000000 +0200
+++ linux-2.6.16.11/drivers/macintosh/mac_hid.c 2006-04-26 10:41:49.000000000 
+0200
@@ -21,7 +21,11 @@ static int emumousebtn_input_register(vo
 static int mouse_emulate_buttons = 0;
 static int mouse_button2_keycode = KEY_RIGHTCTRL;      /* right control key */
 static int mouse_button3_keycode = KEY_RIGHTALT;       /* right option key */
+static int rclick_key_modifier  = 0;                   /* disabled */
+static int cclick_key_modifier  = 0;                   /* disabled */
 static int mouse_last_keycode = 0;
+static int rclick_key_modifier_down = 0;
+static int cclick_key_modifier_down = 0;
 
 #if defined(CONFIG_SYSCTL)
 /* file(s) in /proc/sys/dev/mac_hid */
@@ -50,6 +54,22 @@ ctl_table mac_hid_files[] = {
                .mode           = 0644,
                .proc_handler   = &proc_dointvec,
        },
+       {
+               .ctl_name       = DEV_MAC_HID_RCLICK_KEY_MODIFIER,
+               .procname       = "rclick_key_modifier",
+               .data           = &rclick_key_modifier,
+               .maxlen         = sizeof(int),
+                .mode           = 0644,
+               .proc_handler   = &proc_dointvec,
+       },
+       {
+               .ctl_name       = DEV_MAC_HID_CCLICK_KEY_MODIFIER,
+               .procname       = "cclick_key_modifier",
+               .data           = &cclick_key_modifier,
+               .maxlen         = sizeof(int),
+                .mode           = 0644,
+               .proc_handler   = &proc_dointvec,
+       },
        { .ctl_name = 0 }
 };
 
@@ -98,6 +118,26 @@ int mac_hid_mouse_emulate_buttons(int ca
                        }
                        mouse_last_keycode = down ? keycode : 0;
                }
+               if (rclick_key_modifier 
+                   && keycode == rclick_key_modifier)
+                       rclick_key_modifier_down = down;
+
+               break;
+       case 2:
+               /* Called from input.c */
+               if (keycode == BTN_LEFT && rclick_key_modifier && 
rclick_key_modifier_down)
+                       return 1;
+
+               if (cclick_key_modifier 
+                   && keycode == cclick_key_modifier)
+                       cclick_key_modifier_down = down;
+
+               break;
+       case 3:
+               /* Called from input.c */
+               if (keycode == BTN_LEFT && cclick_key_modifier && 
cclick_key_modifier_down)
+                       return 1;
+
                break;
        }
        return 0;
--- linux-2.6.16.11.ORIG/include/linux/sysctl.h 2006-04-24 22:20:24.000000000 
+0200
+++ linux-2.6.16.11/include/linux/sysctl.h      2006-04-26 10:41:49.000000000 
+0200
@@ -843,7 +843,11 @@ enum {
        DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3,
        DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4,
        DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5,
-       DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6
+       DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6,
+       DEV_MAC_HID_RCLICK_KEY_MODIFIER=7,
+       DEV_MAC_HID_CCLICK_KEY_MODIFIER=8
+
+
 };
 
 /* /proc/sys/dev/scsi */
--- linux-2.6.16.11.ORIG/drivers/macintosh/Kconfig      2006-04-24 
22:20:24.000000000 +0200
+++ linux-2.6.16.11/drivers/macintosh/Kconfig   2006-04-26 10:43:51.000000000 
+0200
@@ -144,7 +144,17 @@ config MAC_EMUMOUSEBTN
          /proc/sys/dev/mac_hid/mouse_button_emulation
          /proc/sys/dev/mac_hid/mouse_button2_keycode
          /proc/sys/dev/mac_hid/mouse_button3_keycode
-
+         /proc/sys/dev/mac_hid/rclick_key_modifier
+         /proc/sys/dev/mac_hid/cclick_key_modifier
+                        
+         rclick_key_modifier allows the kernel to handle "Key+LClick" as a 
+         right-click. It's disabled by default. Echo a keycode to it to 
+         enable it.
+
+         cclick_key_modifier allows the kernel to handle "Key+LClick" as a
+         middle-click. It's disabled by default. Echo a keycode to it to
+         enable it.
+         
          If you have an Apple machine with a 1-button mouse, say Y here.
 
 config THERM_WINDTUNNEL

Attachment: signature.asc
Description: Digital signature

Reply via email to