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