web-dev-qa-db-fra.com

Comment puis-je définir un certain code clé sur une clé et le lier à la bonne action?

J'ai un ordinateur portable avec une disposition de clavier suédoise, tout fonctionne bien avec le clavier. En raison de blessures, j'utilise un clavier USB ergonomique externe, c'est là que je rencontre des difficultés.

Le clavier externe n'a pas de touche pour Control_R Ou ALT-GR (Je suppose que c'est ALT_R) Ce qui cause des problèmes parce que taper @, $, Et {} Ou [] Utilisent tous ALT-GR Dans la disposition du clavier suédois.

MISE À JOUR :: Ce n'est pas vrai. Le clavier est livré avec les deux touches de contrôle mais a été foiré en raison d'un remappage personnalisé, lisez comment gérer cela ici . Après une réinitialisation complète, il s'avère que le clavier externe a également Alt-GR (Affiché comme ISO_Level3_Shift Par xev) (bien que les backticks soient difficiles à trouver). :: FIN DE LA MISE À JOUR

Le clavier a une fonction de remappage intégrée ainsi que des fonctions de macro, mais il n'y a aucun moyen de remapper les touches du clavier intégré au clavier externe (pour autant que je sache)

Je voudrais définir une de mes touches sur le clavier externe pour avoir un nouveau code clé (tel que Control_R Ou ALT_R, Puis remapper cela pour agir comme ALT-GR - est-ce La raison pour laquelle je ne souhaite pas que le code clé Control_L soit, si je le remappe, l'autre clé de contrôle sera également remappée.

Avec xev, j'ai vérifié quel code de clé est déclenché en cliquant sur la touche de ALT-GR Sur mon clavier intégré et c'est keycode 108 (keysym 0xfe03, ISO_Level3_Shift). Après quelques recherches, j'ai remarqué que ce n'est pas prévu pour la clé ALT-GR, Mais cette clé fonctionne comme je m'y attendais.

Avec xev, je vérifie également la sortie de la touche du clavier externe que je souhaite utiliser comme ALT-GR: keycode 105 (keysym 0xffe3, Control_L).

J'ai une autre touche sur le clavier externe qui produit exactement la même chose, cette touche est celle que j'utilise pour Control_L, Ce qui rend celle que je souhaite être ALT_GR Redondante.

J'ai joué avec xmodmap pour voir si je peux obtenir ce dont j'ai besoin mais hélas, sans succès. Voici quelques scénarios.

xmodmap -e "keycode 105 = Alt_R" # => Cela désactive les deux touches de contrôle et ne fonctionne pas comme ALT-GR, Pratiquement la clé ne fait rien.

xmodmap -e "keycode 105 = ISO_Level3_Shift" # => Comme ci-dessus

Existe-t-il un moyen de résoudre ces problèmes?


Configuration:

1
miphe

Si vous avez deux clés avec le même scancode, le remappage de ces clés à une autre action remappera les deux clés avec ce scancode. Il n'y a aucun moyen (pour autant que je sache) de différencier deux clés différentes si elles ont le même scancode.

Comme le suggère @falconer, vous pouvez voir si vos deux clés sont en fait différentes ou identiques en vérifiant avec showkey -s dans la console virtuelle. N'oubliez pas comment revenir à X (ALT+F7) pour ne pas rester coincé dans la console virtuelle.

Si vous appuyez sur vos deux touches que vous souhaitez mapper différemment et que ces deux touches vous donnent la même sortie ici, alors vous devez chercher une autre solution.

Le clavier externe dont vous parlez a en fait des touches avec les scancodes mappant aux actions que vous suggérez manquantes (Control_L et Control_R) - Je vous recommande de réinitialiser le clavier à ses paramètres par défaut et de vérifier à nouveau la sortie de vos touches avec xev.

Assurez-vous de commencer avec les bons paramètres du système d'exploitation, sur votre clavier, ils sont:

=+ + w Pour les fenêtres.

=+ + p pour PC (non Windows).

=+ + m pour Mac.

Le configurer avant de commencer le remappage vous permettra de bien démarrer avec tous les scancodes dont vous avez besoin.

En ce qui concerne la Alt-GR problème, ISO_Level3_Shift devrait être la bonne action pour cette clé (pour autant que je sache). Les clés avec cette action déclenchent le comportement de Alt-GR correctement.

De plus, lors de la falsification de scancodes et d'actions, il peut être agréable d'avoir une sorte de logiciel comme KeyMon qui vous dira sur quelle touche ou combinaison de touches vous appuyez.

1
miphe

Passer à une console virtuelle (CTRL+ALT+F1) et courir

showkey -s

Cela imprimera les scancodes des touches, il suffit donc d'appuyer sur ceux de gauche et de droite CTRL clés et voir si elles ont les mêmes scancodes. Après avoir vérifié cela, attendez 10 secondes et n'appuyez sur aucune touche, pour que le programme showkey puisse revenir. Revenez ensuite à X (ALT+F7).

Si les scancodes étaient différents, alors il y a de l'espoir que ces clés puissent être remappées différemment (parce que le noyau les voit différentes), si les scancodes sont les mêmes, alors il n'y a aucun moyen pour un remappage différent.

2
falconer