¿Cómo configurar Ubuntu para activar automáticamente NumLock cuando se conecta un teclado externo y se apaga cuando no lo está?

12

Tener NumLock activado es conveniente cuando se usa un teclado externo de tamaño completo (que tiene un teclado) y es muy inconveniente cuando se usa el teclado incorporado de la computadora portátil (que coloca dígitos en lugar de letras en el lado derecho del teclado a menos que se presione Fn).

Por lo tanto, tengo que activar NumLock cada vez que conecto un teclado externo (o arrancar con él conectado) y apagarlo cada vez que desconecto un teclado externo (o arranco con él desconectado). Y hago esto con frecuencia porque prefiero usar un teclado externo de tamaño completo, pero no tengo suficientes (solo 3) puertos USB para enchufarlo junto con un mouse, un módem 3G y una unidad de disco duro / flash externa.

¿Puedo automatizar esto? Parece una tarea muy formalizable, lógicamente simple: si hay un teclado USB conectado (¿hay algún dispositivo en / dev presente?) - NumLock está encendido, si no - NumLock está apagado. El teclado incorporado de mi computadora portátil está conectado a PS / 2, el externo es USB.

Tal vez debería codificarlo yo mismo, pero ¿dónde ponerlo en este caso?

Yo uso Ubuntu 10.10.

Ivan
fuente

Respuestas:

14

En primer lugar, instale numlockx ( haga clic aquí para instalar numlockx ). Básicamente, esto le permite escribir scripts para establecer el estado de Num Lock; consulte la página de manual de numlockx para obtener más detalles.

A continuación, debemos comenzar a profundizar en la diversión de las reglas de udev. Primero necesitamos descubrir cómo se identifica el teclado. Puedes hacer esto por

ls /dev/input/by-id/

Esto debería darle algunos nombres de archivo legibles por humanos (que son enlaces suaves al nombre verdadero no particularmente legible). Mi teclado era

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

Entonces, necesitamos encontrar toda la información sobre el teclado. yo hice

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

Pero inserte su propio camino allí, por supuesto. Obtendrá mucha información, pero desea ver el primer bloque que nombra el teclado y tieneSUBSYSTEMS=="usb" . (En lugar del controlador USB o lo que sea). En mi caso eso fue:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

Entonces ahora tenemos suficiente información para escribir algunas reglas. Usa tu editor favorito para crear/etc/udev/rules.d/10-local.rules y poner:

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

Nuevamente, ingrese el nombre de su teclado aquí, y el ATTRS si es diferente. Entonces debería funcionar :)

Tenga en cuenta que no he podido probar esto, aunque he ejecutado todos los comandos hasta crear el archivo de reglas. Y las fuentes en caso de que necesite investigar más son:

Hamish Downer
fuente
Muchas gracias excelente. Para ser sincero, no esperaba obtener una respuesta tan informativa. Desearía poder otorgarle más que solo corregir y +1. Espero que todos los que han protagonizado y votado por mi pregunta también lo premien.
Ivan
0

No estoy seguro de lo que estoy haciendo de manera diferente, porque mi bloqueo numérico en este teclado está predeterminado (este es un teclado Mac Pro Aluminium). Aquí hay algunas instrucciones. que deberían hacer el truco.

¡Espero que esto ayude!

Craig Maloney
fuente
0

Si está utilizando gnome-shell, entonces podría instalar el estado Numlock y Capslock en la extensión "Lock Keys" del panel. Por favor, lo encontré aquí

Tatui1969
fuente