web-dev-qa-db-fra.com

Comment puis-je corriger les pressions de touches manquantes lors de l'exécution d'Ubuntu en tant que VM sous OSX?

Environnement

  • OSX 10.7.4
  • Mi-2010 iMac
  • VirtualBox 4.1.18
  • Ubuntu Precise Pangolin (toutes les mises à jour sont appliquées)

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

  • Cela ne semble pas être un problème VM. J'ai installé Precise sous VMware Fusion et le même problème semble se produire.
  • Ce n'est pas lié à la vitesse que je tape. Je peux appuyer sur la touche, attendre quelques secondes, puis appuyer à nouveau et j'obtiens le même comportement.
  • En passant à une autre disposition du clavier (WinKeys étendu au Royaume-Uni), le problème persiste pour le caractère de backtick (vous devez appuyer sur la touche § du clavier). Appuyer sur la touche `émet immédiatement un caractère (). En d'autres termes, le problème semble être lié à des caractères spécifiques, plutôt qu'aux codes matériels émis par des clés particulières.

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.

1
johnstok

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
1
johnstok

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.

0
Jacob Stevenson