Faites défiler le curseur de zoom des claviers ergonomiques naturels Microsoft 4000 et 7000 en 14.04 (Trusty)

29

J'ai essayé d'utiliser ce tutoriel pour faire fonctionner le commutateur de défilement sur mon clavier Microsoft Natural Ergonomic Keyboard 4000. Mais je fais face à l'erreur suivante:

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 d' keymapoutil. Mais je remarque que des udevversions supérieures ( 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 depuis le dépôt Debian?

Dmitry Belaventsev
la source
Voulez-vous résoudre ce problème en utilisant udev ou êtes-vous d'accord avec des alternatives? Je serais un peu réticent à installer des paquets debian udev non emballés sur ubuntu.
jobin
toutes les alternatives sont les bienvenues =)
Dmitry Belaventsev
Est- ce que cela aide?
jobin
Que fait l' keymaputilitaire qui n'est plus expédié ?
mat
J'ai mis à jour mon tutoriel (auquel vous avez lié) pour inclure la réponse ci-dessous. Merci :-)
Terence Eden

Réponses:

27

Si vous regardez, /lib/udev/rules.d/60-keyboard.rulesvous verrez que tout a été gâché. Ce n'est qu'une partie de la fusion udev dans systemd qui s'est poursuivie.

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 sont disponibles /lib/udev/hwdb.d/60-keyboard.hwdb. Regardez-le 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 en /etc/udev/hwdb.d/exécutant sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb. Tout ce que vous devez 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 publié, vous devrez donc peut-être modifier en fonction de votre clavier. Regardez lsusbet assurez-vous que le vendor:productcode ci-dessus (as v####p####) est correct. Cela ne fonctionnera pas s'ils ne correspondent pas.

Une fois l'édition terminée, recompilez le hwdbfichier utilisé par udev:

sudo udevadm hwdb --update

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

Oli
la source
Merci pour la réponse! hwdb.ddir est vide, rules.dne contient que 3 fichiers ( 70-persistent-cd.rules, 70-persistent-net.rules, README). Alors, tu voulais dire que je dois créer un nouveau fichier? Ou je dois en avoir à éditer?
Dmitry Belaventsev
Oui, vous devriez créer un nouveau fichier. Les règles de clavier existantes sont en place /lib/udev/hwdb.d/60-keyboard.hwdbmais les modifications seront perdues après les mises à jour d'udev.
Oli
2
malheureusement, ne fait pas fonctionner le bouton cible
Dmitry Belaventsev
1
@matt, vous pouvez mettre plusieurs alias comme ici
user.dz
1
Au lieu de brancher / débrancher, on peut utiliser udevadm trigger /dev/input/by-id/usb-Microsoft-*pour déclencher la mise à jour
Alexandr Priymak
37

Ubuntu 15.10 : Je n'ai eu aucun succès avec les réponses précédentes.

J'ai utilisé avec succès une approche similaire aux précédentes - des 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 haut / bas
evdev: entrée: b0003v045Ep00DB *
 KEYBOARD_KEY_c022d = pageup
 KEYBOARD_KEY_c022e = pagedown

après 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*

Adam Chýlek
la source
9
C'est la bonne réponse pour Ubuntu 16.04
Greg Dan
2
Merci. Il semble en effet que les keyboard:définitions ne fonctionnent plus sur Ubuntu 1604 et cela doit l'être evdev:. Il existe même un mappage par défaut /lib/udev/hwdb.d/60-keyboard.hwdbpour le modèle 4000 qui les mappe vers zoomin/ zoomout- cependant X ignore complètement les événements (xev ne montre rien), vous avez donc toujours besoin d'un changement de configuration comme celui-ci.
wump
2
Il b0003semble que ce soit spécifique au bus (il peut donc ne fonctionner que sur certains ports USB). Si quelque chose comme ça b*v045Ep071D*marche, ça pourrait être mieux.
Oli
3
Merci, cela fonctionne dans Ubuntu 16.04 ( evdev:input:XXXau lieu de keyboard:usb:YYY). Vous pouvez également utiliser un mappage différent au lieu de pageup/ pagedown. Par exemple, j'utilise scrollupet scrolldownpour faire du vrai défilement.
Martin Grůber
1
Fonctionne également dans Kubuntu 17.10
OOPMan
7

La solution originale publiée par Oli n'a pas fonctionné pour moi, mais elle fonctionne après avoir changé les numéros de clé "0c022d"et "0c022e"vers "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 d'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 le hwdb utilisé par udev:

sudo udevadm hwdb --update

Rebranchez ensuite le clavier.

user261903
la source
Merci. Curieusement, j'avais également besoin d'effectuer ce changement maintenant, et un redémarrage était également nécessaire après tout (pas seulement une rebranchement).
mat
travaillé pour moi sur Ubuntu 15.04. Merci!
Pierre
Cela a fonctionné pour moi sur Debian Jessie 8.5.
Nicolás
Je veux acheter un clavier économique, et je suis curieux de savoir s'il fonctionne avec 16.04 LTS? Ou il n'y a pas de problème comme celui-là.
Arpad Horvath
4

Pour ajouter à la réponse d'Oli, si vous voulez faire défiler les lignes comme sur une souris, vous pouvez modifier pageup / pagedown pour monter / descendre dans votre règle personnalisée. Comme:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down
r11
la source
Par ailleurs: Up / Down est par défaut en 18.04.
LinuxLuigi
1

Une bonne solution est ici , et je peux seulement ajouter que vous pouvez mapper les clés aux clés X inutilisées comme ça:

$ 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 corrects à utiliser au lieu de katakanapeuvent être trouvés ici .

Après le redémarrage ;-) vous pouvez tester cela zoominet les zoomoutclés sont mappées avec succès, et aussi pour trouver un nom propre des clés (à utiliser dans rc.xmlpour OpenBox WM, par exemple) en utilisant xev:

$ 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
...

Vous pouvez maintenant connecter de nouvelles clés à 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>
...
dmitry_romanov
la source