Fixes #323724
2006-04-10 Marien Zwart <marienz@gentoo.org> Fixes #323724 * gnome-settings-mouse.c (configure_button_layout): fixed button mapping with evdev/left handed.
This commit is contained in:
parent
b062d0c301
commit
5f2d2e2b75
2 changed files with 48 additions and 8 deletions
|
@ -1,3 +1,10 @@
|
|||
2006-04-10 Marien Zwart <marienz@gentoo.org>
|
||||
|
||||
Fixes #323724
|
||||
|
||||
* gnome-settings-mouse.c (configure_button_layout): fixed button
|
||||
mapping with evdev/left handed.
|
||||
|
||||
2006-03-29 Arjan Timmerman <arjani@soulfly.nl>
|
||||
|
||||
Fixes #334153
|
||||
|
|
|
@ -33,24 +33,57 @@ configure_button_layout (guchar *buttons,
|
|||
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);
|
||||
right_button = MIN (n_buttons, 3);
|
||||
|
||||
if (left_handed)
|
||||
/* 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)
|
||||
{
|
||||
buttons[left_button] = right_button + 1;
|
||||
buttons[right_button] = left_button + 1;
|
||||
/* 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;
|
||||
}
|
||||
else
|
||||
/* check if we are not left_handed but are swapped */
|
||||
else if (!left_handed && buttons[left_button - 1] == right_button)
|
||||
{
|
||||
buttons[left_button] = left_button + 1;
|
||||
buttons[right_button] = right_button + 1;
|
||||
/* 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue