Después de pelearme un buen rato con mi teclado y el launcher web de Keychron, por fin di con la solución. Si usas Arch Linux (o una distro similar) y el teclado aparece como conectado pero no termina de funcionar en el launcher… esto te interesa.
El problema
El escenario era el siguiente:
- El navegador detectaba el dispositivo HID.
- Aparecía el mensaje tipo "HID Device Connected".
- Pero el ID mostraba algo como
0000-0000. - El layout no cargaba.
- El teclado no era configurable desde el launcher.
Es decir: el sistema veía el teclado, pero el navegador no podía usarlo realmente.
Y eso en Linux casi siempre significa lo mismo: permisos.
Diagnóstico rápido
Primero comprobé si algún proceso estaba usando el dispositivo:
sudo fuser -v /dev/hidraw*Nada sospechoso.
Después revisé los permisos reales:
ls -l /dev/hidraw*Y ahí estaba el problema. Muchos dispositivos hidraw aparecían así:
crw------- 1 root root ...Eso significa que solo root puede acceder. Y si Chrome no puede abrir el endpoint HID… el launcher no puede hacer nada.
La causa real
Mi regla udev era esta:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", TAG+="uaccess"En teoría funciona. En la práctica (según entorno gráfico y configuración de logind), puede que no aplique correctamente los permisos. En mi caso, no los estaba aplicando.
La solución definitiva
La solución fue crear una regla udev explícita y añadir mi usuario al grupo correcto.
1. Regla udev correcta
Editar el archivo de reglas:
sudo nano /etc/udev/rules.d/99-keychron.rulesY dejarlo así:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", MODE="0660", GROUP="input"Esto fuerza que los dispositivos HID del teclado tengan permisos de lectura/escritura y pertenezcan al grupo input.
2. Añadir el usuario al grupo input
sudo usermod -aG input tu_usuario⚠️ Importante: hay que cerrar sesión completamente (logout real o reinicio). Si no, el grupo no se aplica.
3. Recargar reglas
Después de volver a entrar:
sudo udevadm control --reload-rules
sudo udevadm triggerAhora los dispositivos deberían verse así:
crw-rw---- 1 root input ...Y el comando groups debe incluir input en la lista.
Resultado
Después de esto:
- Cerré Chrome completamente.
- Conecté el teclado en modo cable.
- Abrí el launcher.
- Seleccioné el dispositivo correcto (no el dongle 2.4G).
Y… bingo. El layout cargó perfectamente.
Qué estaba pasando realmente
El navegador detectaba el dispositivo HID, pero no podía abrir el descriptor real por falta de permisos. Por eso aparecía ID: 0000-0000. Es un síntoma clásico de permisos en /dev/hidraw.
En Linux, si algo USB se detecta pero la aplicación no puede usarlo, en el 90% de los casos es un problema de udev o de grupos.
Conclusión
Si usas Arch Linux y el launcher web no conecta correctamente:
- Revisa permisos en
/dev/hidraw* - Crea una regla
udevexplícita - Añade tu usuario al grupo
input - Haz logout completo
Y debería funcionar sin necesidad de flashear firmware ni usar soluciones raras.
Si este post te ahorra una hora de frustración, misión cumplida 😄
¿Te ha sido útil?
Ayúdame a mejorar con tu puntuación y comentarios.
Comentarios
Los comentarios están gestionados por GitHub Discussions. Necesitas una cuenta de GitHub para participar. ¡Es gratis y rápido!