web-dev-qa-db-fra.com

Faire glisser le curseur de zoom de Microsoft Natural Ergonomic Keyboard 4000 et 7000 vers le haut ou le bas, en 14.04 (Trusty)

J'ai essayé d'utiliser ce tutoriel pour que le commutateur de défilement fonctionne avec mon clavier Microsoft Natural Ergonomic Keyboard 4000. Mais l'erreur suivante est à mon sens:

Sudo: /lib/udev/keymap: command not found

J'ai la version udev 204-5ubuntu20.2 (la version trouvée dans Trusty)

J'ai remarqué que cette version n'inclut pas l'outil keymap. Mais je remarque que de plus grandes versions de udev ( qui sont disponibles pour Debian, par exemple ) incluent cet outil.

Quelqu'un pourrait-il expliquer ce diff pour moi? =) Et que dois-je faire dans ce cas - installer le paquet à partir du référentiel Debian?

29

Si vous regardez /lib/udev/rules.d/60-keyboard.rules, vous verrez que tout a été dérangé. Cela fait partie de la fusion entre udev et systemd.

Toutes les règles matérielles sont compilées dans une base de données matérielle binaire. Celles-ci suivent un format vraiment étrange. Les règles existantes pour les claviers livrés avec udev résident dans /lib/udev/hwdb.d/60-keyboard.hwdb. Regardez ça mais ne le modifiez pas (les mises à jour le remplaceront probablement).

Pour ajouter vos règles personnalisées, nous allons créer un nouveau fichier dans /etc/udev/hwdb.d/ en exécutant sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb. Tout ce que vous avez à faire est de coller ce qui suit -

Si vous utilisez le modèle 4000:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Si vous utilisez le modèle 7000:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Ceci est adapté du tutoriel que vous avez posté, vous devrez donc peut-être modifier en fonction de votre clavier. Regardez lsusb_ et assurez-vous que le vendor:product ci-dessus (en tant que v####p####) est correct. Cela ne fonctionnera pas s'ils ne correspondent pas.

Une fois que vous avez terminé, recompilez le hwdb utilisé par udev:

Sudo udevadm hwdb --update

Et puis vous pourriez avoir besoin de rebrancher. S'il s'agit d'un clavier PS/2, vous devrez peut-être redémarrer. Dans certains cas, vous devez également redémarrer.

27
Oli

buntu 15.1: Je n'ai pas eu de succès avec les réponses précédentes.

J'ai utilisé avec succès une approche similaire aux précédentes - les instructions ont été mentionnées dans /lib/udev/hwdb.d/60-keyboard.hwdb.

J'ai créé un nouveau fichier hwdb en utilisant Sudo nano /etc/udev/hwdb.d/70-keyboard.hwdb contenant:

 # Microsoft Natural Ergonomic Keyboard 4000 - remappez le zoom avant/arrière sur la page précédente/suivante 
 .____.]

après que j'ai couru

 Sudo udevadm hwdb --update 
 Sudo udevadm control - reload 

et rebranché le clavier et cela a fonctionné.

Pour le modèle 7000, utilisez evdev:input:b003v045Ep071D*

37
Adam Chýlek

La solution originale publiée par Oli ne fonctionnait pas pour moi, mais après que j'ai modifié les numéros de clé "0c022d" et "0c022e" en "c022d" et "c022e". J'utilise un modèle 4000, donc je ne peux pas vérifier si le même changement est nécessaire pour le modèle 7000.

Pour répéter la réponse de Oli, voici ce que j’ai fait: créer un nouveau fichier en exécutant Sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdb. Collez les lignes suivantes dans le fichier (pour le modèle 4000):

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Après avoir édité le fichier, recompilez la hwdb utilisée par udev:

Sudo udevadm hwdb --update

Puis rebranchez le clavier.

7
user261903

En ajoutant à la réponse d'Oli, si vous souhaitez un défilement de ligne similaire à celui d'une souris, vous pouvez modifier la mise en page/pagination en haut/bas dans votre règle personnalisée. Comme:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down
4
r11

La bonne solution est ici , et je peux seulement ajouter que vous pouvez mapper les clés sur les touches X inutilisées de la sorte:

$ cat /lib/udev/rules.d/95-keymap.rules
...
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d katakana 0xc022e katakanahiragana
...

Les noms propres à utiliser à la place de katakanapeuvent être trouvés ici .

Après le redémarrage ;-), vous pouvez vérifier que les clés zoominet zoomoutsont correctement mappées, et pour rechercher un nom correct pour les clés (à utiliser dans rc.xml pour OpenBox WM, par exemple) à l'aide de xevname__:

$ xev
...
KeyRelease event, serial 46, synthetic NO, window 0x3c00001,
    root 0x291, subw 0x0, time 1492891, (-261,-61), root:(573,380),
    state 0x0, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
...

Maintenant, vous pouvez connecter de nouvelles clés pour une action complètement arbitraire. Dans mon cas de gestionnaire de fenêtres OpenBox, j'ai utilisé quelque chose comme ceci:

$ cat <whatever>/rc.xml
...
<keybind key="Katakana">
  <action name="Execute">
    <command>volume_up.sh</command>
  </action>
</keybind>
<keybind key="Hiragana_Katakana">
  <action name="Execute">
    <command>volume_down.sh</command>
  </action>
</keybind>
...
1
dmitry_romanov