comment faire fonctionner le curseur de zoom du clavier Natural Natural Ergonomic Keyboard 4000 (et d'autres boutons)?

21

J'utilise un clavier Microsoft Natural Ergonomic Keyboard 4000 sur Ubuntu 10.10. Les touches multimédias (Volume, Lecture / Pause) fonctionnent, ainsi que le bouton Courrier et Calculatrice.

Maintenant, j'aimerais utiliser le curseur de zoom, si c'était possible, j'aimerais utiliser le défilement de page avec cela. Y a-t-il un moyen de permettre cela?

Martin Ueding
la source
2
Voir askubuntu.com/questions/471802/… . Les anciennes réponses ici peuvent être obsolètes.
mat

Réponses:

18

Créez le fichier /etc/udev/rules.d/98-ms-ergo.rulesavec le contenu suivant:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

Cela fera correspondre la touche de zoom à la page suivante / précédente sans modifier les fichiers installés dans /lib/udev.

Une fois ajouté, il vous suffit de débrancher et de rebrancher votre clavier pour qu'il commence à fonctionner.

Kees Cook
la source
Cela a fonctionné parfaitement pour moi en utilisant Fedora 19.
Rubens Mariuzzo
Pour le Microsoft Ergonomic 7000, le modèle semble être 071d (tel qu'obtenu par lsusb) plutôt que 00db - donc si quelqu'un essaie ceci pour 7000, il devrait probablement remplacer 00db par 071d dans le fichier ci-dessus. Quoi qu'il en soit dans mon cas (Ubuntu 14.04), cela ne fonctionne pas, c'est peut-être lié au fait evtestque le curseur de zoom ne déclenche aucun événement, contrairement à la plupart des autres touches du clavier Ergonomic 7000 qui le font. Pas sûr que le Web / bouton Home ne montre pas de sortie dans une evtestou l' autre - bien que Ubuntu ne le ramasser.
mat
1
Je ne peux pas non plus faire fonctionner le 4000 sur 14.04. Ne pas voir les événements xev.
Michael
J'ai essayé cela le 14.10 et ça n'a pas marché.
Rubens Mariuzzo
@Cocoabean xevne fonctionne pas non plus pour moi. Qu'est-ce que c'est evtest /dev/input/event3. Si event3n'a aucune réaction à cette clé, testez avec d'autres événements ( event[0..9]).
Nicolás
9

Sur Xubuntu 13.10 (peut-être aussi sur Ubuntu 13.10), la même chose peut être faite comme suit:

Modifiez les mappages de touches dans /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Courir sudo udevadm hwdb --update

Redémarrez.

Konstantin K.
la source
1
A travaillé le 14.04 pour moi
Amir Uval le
Mon 60-keyboard.hwdb avait une entrée existante pour MNEK4K, avec clavier: usb: b0003v045Ep00DB *. La modification des actions n'a pas fonctionné. L'ajout d'une nouvelle entrée avec ces actions a fonctionné.
Alrekr
A fonctionné comme un charme le 16.04. J'ai utilisé "haut" et "bas" (au lieu de "pageup" et "pagedown") pour obtenir un défilement plus fluide lors de la navigation sur les pages Web. Merci beaucoup!
Pierre
Vous pouvez mapper vers katakanaet katakanahiragana(ou tout autre code clé inutilisé de hal.freedesktop.org/quirk/quirk-keymap-list.txt ) plutôt que d'alias vers des clés existantes. De cette façon, vous pouvez reconnaître et utiliser les touches en combinaison avec des modificateurs pour basculer le volume, la langue, la taille, etc. (configurez votre gestionnaire de fenêtres pour profiter de deux nouvelles super-touches).
dmitry_romanov
4

Afin de configurer le clavier ergonomique Microsoft 4000, nous devons créer un fichier de configuration qui contient la déclaration du clavier et les enregistrements pour le mappage des touches.

Pour ce faire, nous devons déterminer trois types d'informations:

  • Type de clavier
  • La touche scancodequi est la touche réelle du clavier
  • La touche namepour affecter la fonctionnalité souhaitée à la touche sélectionnée

Trouvez d'abord le type de clavier:

Dans le terminal, exécutez la commande suivante:

lsusb 

la sortie détermine le type de clavier:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Il apparaît après ID. Dans ce cas, il est045e:00db

Trouvez ensuite le scancode et le nom de la clé.

Pour les déterminer, nous utilisons le evtestprogramme qui déconnecte les informations d'événement d'un périphérique spécifique sur le terminal:

evtest

Si vous n'avez pas le programme, installez-le en exécutant la commande suivante:

sudo apt-get install evtest

En exécutant le evtestprogramme, nous obtenons la sortie suivante:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

La sortie est assez explicite, insérez le numéro approprié pour le clavier, qui est ici le numéro, 3puis appuyez sur Entrée:

Cela produira de nombreuses informations sur le terminal et se terminera sur les lignes suivantes:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Désormais, à chaque pression sur une touche du clavier, les informations relatives aux touches s'affichent. Par exemple, la touche Slash à côté du décalage vers la droite indique:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

La première ligne du journal contient les informations sur la touche réelle du clavier telles que celles scancodequi viennent après la valeur. Dans ce cas, c'est 70038

La deuxième ligne contient les informations de fonctionnalité affectées comme le nom de la clé. Dans ce cas, c'est SLASH . Examinez les autres clés pour trouver leurs noms appropriés.

Donc en bref:

  • Notre type de clavier est: 045e: 00db
  • Le scancode de la touche Slash est: 70038
  • Le nom de la clé à attribuer est SLASH

Après avoir rassemblé les informations nécessaires, nous créons le fichier de configuration:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Appuyez sur ipour activer le mode Insertion et tapez ce qui suit:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Enregistrez et quittez en appuyant sur escapepuis en tapant :wqet appuyez sur Entrée.

Exécutez ensuite les deux commandes suivantes pour que la configuration prenne effet:

sudo udevadm hwdb --update
sudo udevadm control --reload

Débranchez enfin le clavier et rebranchez-le.

Quelques notes sur le fichier de configuration:

  • Le format du fichier doit être exactement comme indiqué, l'espace avant le mappage des enregistrements est critique.
  • Au lieu de cela, sudoeditvous pouvez utiliser n'importe quel autre éditeur de texte, n'oubliez pas de suivre le format exact du fichier comme expliqué ci-dessus.
  • Il y a deux caractères ajoutés au type de clavier: vet pqui représentent le fournisseur et le produit. Ils sont également importants.
  • Le type de clavier est écrit en majuscules dans le fichier de configuration. Notre type de clavier était 045e: 00db mais dans la configuration nous insérons v045Ep00DB *
  • Le scancode de la clé vient juste après KEYBOARD_KEY_
  • Le nom de la clé apparaît en minuscules dans le fichier de configuration
  • Vous pouvez personnaliser à peu près toutes les touches de votre clavier en suivant ce didacticiel.
varDumper
la source
3

Le problème est que le pilote evdev ignore les codes clés> 255 .
La solution, grâce à Marco Chiappero :

1) vous devez définir tous les remappages dont vous avez besoin (sous forme de 
"scancode keycode") et placez-les dans un fichier sous "/ lib / udev / keymaps /" 
(par exemple, j'ai créé logitech-lx710-sans fil là-bas). Vous pouvez trouver le
scancodes utilisant evtest ("sudo evtest / dev / input / eventX", où X est votre 
périphérique clavier. Attention, parfois ces touches supplémentaires sont exposées à travers
un autre appareil ou l'interface de votre souris: par exemple. event3 -> kbd, event4 ->
souris et touches supplémentaires). Voici quelques exemples de sortie:

Événement: heure 1294153475.909379, type 4 (Divers), code 4 (ScanCode), valeur c1028
"c1028" est la valeur de scancode que vous allez placer dans votre fichier keymap, puis 
prendre un nombre de input.h comme décrit précédemment et le convertir en 
hexadécimal. Ensuite, écrivez la paire de remappage dans votre fichier, peut-être avec une description
commentaire, comme ceci:

0xC1028 0x9a # bouton de rotation

Itérer pour chaque touche> 255.

2) vous devez dire à udev d'appliquer ce fichier de remappage à chaque fois qu'il rencontre 
votre clavier, éditez donc le fichier "/lib/udev/rules.d/95-keymap.rules" en ajoutant 
la règle udev qui correspond à votre matériel. Veuillez ne pas me demander de définir une règle pour
toi. 
REMARQUE: vous pouvez immédiatement appliquer votre fichier keymap en tapant vous-même 
"sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE" et 
vérifiez à nouveau avec evtest.

Maintenant, vous pouvez utiliser l'éditeur de raccourcis Gnome pour voir que les clés sont maintenant 
utilisable à l'intérieur de X et créer de nouveaux raccourcis. Cependant, il peut arriver qu'aucun
keysym est affecté à ce code de clé (vous verrez donc 0xXY au lieu de XF86Foo). 
Vous pouvez voir les mappages actuels via xmodmap -pke, enregistrer la sortie dans un 
fichier et modifiez-le si vous en avez besoin (une liste complète des codes
"/ usr / lib / X11 / XKeysymDB").
Une fois que vous avez ajouté les clés à ces clés que vous avez remappées, vous pouvez enregistrer ce fichier
comme ~ / .Xmodmap (ou comme / etc / X11 / Xmodmap si vous souhaitez appliquer à chaque utilisateur).
desgua
la source
Je pense que les boutons que je veux sont c022d et c022e, mais je ne trouve pas l'entrée.h.
Martin Ueding
Si je comprends bien (mais je ne peux pas tester parce que je n'ai pas ce matériel) vous n'avez pas vraiment besoin input.h, il vous suffit de modifier ce fichier: /lib/udev/rules.d/95-keymap.rules. (Peut-être ici sur Launchpad, vous pouvez trouver des personnes avec le même matériel, donc plus à même d'aider bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 ). Avez-vous modifié le fichier que j'ai mentionné ci-dessus?
desgua
1
C'est une réponse beaucoup trop technique et désorganisée pour la plupart des gens. Quelques lacunes importantes: aucune aide pour déterminer le / dev / input / eventX approprié, des étapes peu claires mélangées à des informations contextuelles et des demandes de ne pas demander d'instructions pour la création de keymaps.
Alain O'Dea
1
evtest n'est même pas installé par défaut, ce qui aggrave encore la situation.
Alain O'Dea
Par essais et erreurs, j'ai trouvé que mon clavier est / dev / input / event3 et evtest ne capte aucun événement du curseur de zoom.
Alain O'Dea
0

Sur ma machine, des touches supplémentaires (HomePage, Search, Calc, etc.) et une entrée de zoom ont été envoyées via / dev / input / event5 tandis que des clés ordinaires ont été envoyées via / dev / input / event4. La valeur de la clé de zoom correspond à celle de queueoverflow.

niclas
la source