J'ai un fichier appelé ~ / .speedswapper qui contient les éléments suivants:
! Swap caps lock and escape
remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock
... quand je cours xmodmap ~/.speedswapper
, cela change les touches escet Caps Lock. J'ai cette ligne dans mon ~ / .profile, de sorte que chaque fois que je me connecte, ces clés sont commutées.
Cependant , si je branche un clavier USB externe, ce paramètre ne semble pas persister. Le clavier de mon ordinateur portable fonctionne parfaitement bien, mais je dois réexécuter la commande pour que le clavier externe permute les deux touches. Heureusement, cela ne semble pas affecter le clavier de mon ordinateur portable - ils semblent se synchroniser.
Une solution serait de trouver un moyen d'exécuter cette commande xmodmap chaque fois qu'un clavier externe est branché, mais je serais ouvert à une autre solution d'échange de touches, si elle était plus robuste. Le système d'exploitation est Ubuntu 13.04.
Compte tenu du commentaire de justbrowsing, il semble que cela puisse être réalisé en écrivant une règle udev - je pense que je dois utiliser l'option RUN, et qu'elle devrait être déclenchée sur / dev / hidraw0 ou / dev / hidraw1, qui sont les périphériques qui apparaît lorsque je branche mon clavier ... mais j'essaie toujours de comprendre ce concept, donc j'apprécierais toute aide de quelqu'un qui sait ce qu'il fait avec udev.
Réponses:
Puisque vous avez cette commande dans votre
~/.profile
, elle ne sera exécutée qu'une seule fois, lorsque vous vous connecterez. Une solution, pas très élégante, serait de placer la commande dans votre~/.bashrc
place afin qu'elle soit exécutée à chaque fois que vous ouvrez un terminal.Une meilleure solution serait de définir une
udev
règle qui s'exécuteraxmodmap
lorsque votre clavier USB sera inséré (j'utilise les valeurs renvoyées pour mon clavier USB, vous devrez éditer cette solution pour l'adapter à la vôtre):Obtenez les détails de votre clavier USB. Exécutez cette commande avec le clavier branché:
Pour écrire des
udev
règles, vous devez savoir à quoi elles doivent correspondre. Vous pouvez l'obtenir en recherchant la sortie deudevadm info --export-db
l'event6
entrée, ou en l'analysant directement comme ceci:Cela renvoie plusieurs lignes de texte dont celles que nous utiliserons:
udev
devient compliqué lors de l'utilisation de programmes X commexmodmap
, je ne pouvais même pas le faire fonctionner lors de l'exportation$DISPLAY
et$XAUTHORITY
. Quoi qu'il en soit, je ne pouvais pas le faire fonctionner avec votre méthode, donc ma solution utilise à lakeymap
place. Tout d'abord, vous devrez trouver les codes clés pour Escet Caps Lock, vous pouvez le faire en exécutantpuis en appuyant sur les touches appropriées. Sur mon système, cela renvoie:
Créez une nouvelle règle de keymap contenant ces lignes:
et enregistrez-le sous
/lib/udev/keymaps/speedswap
.Définissez une nouvelle
udev
règle. Créez un fichier appelé/etc/udev/rules.d/95-speedswap.rules
et ajoutez-y ces lignes:Cela devrait le faire, au moins sur mon système, brancher mon USB externe fait Escagir comme Caps Locket vice versa .
la source
udevadm info --export-db
avec quelques claviers et voir le chapeau qu'ils ont en commun. PeutID_MODEL=USB_Keykoard
- être ouID_USB_DRIVER=usbhid
mais cela pourrait également déclencher la règle avec le mauvais appareil. Dépend de vous.