Reasignación de teclado multimedia

Reasignación de teclado multimedia

Tengo un control remoto G7BTS, que tiene teclado y botones multimedia. La mayoría de sus botones funcionan bien excepto el botón "OK".

El botón Aceptar tiene un código clave 353, que significa KEY_SELECT. Pero mi ubuntu 20.04 no lo reconoce.

A continuación se muestran algunas investigaciones que he realizado:

  1. sudo evtest

producción:

/dev/input/event9:  G7BTS Keyboard
/dev/input/event10: G7BTS Mouse
/dev/input/event11: G7BTS Consumer Control
/dev/input/event12: G7BTS System Control
  1. grep "" /sys/class/input/event11/device/id/*

producción:

/sys/class/input/event11/device/id/bustype:0005
/sys/class/input/event11/device/id/product:0041
/sys/class/input/event11/device/id/vendor:045e
/sys/class/input/event11/device/id/version:0300
  1. sudo evtest /dev/input/event11

producción:

Testing ... (interrupt to exit)
Event: time 1640250050.701930, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0041
Event: time 1640250050.701930, type 1 (EV_KEY), code 353 (KEY_SELECT), value 1
Event: time 1640250050.701930, -------------- SYN_REPORT ------------
  1. /etc/udev/hwdb.d/60-keyboard.hwdb

Intenté reasignar el botón Aceptar para "entrar".

Contenido del archivo 60-keyboard.hwdb:

# G7BTS
evdev:input:b0005v045Ep0041*
 KEYBOARD_KEY_c0041=enter
  1. sudo udevadm hwdb --test='evdev:input:b0005v045ep0041*'

producción:

KEYBOARD_KEY_c0041=enter

Hasta ahora, todavía no puedo ver ningún resultado en xev cuando presiono el botón OK.

Cualquier sugerencia y ayuda será apreciada.

Respuesta1

Gracias a todos.

Me tomó varios días encontrar la solución, finalmente encontré el camino correcto.

Referencia

Asignar códigos de escaneo a códigos clave

Fondo

La versión 11 del protocolo X solo admite códigos clave de un solo byte. Por lo tanto, los códigos clave superiores a 255 se ignoran. Ubuntu 20.04 LTS, hasta ahora, todavía usa la versión 11 del protocolo X.

Mi teclado remoto G7BTS tiene un botón "OK". Este botón tiene un código clave de 353. Dentro de “xev”, no sucede nada cuando se presiona este botón.

Solución

Brevemente, la solución es crear un archivo de configuración hwdb, que se utiliza para reasignar ciertas claves a otras claves.

udev

udev proporciona una función incorporada llamada hwdb para mantener el índice de la base de datos de hardware en /etc/udev/hwdb.bin. La base de datos se compila a partir de archivos con extensión .hwdb ubicados en los directorios /usr/lib/udev/hwdb.d/, /run/udev/hwdb.d/ y /etc/udev/hwdb.d/. El archivo de mapeo predeterminado de códigos de escaneo a códigos clave es /usr/lib/udev/hwdb.d/60-keyboard.hwdb.

Dispositivos de entrada genéricos (también teclados USB) identificados por las modalidades del kernel USB:

evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>

donde <bus_id>, <vendor_id> y <version_id> son los ID de versión, producto y proveedor en mayúsculas hexadecimales de 4 dígitos

Cómo encontrar esos identificadores anteriores es la clave

install hardinfo
sudo apt install hardinfo
software – System Profiler – Input Devices – G7BTS Comsumer Control
Device Information
 Name       G7BTS Comsumer Control
 Type       keyboard
 Bus        0x0005
 Vender     0x045e
 Product    0x0041
 Version    0x0300

Otra cosa de importación es obtener el código de escaneo del botón "Aceptar".

install evtest
sudo apt-get install evtest
sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Lid Switch
/dev/input/event1:    Sleep Button
/dev/input/event2:    Power Button
/dev/input/event3:    AT Translated Set 2 keyboard
/dev/input/event4:    SynPS/2 Synaptics TouchPad
/dev/input/event5:    TPPS/2 IBM TrackPoint
/dev/input/event6:    ThinkPad Extra Buttons
/dev/input/event7:    Video Bus
/dev/input/event8:    Integrated Camera: Integrated C
/dev/input/event9:    G7BTS Keyboard
/dev/input/event10:    G7BTS Mouse
/dev/input/event11:    G7BTS Consumer Control
/dev/input/event12:    G7BTS System Control
/dev/input/event13:    HDA Intel PCH Mic
/dev/input/event14:    HDA Intel PCH Dock Mic
/dev/input/event15:    HDA Intel PCH Headphone
/dev/input/event16:    HDA Intel PCH Dock Headphone
/dev/input/event17:    HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event11:    HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event19:    HDA Intel PCH HDMI/DP,pcm=8
Select the device event number [0-19]: ^C

Preste atención a "/dev/input/event11"

sudo evtest /dev/input/event11

Luego presione el botón "OK" y la salida estará debajo

Event: time 1640238746.775220, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0041
Event: time 1640238746.775220, type 1 (EV_KEY), code 353 (KEY_SELECT), value 0
Event: time 1640238746.775220, -------------- SYN_REPORT ------------

Preste atención al "valor c0041". Este valor c0041 es el código de escaneo del botón "OK".

Crea el archivo hwdb

Ahora tenemos los identificadores y el código de escaneo que necesitamos. Colóquelos en los “Dispositivos de entrada genéricos (también teclados USB) identificados por los modalias del kernel USB” arriba, y finalmente tenemos el archivo de configuración G7BTS.hwdb a continuación:

evdev:input:b0005v045Ep0041e0300*
 KEYBOARD_KEY_c0041=enter

En el contexto, el botón "Aceptar" se asigna a la tecla "Intro". Puede asignarlo a cualquier clave que desee.

Poner archivo en destino

sudo mv G7BTS.hwdb /etc/udev/hwdb.d/

Actualizar

sudo udevadm hwdb --update
sudo udevadm trigger --verbose 

Prueba

sudo udevadm hwdb --test='evdev:input:b0005v045Ep0041e0300*'

el resultado es

KEYBOARD_KEY_c0041=enter

El fin

Esos son todos los pasos para reasignar claves. Esas reasignaciones aún funcionan después del reinicio.

Respuesta2

Obtuve un teclado externo funcionando en Ubuntu 20.04 usando la información dehttps://www.foell.org/justin/remapping-keyboard-keys-in-ubuntu-with-udev-evdev/

  1. Úselo sudo evtestpara encontrar información sobre su teclado, como:
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x5ac product 0x24f version 0x11b
Input device name: "Keychron K6 Keyboard"
  1. utilícelo sudo evemu-describepara encontrar las propiedades del teclado, incluidos los ceros iniciales. En la salida puedes encontrar algo como:
# Properties:
N: Keychron K6 Keyboard
I: 0005 05ac 024f 011b
  1. cree el archivo .hwdb como lo hizo peroincluir todos los 000 principales, yponer cualquier símbolo hexadecimal en mayúsculascomo:
# Input device ID: bus 0x5 vendor 0x5ac product 0x24f version 0x11b
# evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>
evdev:input:b0005v05ACp024F*

  1. No es necesario que reinicies tu sistema, solo haz:
$ sudo systemd-hwdb update
$ sudo udevadm trigger
  1. puedes verificar si tu teclado se ha asignado correctamente usando $ udevadm info /dev/input/event20(reemplaza event20 con el evento de tu teclado)

información relacionada