Configuration d’un «clavier» 3 boutons sous Linux

J’ai investi claqué du pognon inutilement dans un mini clavier 3 boutons + un potar chez aliexpress.

Mon but est d’ajouter des fonctionnalités hors clavier «standard» pour actionner le micro quand je parle par exemple.

Mini-clavier minimaliste pour ajouter des touches de fonctionnalité à son pc.

Au branchement le clavier est bien reconnue par le système :

$ dmesg
[ 4158.860304] usb 1-2.3: new full-speed USB device number 13 using xhci_hcd
[ 4158.966002] usb 1-2.3: New USB device found, idVendor=1189, idProduct=8890, bcdDevice= 0.00
[ 4158.966014] usb 1-2.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 4159.111918] input: HID 1189:8890 as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.3/1-2.3:1.0/0003:1189:8890.000C/input/input27
[ 4159.168751] hid-generic 0003:1189:8890.000C: input,hidraw5: USB HID v1.11 Keyboard [HID 1189:8890] on usb-0000:04:00.3-2.3/input0
[ 4159.168951] usbhid 1-2.3:1.1: couldn't find an input interrupt endpoint
[ 4159.172912] input: HID 1189:8890 Keyboard as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.3/1-2.3:1.2/0003:1189:8890.000D/input/input28
[ 4159.232883] hid-generic 0003:1189:8890.000D: input,hidraw6: USB HID v1.00 Keyboard [HID 1189:8890] on usb-0000:04:00.3-2.3/input2
[ 4159.236386] input: HID 1189:8890 as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.3/1-2.3:1.3/0003:1189:8890.000E/input/input29
[ 4159.236693] hid-generic 0003:1189:8890.000E: input,hidraw7: USB HID v1.10 Mouse [HID 1189:8890] on usb-0000:04:00.3-2.3/input3
Langage du code : PHP (php)

L’appui sur n’importe quelles touches inscrit un x, de même qu’en tournant le potentiomètre.

$ xxxxxxxxxxx

Input remapper

Il faut donc configurer les touches pour leurs donner une vraie fonctionnalité.

La plupart des distsributions Linux possède un outils bien utile nommé input-remapper et qui s’installe avec apt sur ubuntu :

$ sudo apt install input-remapper

Le paquet «descend» un utilitaire de configuration graphique bien pratique :

$ input-remapper-gtk
Input remapper permet de changer la fonctionnalité d’une touche

Problème : toutes les touches du miniclavier sont vues comme des x, et sont donc indiférenciées.

Il est visiblement nécessaire de configurer/corriger une couche plus «basse» du pilote de ce clavier.

ch57x-keyboard-tool

Une recherche sur le numéro de classe HID (1189:8890) dans duckduckgo fait apparaitre des projets github permettant de piloter des clavier ch57x. Les deux projets suivant semble être intéressants:

  • ch57x-keyboard-tool: Projet qui supporte toute la game des macro-keyboard trouvés sur aliexpress
  • hid-minikb-libusb: Projet qui semble se cantonner au 3×1 boutons + potentiomètre. Ce projet semble maintenu que par une seule personne.

Le projet ch57x-keyboard-tool semble être le plus abouti à première vue. On peut même télécharger une release compilé pour x86_64:

$ cd ~/Téléchargement/
$ wget https://github.com/kriomant/ch57x-keyboard-tool/releases/download/v1.2.4/ch57x-keyboard-tool-x86_64-unknown-linux-gnu.tar.gz
$ mkdir /opt/ch57x-keyboard-tool
$ cd /opt/ch57x-keyboard-tool
$ tar zxvf ~/Téléchargements/ch57x-keyboard-tool-x86_64-unknown-linux-gnu.tar.gz
$ ./ch57x-keyboard-tool 
Usage: ch57x-keyboard-tool [OPTIONS] <COMMAND>

Commands:
  show-keys  Show supported keys and modifiers
  validate   Validate key mappings config on stdin
  upload     Upload key mappings from stdin to device
  led        Select LED backlight mode
  help       Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help information

Internal options (use with caution):
      --vendor-id <VENDOR_ID>                [default: 4489]
      --product-id <PRODUCT_ID>              [default: 34960]
      --address <ADDRESS>                    
      --endpoint-address <ENDPOINT_ADDRESS>


Langage du code : JavaScript (javascript)

Un fichier de configuration en yaml est fourni example-mapping.yaml, il faut au minimum éditer le nombre et le type de touches :

orientation: normal
rows: 1
columns: 3
knobs: 1
layers:
  - buttons:
      - ["e", "f", "g"]
    knobs:
      - ccw: 'wheelup'
        press: 'click'
        cw: 'wheeldown'Langage du code : JavaScript (javascript)

Puis valider la configuration :

$ sudo ./ch57x-keyboard-tool validate < y-3-buttons-mapping.yaml
config is valid 👌

Si la configuration est valide on la charge dans l’appareil :

$ sudo ./ch57x-keyboard-tool upload < my-3-buttons-mapping.yaml
$ pe,

Le truc fonctionne nickel. Par contre si vous êtes un gros nerd comme moi et que votre clavier n’est pas configuré en azerty (qwerty même) alors le mapping sera à revoir en fonction du votre (bépo chez moi 😉

Ce contenu a été publié dans Non classé, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *