Aujourd'hui, j'ai trouvé ce très bel article de Steven Losh dans lequel il présente quelques mappages de clavier améliorant la productivité. Parmi eux, une cartographie dynamique des touches Maj gauche et droite.
L'idée
Lorsque Shift_L ou Shift_R sont pressés sans touche supplémentaire, ils sont mappés respectivement sur '(' et ')', sinon ils fonctionnent comme d'habitude.
Le problème
Il fait tout cela sous OSX. J'essaie d'obtenir le même résultat sous Linux. Il n'y a pas de moyen simple pour cela car, si je comprends bien, vous ne pouvez pas utiliser xmodmap pour configurer une clé pour Shift_L seul, et une autre pour Shift lorsqu'il est utilisé comme touche de modification.
J'ai cherché un peu sur Google et j'ai trouvé des gens qui essayaient de faire la même chose sous Windows, ce qui est apparemment possible en utilisant AutoHotKey, mais je n'ai rien trouvé pour Linux.
Existe-t-il un moyen de résoudre ce problème sous Linux?
Réponses:
Hou la la! Le commentaire de l'utilisateur teika kazura sur la question d'origine est tout à fait correct - non seulement est-ce effectivement un double de cette autre question , mais la réponse qui y est fournie ("use xcape ") résout ce problème!
Après avoir cloné le repo xcape et compilé (j'ai dû installer libXtst-devel sur ma boîte Fedora, d'abord), j'ai pu obtenir le comportement exact demandé avec la commande suivante:
Après des tests certes superficiels, cela semble fonctionner extrêmement bien. Agréable!
Autres options
Si vous utilisez la touche Maj comme modificateur de souris (c.-à-d. Si vous cliquez sur un élément tout en maintenant la touche Maj enfoncée), vous souhaiterez probablement inclure l'option de délai d'attente de xcape et trouver une valeur de délai confortable, de sorte que les touches de Maj Shift en solo utilisées en combinaison avec la souris ne ne génèrent pas de parenthèses parasites. À partir du fichier README de xcape:
Ainsi, en incluant le
-t
drapeau avec une valeur de délai d'attente qui fonctionne pour vous, vous serez toujours en mesure de shift-clic avec la souris aussi longtemps que vous maintenez la touche Maj enfoncée pour au moinstimeout ms
quelques millisecondes.(Encore une fois, merci à teika kazura d' avoir signalé l'autre question, et également à don_crissti pour la réponse originale.)
la source
-t <timeout ms>
Si vous maintenez une touche plus longue que ce délai, xcape ne générera pas d'événement clé. La valeur par défaut est 500 ms." ... à moins que xcape n'interfère avec l'événement de touche enfoncée du modificateur (je ne m'en souviens pas), cela devrait l'empêcher de générer des pressions de touches parasites, tout en vous permettant de l'utiliser comme modificateur de sélection de la souris tant que vous le maintenez suffisamment longtemps .-t
drapeau!C'est un défi intéressant, et je suis d'accord sur celui auquel xinput ne semble pas être parfaitement adapté. J'ai passé un peu de temps bidouiller avec les capacités de xmodmap, et est venu si frustrante près de réaliser ce que vous voulez faire ... sans véritablement gérer pour y arriver.
En utilisant xmodmap, il est possible d'affecter parenleft comme symbole de touche décalé sur la touche de décalage gauche:
quel sorta fonctionne, au moins dans les tests sur ma boîte Fedora 17, mais pas de manière satisfaisante. J'ai trouvé que, avec ce mappage en place, la touche Maj fonctionnait toujours normalement et ne rendait pas de parens parasites, mais (frustrant), elle ne produisait pas non plus de manière fiable les parens gauches. Pour une raison quelconque, la clé ne semble pas modifier de manière fiable lui - même , qui brise sa mission décalée ... au départ. Pour une raison quelconque, frapper plusieurs fois de suite à gauche entraînerait éventuellement la production de parens à gauche, mais seulement après la quatrième ou la cinquième pression.
Un comportement que je l' ai avis, cependant, que vous pourriez être en mesure de travailler avec un « assez proche » analogique: je trouve que , après la cartographie parenleft et parenright sur Shift_L et Shift_R, je pourrais sûrement taper parens par « rouler » sur les deux touches de déplacement - en d'autres termes, avec cette cartographie:
appuyer sur Shift_L suivi de Shift_R, puis relâcher les deux, produirait une parenthèse droite ou une parenthèse gauche dans l'autre sens. (Les mappings de paren pourraient être inversés, bien sûr; je ne pouvais pas vraiment décider de quelle manière me semblait plus "naturelle".)
C'était aussi près que je suis arrivé à atteindre le comportement exact que vous recherchez; il ne semble pas possible d'utiliser xmodmap seul.
J'étais à moitié convaincu que ce n'était tout simplement pas possible, point final, mais j'ai réalisé qu'il y avait au moins une touche qui fonctionnait exactement comme vous le décrivez: la touche Super ("Windows"). Sous Gnome Shell, il s'agit d'une touche de modification (mod4), qui produit un effet différent (déclenchement de l'aperçu) lorsqu'elle est enfoncée seule. Ainsi, au moins en théorie, il peut être possible d'implémenter la surcharge de la touche Maj souhaitée de la même manière.
... Mais, je n'ai absolument aucune idée de la façon dont cela serait fait, ou à quel point il serait envahissant de s'embourber dans le traitement nécessaire chaque fois que vous appuyez sur la touche Maj. :-)
la source
regardez peut-être un xbindkeys pour changer le mappage des clés ou trouvez simplement un bon plugin de codage pour vim ou gedit ou tout ce que vous souhaitez utiliser ou coder le vôtre.
outils pour changer les keymaps /programming/6812/mapping-my-custom-keys-in-debian
peut-être http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-14.html
et écrire un script pour l'activer.
la source