[FoLUG] Invertire i tasti per i mancini

Demis Palma demis@extreme.ra.it
Gio 8 Gen 2004 19:32:59 CET


Faccio seguito alla mia domanda di qualche tempo fa, che pero' rimase
senza risposta, nella speranza che potrebbe servire a qualcun altro.

Prologo
Il problema era riscontrato sul mio notebook con Touchpad incorporato, e
mouse esterno Logitech USB.
A seguito di malattia professionale che mi ha sbriciolato i tendini
della mano destra, ho dovuto utilizzare il mouse con la sinistra.
Ti ci abitui in 3 giorni. L'unica cosa a cui non ti riesci ad abituare,
e' la disposizione dei tasti, poiche' il tuo cervello non pensa a tasto
destro o sinistro, pensa a dito indice e medio.
In queste condizioni, se non inverti i tasti del mouse si lavora male.

Epilogo
Tutte le utility grafiche gnome, kde, altre per invertire i tasti,
fallivano.
xmodmap -pp
dava questo output

There are 3 pointer buttons defined.

    Physical        Button
     Button          Code
        1              1
        2              2
        3              3

xmodmap -e pointer "pointer = 3 2 1"
sembrava funzionare, in quanto l'output di 
xmodmap -pp
diventava:
    Physical        Button
     Button          Code
        1              3
        2              2
        3              1
Tuttavia, non cambiava niente. Fisicamente i tasti rimanevano quelli.
Almeno sul Logitech esterno, ma i tasti del Touchpad venivano effettivamente invertiti.
Come al solito, uno si concentra sugli obiettivi tralasciando di osservere i dettagli che invece
sono determinanti per una completa comprensione.

Solo oggi, a scoppio (estrememente) ritardato, a seguito di una situazione astrale favorevole,
in congiunzione con un picco sui miei bioritmi, e complice un momento fortunato del mio segno zodiacale,
ho avuto una folgorazione, e ho realizzato cio' che gia' sapevo: il touchpad viene invertito.

Quindi mi sono messo a rovistare in /etc/X11/XF86Config, e ho trovato questo:
(Riporto solo le righe sostanziali:

# SaX generated XFree86 config file
# Version: 4.7
# Contact: Marcus Schaefer <sax@suse.de>, 2002
# PLEASE DO NOT EDIT THIS FILE!
#
# Non dire balle Marcus! Come vedi l'ho sempre modificato e la situazione non puo' che migliorare.
#

  Driver       "mouse"
  Identifier   "Touchpad"
  Option       "CorePointer"

  Driver       "mouse"
  Identifier   "Logitech USB"
  Option       "SendCoreEvents"  "true"

Section "ServerLayout"
  InputDevice  "Touchpad" "CorePointer"
  InputDevice  "Logitech USB" "SendCoreEvents"

Purtroppo non comprendo appieno cosa significa tutto cio', cosi' la
classica soluzione da scimmia (che notoriamente SEMBRA intelligente
perche' arriva alla soluzione, ma in realta' ci arriva perche' prova
TUTTE le possibili soluzioni) mi suggerirebbe di classificare il mouse
esterno come "Primario", e il TouchPad come "Secondario" (la mia scarsa
comprensione del problema mi porta a consederarli in questi termini),
cosi' lo modifico in questo modo:


  Identifier   "Touchpad"
  Option       "SendCoreEvents"  "true"

  Identifier   "Logitech USB"
  Option       "CorePointer"

Section "ServerLayout"
  InputDevice  "Touchpad" "CorePointer"
  InputDevice  "Logitech USB" "SendCoreEvents"

A questo punto e' evidente che qualcosa si e' smosso, infatti
xmodmap -pp
mostra 

There are 5 pointer buttons defined.

    Physical        Button
     Button          Code
        1              1
        2              2
        3              3
        4              4
        5              5

quindi faccio
xmodmap -e pointer "pointer = 3 2 1 4 5"
quindi ottengo questa configurazione

There are 5 pointer buttons defined.

    Physical        Button
     Button          Code
        1              3
        2              2
        3              1
        4              4
        5              5


Conclusioni
Adesso il Logitech esterno ha i tasti destro e sinistro invertiti, obiettivo pienamente ragiunto.
Risultato non cercato ma gradito: I tasti del touchpad NON vengono invertiti.
In pratica mi sembra di capire che il problema era legato al fatto che ho 2 mouse nel sistema.

Per abilitare il tutto ad ogni riavvio del sistema, rimando all'abbondante documentazione che si trova
a riguardo.

PS: Qualcuno sa spiegarmi meglio cosa significano quelle righe che ho modificato in XF86Config?
PS/2: Data la pesante scarsita' di documentazione (almeno in italiano) in merito, potrebbe essere
il caso di riordinare le idee, completandole con le grosse falle che ho lascito, e fare una specie di howto?







Maggiori informazioni sulla lista FoLUG