Environnement
Problème
J'ai créé un nouveau VirtualBox vm et installé Precise à partir de l'ISO de bureau standard. Dans le cadre de l'installation, j'ai sélectionné la carte-clé "English UK (Mac International)". Toutes les touches semblent émettre le caractère correct, cependant, pour certaines touches un caractère ne sera pas enregistré tant que je n'aurai pas appuyé deux fois sur la touche .
Par exemple, la première fois que j'appuie sur la touche `aucun caractère n'apparaît à l'invite du terminal. Cependant, la deuxième fois fonctionne.
Cela se produit également pour certaines autres touches et combinaisons de décalage - c'est-à-dire que ~ (shift + `) est également affecté.
Plus d'informations
sortie xev
Première pression sur une touche:
KeyPress event, serial 30, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3935772, (317,33), root:(320,141),
state 0x0, keycode 94 (keysym 0xfe50, dead_Grave), same_screen YES,
XLookupString gives 1 bytes: (60) "`"
XmbLookupString gives 0 bytes:
XFilterEvent returns: True
KeyRelease event, serial 33, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3935884, (317,33), root:(320,141),
state 0x0, keycode 94 (keysym 0xfe50, dead_Grave), same_screen YES,
XLookupString gives 1 bytes: (60) "`"
XFilterEvent returns: False
Seconde touche:
KeyPress event, serial 33, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3939630, (317,33), root:(320,141),
state 0x0, keycode 94 (keysym 0xfe50, dead_Grave), same_screen YES,
XLookupString gives 1 bytes: (60) "`"
XmbLookupString gives 0 bytes:
XFilterEvent returns: True
KeyPress event, serial 33, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3939630, (317,33), root:(320,141),
state 0x0, keycode 0 (keysym 0x60, Grave), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 1 bytes: (60) "`"
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3939777, (317,33), root:(320,141),
state 0x0, keycode 94 (keysym 0xfe50, dead_Grave), same_screen YES,
XLookupString gives 1 bytes: (60) "`"
XFilterEvent returns: False
Troisième touche:
KeyPress event, serial 33, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3956078, (317,33), root:(320,141),
state 0x0, keycode 94 (keysym 0xfe50, dead_Grave), same_screen YES,
XLookupString gives 1 bytes: (60) "`"
XmbLookupString gives 0 bytes:
XFilterEvent returns: True
KeyRelease event, serial 33, synthetic NO, window 0x4a00001,
root 0x138, subw 0x0, time 3956214, (317,33), root:(320,141),
state 0x0, keycode 94 (keysym 0xfe50, dead_Grave), same_screen YES,
XLookupString gives 1 bytes: (60) "`"
XFilterEvent returns: False
L'appui supplémentaire sur la touche "Grave" ne semble être émis qu'à chaque autre appui physique sur une touche.
Il semble que la carte du clavier soit incorrecte pour ces touches. La solution la plus simple consiste à apporter les corrections suivantes via xmodmap:
$ xmodmap -e 'keycode 94 = Grave asciitilde'
$ xmodmap -e 'keycode 48 = apostrophe quotedbl'
Pour que ces modifications soient appliquées lors de la connexion, vous pouvez créer un fichier appelé .Xmodmap
dans votre répertoire personnel avec le contenu suivant:
keycode 94 = Grave asciitilde
keycode 48 = apostrophe quotedbl
Juste un addendum à la réponse de Johnstok. Ajouter
keycode 94 = Grave asciitilde
keycode 48 = apostrophe quotedbl
déposer .Xmodmap dans le répertoire home et exécuter
xmodmap .Xmodmap
Pour moi, cela a fait l'affaire, mais cela revenait à l'ancienne à chaque redémarrage. Je devais mettre xmodmap .Xmodmap
dans mon fichier .bashrc pour le faire coller.