SOURCES: control-center-evdev.patch (NEW) patch from GNOME Bugzilla

wiget wiget at pld-linux.org
Mon Apr 10 00:30:44 CEST 2006


Author: wiget                        Date: Sun Apr  9 22:30:44 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
patch from GNOME Bugzilla

---- Files affected:
SOURCES:
   control-center-evdev.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/control-center-evdev.patch
diff -u /dev/null SOURCES/control-center-evdev.patch:1.1
--- /dev/null	Mon Apr 10 00:30:44 2006
+++ SOURCES/control-center-evdev.patch	Mon Apr 10 00:30:39 2006
@@ -0,0 +1,74 @@
+=== modified file 'gnome-settings-daemon/gnome-settings-mouse.c'
+--- gnome-settings-daemon/gnome-settings-mouse.c	
++++ gnome-settings-daemon/gnome-settings-mouse.c	
+@@ -33,24 +33,57 @@
+                          gint      n_buttons,
+                          gboolean  left_handed)
+ {
+-  const gint left_button = 0;
++  const gint left_button = 1;
+   gint right_button;
++  gint i;
+ 
+   /* if the button is higher than 2 (3rd button) then it's
+    * probably one direction of a scroll wheel or something else
+    * uninteresting
+    */
+-  right_button = MIN (n_buttons - 1, 2);
+-
+-  if (left_handed)
+-    {
+-      buttons[left_button] = right_button + 1;
+-      buttons[right_button] = left_button + 1;
+-    }
+-  else
+-    {
+-      buttons[left_button] = left_button + 1;
+-      buttons[right_button] = right_button + 1;
++  right_button = MIN (n_buttons, 3);
++
++  /* If we change things we need to make sure we only swap buttons.
++   * If we end up with multiple physical buttons assigned to the same
++   * logical button the server will complain. This code assumes physical
++   * button 0 is the physical left mouse button, and that the physical
++   * button other than 0 currently assigned left_button or right_button
++   * is the physical right mouse button.
++   */
++
++  /* check if the current mapping satisfies the above assumptions */
++  if (buttons[left_button - 1] != left_button && 
++      buttons[left_button - 1] != right_button)
++      /* The current mapping is weird. Swapping buttons is probably not a
++       * good idea.
++       */
++      return;
++
++  /* check if we are left_handed and currently not swapped */
++  if (left_handed && buttons[left_button - 1] == left_button)
++    {
++      /* find the right button */
++      for (i = 0; i < n_buttons; i++)
++        {
++          if (buttons[i] == right_button)
++              break;
++      }
++      /* swap the buttons */
++      buttons[left_button - 1] = right_button;
++      buttons[i] = left_button;
++    }
++  /* check if we are not left_handed but are swapped */
++  else if (!left_handed && buttons[left_button - 1] == right_button)
++    {
++      /* find the right button */
++      for (i = 0; i < n_buttons; i++)
++        {
++          if (buttons[i] == left_button)
++              break;
++      }
++      /* swap the buttons */
++      buttons[i] = right_button;
++      buttons[left_button - 1] = left_button;
+   }
+ }
+ 
+
================================================================


More information about the pld-cvs-commit mailing list