J’essaie de réutiliser la clé de locking majuscule inutile pour quelque chose d’utile sur 16.04 MATE. J’ai croisé
setxkbmap -option ctrl:nocaps
pour le désactiver, mais pourrait-il être remappé pour lire / mettre en pause VLC par exemple? Merci pour vos réponses!
Voici une version impliquant un petit script exécuté en arrière-plan. Quelques étapes faciles doivent être sockets:
Installez le programme evtest : sudo apt install evtest
. Ce programme est capable de décoder et d’imprimer des événements bruts à partir de la hiérarchie /dev/input/
des périphériques.
Ajoutez votre compte d’utilisateur à l’ input
du groupe. Déconnectez-vous et connectez-vous à nouveau. (Cela est nécessaire parce que nous allons lire un périphérique sous /dev/input/
, ce qui ne peut normalement être fait que par la racine ou par les utilisateurs en input
groupe. Nous pourrions exécuter le script en tant que root, mais nous devrions alors trouver un manière de lui dire à quelle instance dbus l’utilisateur doit parler.)
Désactivez la touche Verrouillage comme vous l’avez fait ou utilisez la préférence de partenaire correspondante. Cela fonctionnerait également si vous mappiez la touche majuscule sur ctrl, comme le font beaucoup de gens.
Enregistrez le script suivant quelque part, par exemple $HOME/bin/capshack
et rendez-le exécutable:
#!/bin/bash KEYBOARD=/dev/input/by-path/platform-i8042-serio-0-event-kbd EVENT="type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 1" toggleVLC () { dbus-send \ --type=method_call \ --dest=org.mpris.MediaPlayer2.vlc \ /org/mpris/MediaPlayer2 \ org.mpris.MediaPlayer2.Player.PlayPause } evtest "$KEYBOARD" | \ while read line do if [[ "$line" == *"$EVENT" ]] then toggleVLC fi done
Le script ci-dessus écoute vos événements au clavier et exécute une commande lorsque vous appuyez sur la touche de locking. La commande exécutée utilise dbus pour envoyer un événement play / pause à une instance VLC en cours d’exécution. Vous devrez peut-être modifier la variable KEYBOARD
pour qu’elle pointe sur votre clavier actuel, mais il est probable que la valeur ci-dessus fonctionnera.
Si vous préférez que la fonction toggleVLC () soit appelée lorsque vous relâchez la touche Capslock, vous pouvez modifier la variable EVENT
dans le script afin qu’elle se termine par la value 0
au lieu de la value 1
.
En outre, il est possible que le code clé de la touche de locking majuscule soit différent de 58. Vous pouvez le vérifier en exécutant evtest
, consultez le résultat lorsque vous appuyez sur capslock et ajustez la variable EVENT en conséquence. Vous n’avez même pas besoin de faire correspondre le code clé et de définir simplement EVENT sur (KEY_CAPSLOCK), value 1
.
Au lieu d’utiliser evtest et le script ci-dessus, vous pouvez utiliser thd depuis le paquet sortingggerhappy (quelque chose comme thd --dump /dev/input/*
donnerait un résultat similaire), mais j’ai trouvé cela un peu moins pédagogique.
Maintenant, nous créons une unité systemd utilisateur pour démarrer le script automatiquement en arrière-plan:
Créez la hiérarchie systemd utilisateur: mkdir -p $HOME/.config/systemd/user
Ajoutez le texte suivant au fichier $HOME/.config/systemd/user/capshack.service
[Unit] Description=Abuse capslock key [Service] ExecStart=%h/bin/capshack [Install] WantedBy=default.target
Activez l’unité de service que vous venez de systemctl --user enable capshack
: systemctl --user enable capshack
Démarrer le service: systemctl --user start capshack
À partir de maintenant, vous devriez pouvoir basculer la lecture / la pause dans VLC à l’aide de la touche Capslock. Le script en arrière-plan doit être lancé automatiquement lorsque vous vous connectez.
Comme mentionné précédemment, vous pouvez également utiliser le package sortingggerhappy pour le faire. Cette méthode est recommandée par les personnes qui souhaitent moins manipuler le système, mais plutôt une solution plus solide.
Ajouter un utilisateur au groupe de input
comme ci-dessus
Installez le paquet: sudo apt install sortingggerhappy
Ajoutez une configuration pour sortingggerhappy à ~/.config/thd/capslock.conf
:
KEY_CAPSLOCK 1 dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
Exécutez thd comme ceci: thd --sortingggers ~/.config/thd/capslock.conf /dev/input/event*
Faites-le courir pour votre utilisateur de la même manière que décrit précédemment pour capshack.
Assurez-vous que vous n’avez qu’une des méthodes mentionnées (capshack ou thd) en cours d’exécution, pour ne pas basculer deux fois sur chaque touche.
J’ai testé tout cela le 18.04 sous la session standard et le 16.04 mat. Mais, théoriquement, il devrait également fonctionner sous wayland ou avec d’autres environnements de bureau.
Dans Ubuntu 16.04, après avoir passé des heures à googler et à sortingpoter dconf-editor
et xbindkeys
j’ai trouvé une solution extrêmement simple:
Si vous avez besoin de la XF86AudioPlay
charge de Gnome XF86AudioPlay
vous avez besoin de xdotool
(inutile pour VLC, comme le stipule l’OP):
sudo apt install xdotool
Maintenant, voici la partie la plus délicate. Chaque fois que vous appuyez sur la touche Caps LocK pour basculer la musique entre Lecture et Pause, les lettres majuscules sont également activées et désactivées.
Utilisez cette méthode pour désactiver le locking majuscule tout en maintenant la clé active:
setxkbmap -option caps:none
Ensuite, dans Ubuntu 16.04, allez dans Paramètres >> Clavier >> Raccourcis >> Raccourcis personnalisés :
Audio Play
xdotool key XF86AudioPlay
Après avoir ajouté la nouvelle option, la touche de raccourci atsortingbuée sera lue Désactivée . Cliquez sur Désactivé et lorsque vous êtes invité à atsortingbuer la clé, appuyez sur la touche Caps LocK .
Suivez les étapes de Gnome dans la section précédente, mais utilisez plutôt la commande suivante:
qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
VLC ne reconnaît pas les touches multimédias: Comment faire en sorte que les touches multimédias du clavier fonctionnent avec VLC de manière globale? même intégré au clavier. Par conséquent, le raccourci clavier personnalisé vers XF86AudioPlay est inutile avec xdotool
.
Cette Q & A explique comment définir des raccourcis clavier personnalisés à partir de la ligne de commande: Comment définir des raccourcis clavier personnalisés à partir du terminal?
La prochaine étape consiste à setxkbmap -option caps:none
persistante lors des redémarrages. Cette réponse de Terdon aboutit à une recherche sur Google: enregistrez les parameters setxkbdmap :
Une solution simple consiste à append la commande à votre fichier $HOME/.profile
(vous pouvez la créer si elle n’existe pas):
setxkbmap -option caps:none
Cela devrait le faire fonctionner à chaque fois que vous vous connectez.
Notez que vous devez utiliser $HOME/.profile
plutôt que $HOME/.bash_profile
, $HOME/.bashrc
ou un autre fichier similaire. En effet, ce paramètre doit être lu par votre gestionnaire de connexion.
Cette réponse a été testée sur Ubuntu MATE 16.04.4 LTS dans une VM (mais le clavier était un clavier USB transparent, donc cela ne devrait pas faire de différence). De plus, il ne nécessite aucun logiciel supplémentaire et peut être effectué sur une installation vanilla sans installer de paquet. Il est persistant entre les démarrages.
Editez le fichier /usr/share/X11/xkb/symbols/pc
tant que root. Veillez à ne pas vous tromper ici (par exemple, en oubliant la virgule), car vous risqueriez de ne plus pouvoir utiliser votre clavier si vous le faites. (Devinez ce que j’ai appris à la dure?;)
Commentez la ligne
key { [ Caps_Lock ] };
en plaçant deux barres obliques ( //
) au début de celle-ci.
Ajoutez en dessous la ligne suivante:
key { [ XF86AudioPlay, XF86AudioPause ] };
Commentez la ligne
modifier_map Lock { Caps_Lock };
de la même manière que ci-dessus.
Redémarrer.
Remarque: (crédit à danzel pour l’avoir signalé) Les mises à jour du paquet xkb-data
peuvent écraser ce fichier. Une méthode raisonnablement sûre pour éviter cela consiste à détourner le chemin à l’aide de dpkg-divert
. (Je dis “raisonnablement en sécurité” car la source amont de ce fichier n’a pas été modifiée depuis trois ans.)
Désactivez manuellement votre touche de locking des majuscules dans les parameters de disposition de votre clavier, puis utilisez l’approche de cette réponse pour append vos propres remappages de touches.
Votre touche de locking des majuscules ne verrouille plus les majuscules et elle a été remappée sur Lecture / Pause à ce stade. Vous devriez pouvoir lire et mettre en pause la musique dans VLC maintenant. Si cela fonctionne à ce stade, vous pouvez ignorer le rest de ces instructions.
Cependant, lorsque j’ai essayé, VLC n’a pas répondu à la touche Play / Pause.
Ouvrir les raccourcis clavier (Système → Préférences → Matériel → Raccourcis clavier)
Assurez-vous que “Play (ou Play / Pause)” est réglé sur “XF86AudioPlay”
Si ce n’est pas le cas, cliquez sur la section “Raccourci” et appuyez sur votre nouvelle touche Lecture / Pause pour définir le raccourci.
Si cela ne fonctionne toujours pas, redémarrez plusieurs fois pour faire bonne mesure. (C’est en fait ce que ça a réglé pour moi.)
Installez xbindkeys
, xcape et playerctl . Assurez-vous que xcape
(mappant CapsLock
sur une clé de secours telle que Alt+F12
de xcape -e 'Caps_Lock=Alt_L|F12
) et playerctl
sont automatiquement playerctl
lors de la connexion et ajoutez au fichier ~/.xbindkeysrc
les deux lignes.
"playerctl play-pause" Alt + F12
Cette solution remappera le scancode de votre clé Capslock en un autre code clé dans le pilote d’entrée du kernel, dans ce cas lecture / pause.
Les avantages
xkb
Désavantages
Conditions préalables
sudo apt-get install evtest
) Dans un terminal, lancez sudo evtest
et sélectionnez votre clavier. S’il n’y a pas de sortie lorsque vous appuyez sur une touche, appuyez sur Ctrl + C et essayez un autre périphérique. Rappelez-vous le numéro d’événement de l’appareil que vous avez sélectionné, nous en aurons besoin par la suite. Appuyez sur la touche de locking. Certaines lignes telles que les suivantes apparaissent:
Event: time 1529406021.187148, -------------- SYN_REPORT ------------ Event: time 1529406021.218427, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039 Event: time 1529406021.218427, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0
Nous avons besoin de la valeur de la ligne MSC_SCAN
précédant la ligne KEY_CAPSLOCK
. Dans l’exemple ci-dessus, il s’agirait de 70039, mais le scancode de votre clavier est probablement différent.
Exécutez maintenant la commande suivante, mais remplacez le X par le numéro d’événement de périphérique que vous avez utilisé pour la commande evtest
:
grep "" /sys/class/input/eventX/device/id/*
… cela bustype
des caractères bustype
, le product
, le vendor
et la version
du clavier.
Créez un fichier nommé 65-keyboard-custom.hwdb
dans /etc/udev/hwdb.d/
(permissions principales requirejses) avec le contenu suivant:
evdev:input:b[bustype]v[vendor]p[product]e[version]* KEYBOARD_KEY_[scancode]=playpause
…où
evdev:...
line n’a pas d’espace précédent KEYBOARD_KEY...
a exactement un espace précédent Par exemple:
evdev:input:b0003v046DpC228e0110* KEYBOARD_KEY_70039=playpause
Enfin, comstackz la nouvelle configuration dans la firebase database matérielle:
sudo systemd-hwdb update
Si vous souhaitez appliquer les modifications immédiatement, informez udev:
sudo udevadm sortinggger
Si vous souhaitez annuler les modifications, supprimez simplement le fichier que vous avez créé et redémarrez.
Vous pouvez trouver des informations plus détaillées dans ma réponse originale sur ce sujet.
Peut-être xbindkeys
utilisant xbindkeys
ou XTE
vous pourriez le faire. Mais avant d’être sûr de ce que sont les Keycodes, vous pouvez voir le code de la touche Capslock en utilisant la commande xev
dans le terminal et en appuyant dessus (vous pouvez voir le keycode de n’importe quel bouton de keu ou de souris, y compris les souris Gaming). Avec capslock et le code clé des boutons de lecture en main, vous pouvez éditer le fichier confi de xbindkeys et y déposer vos modifications. utilisez touch ~/.xbindkeysrc
pour créer le fichier de configuration (si le système ne le crée pas automatiquement) et nano ~/.xbindkeysrc
pour le modifier. Je l’ai utilisé le mois dernier et voici un exemple. Jetez un coup d’œil à ces liens qui pourraient vous être très utiles.
https://help.ubuntu.com/community/MultimediaKeys
https://gist.github.com/jbonney/5743509
Remapper un bouton de ma souris de jeu sur une touche du clavier
https://matmunn.me/post/binding-volume-control-mouse-buttons-ubuntu/