Solución usando halevt
Según las páginas del manual, se halevt
trata de un controlador genérico para eventos HAL. Está obsoleto y reemplazado por udev
, pero como no sé lo suficiente udev
, daré una halevt
solución.
EDITAR: después de un sudor serio, logré hacer esto udev
. Mira mi otra respuesta .
Lo usaré vim
para editar archivos, pero si no lo sabe vim
, puede reemplazarlo por nano
o gedit
.
Instalar halevt
sudo apt-get update && sudo apt-get install halevt
Determinar qué eventos desea vincular a un script
Detenga el halevt
demonio que ya se está ejecutando:
sudo /etc/init.d/halevt stop
Ahora vea si halevt
puede reconocer los eventos de las teclas que desea usar, inicie el oyente:
sudo -u halevt halevt -fig:plugdev
Ahora presione la tecla de función en su teclado al que desea vincular el script. Sé que el OP quiere que sus teclas de brillo funcionen, así que vamos con eso. La salida para las teclas de brillo debería verse así:
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)
Puede ver que se transmiten los eventos brightness-down
y brightness-up
.
Enlace el evento a un script
Ahora edite el archivo /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
y agregue las siguientes líneas (lo hice en la parte inferior, justo antes </halevt:Configuration>
):
<halevt:Device match="hal.info.category = input">
<halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>
<halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>
</halevt:Device>
donde, por supuesto, debe cambiar value
al evento que recibió del oyente y exec
mediante el comando que desea ejecutar.
Otorgue al usuario de halevt permiso para ejecutar el comando o la secuencia de comandos.
Dado que el halevt
demonio se ejecuta como halevt
usuario, debe otorgarle permiso para hacer lo que especificó exec
.
Ejecutar (recuerde reemplazar vim
por el editor de su elección)
sudo EDITOR=vim visudo
y agregue las siguientes líneas en la parte inferior
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
y guardar y salir.
Asegúrese de que su script sea ejecutable
sudo chmod +x /home/user/brightness-script.sh
Inicie el demonio halevt nuevamente
sudo /etc/init.d/halevt start
¡Y debería estar funcionando!
udev
. Pero siéntase libre de seguir con la otra solución, lo importante es que está funcionando;)E: Unable to locate package halevt
el 14.04.Solución usando udev
Dado que HAL está en desuso y
udev
ahora se usa, este enfoque es preferible a mi otra respuesta (aunque creo que la solución que usa HAL es más simple).Sin embargo, para muchas teclas de función, simplemente puede usar Configuración del sistema> Teclado> Atajos para enlazar un script, ¡intente esto primero! Te ahorra muchos problemas. Por ejemplo, las teclas de brillo esto no funciona (no tengo ni idea de por qué no), así que si quieres saber cómo cambiar el comportamiento de, por ejemplo, las teclas de brillo, sigue leyendo.
NOTA : Si está ejecutando una computadora portátil Samsung, puede reparar todas las teclas de función (según el modelo) instalando el
samsung-tools
paquete desde http://www.voria.org/forum/Este tutorial asume que usted sabe cómo usar una terminal y usa el
vim
editor. Si no sabevim
, reemplácelo en los comandos por cualquieragedit
onano
.Determinando tu teclado
debería imprimir los teclados que están conectados a la computadora, en mi caso
Ahora hay dos opciones:
Teclados USB :
si desea reasignar su teclado USB, inspecciónelos ejecutando
donde debe reemplazar el 9 en la declaración awk por el número correcto. La salida debe ser similar a
que indica correctamente que mi teclado se maneja a través de mi receptor USB Logitech (entrada / evento7 resultó ser mi mouse Logitech G9 que tiene algunos botones programables).
Teclado de la computadora portátil :
si desea reasignar el teclado de su computadora portátil, debe recordar el número para el
AT keyboard
que es 4 en mi caso. También obtenga la información de dmi para su computadora portátil:que es en mi caso
y
que es en mi caso
Determine su asignación actual de sus teclas de función
Ahora podemos determinar nuestro mapeo de teclas actual escuchando el teclado (inserte el número correcto)
puede salir de este comando usando Escel teclado o Ctrl+ cen otro teclado.
Si su pantalla comienza a desplazarse hacia abajo con mucha fuerza, presione Escy Ctrl+ cvarias veces e intente nuevamente con
o, si aún tiene el problema de desplazamiento
En el último caso, todavía tendrá el desplazamiento, pero si presiona las teclas de funciones, deben ir a
~/keymap.log
donde pueda leerlas más tarde.Ahora podemos verificar la asignación actual de sus teclas de función presionándolas, lo que debería darle una lista como (este es mi Fn+ a F1través de Fn+ F12):
Ahora escriba los códigos de escaneo para los que desea que cambie el comportamiento.
Cambiar los códigos clave para los códigos de escaneo
Si ve que el código de la llave claramente no cubre lo que espera que haga la llave, puede mirar
/usr/include/linux/input.h
debajo de Teclas y botones para ver si hay un código de llave que coincida mejor con lo que realmente quiere que suceda. Los códigos clave están en el formatoKEY_KEYCODE
y debe escribir la parte posteriorKEY_
en minúsculas. A veces, cambiar esto es suficiente para resolver el problema.Sin embargo, las teclas de brillo a menudo tienen el código clave correcto asociado con ellas, y esto es lo que no les permite reasignarlas. Por lo tanto, debemos cambiarlos a otros códigos clave. Vamos a utilizar
prog1
yprog2
para este ejemplo porque estos no están en uso en mi equipo, sin embargo también se puede utilizarf13
a travésf24
of20
por mediof24
si tiene un teclado Apple que tiene F1a través de F19las teclas.Cree un mapa de teclas personalizado : cree
un archivo de mapa de teclas en el directorio
/lib/udev/keymaps
con un nombre adecuado, eche un vistazo a la salida dels /lib/udev/keymaps
para ver los nombres adecuados. Voy concustom-brightness
el propósito de esta pregunta.e ingrese los códigos de escaneo de las teclas que desea cambiar, seguidos de los códigos de escaneo que desea que tengan. Mi
custom-brightness
aspecto es este:Cree un archivo de liberación de clave personalizado. Solo si está cambiando el teclado de su computadora portátil : a
veces, el evento de liberación de la tecla no se envía correctamente, lo que hace que la computadora se bloquee. Para evitar esto, también escribiremos un archivo de liberación de clave personalizado
este archivo debe contener los mismos códigos de escaneo, el mío parece
Asegúrese de que las nuevas asignaciones estén cargadas en los archivos de reglas.
Ahora debemos asegurarnos de que sus asignaciones estén cargadas. Podemos hacer esto editando
/lib/udev/rules.d/95-keymap.rules
, por lo que es inteligente hacer una copia de seguridadNuevamente tenemos dos opciones:
Teclados USB :
dado que tiene un teclado USB, debe agregar su entrada
LABEL="keyboard_usbcheck"
y debe estar más allá de las otras entradas del fabricante de su teclado. Esto es porque mi teclado conya coincide con una de las reglas y, de lo contrario, se sobrescribe.
Agregue la siguiente regla, donde debe cambiar el
ID_VENDOR_ID
yID_MODEL_ID
y el nombre de su mapa de teclas adecuadamenteTeclado de la computadora portátil :
si se
/lib/udev/findkeyboards
informa que el teclado de su computadora portátilAT keyboard
debe ser su reglaLABEL="keyboard_vendorcheck"
, de lo contrario, colóquelo debajoLABEL="keyboard_modulecheck"
. Nuevamente colóquelo debajo de las otras entradas para el fabricante de su computadora portátil. Agregue la siguiente regla (SAMSUNG ELECTRONICS CO., LTD.
es un poco larga, así que usé un comodín ')Ahora también agregue una regla
/lib/udev/rules.d/95-keyboard-force-release.rules
después de hacer una copia de seguridadDe nuevo, bajo las otras entradas de su fabricante, agregue
Asegúrese de que udev cargue las nuevas reglas
Para cargar las nuevas reglas ejecute
NOTA:
udevadm control --reload-rules
(aún en las instrucciones de muchos sitios web) no funciona.Ahora verifique si las reglas fueron aplicadas con éxito por
que ahora debería informar sobre las teclas de brillo
Reasigne las claves en la Configuración del sistema
Si el último paso informó los códigos de clave correctos, las teclas comienzan a funcionar automáticamente (en caso de que primero tuvieran los códigos de clave incorrectos).
Para el brillo, todavía tiene que vincular las teclas a un script que ahora es posible usando Configuración del sistema> Teclado> Accesos directos .
Disfrutar
Notas :
Si sus claves tenían un código de clave incorrecto y fueron arregladas por este enfoque, siga las instrucciones en
/usr/share/doc/udev/README.keymap.txt.gz
(puede abrir esto sin extraer el usozless
) y envíe sus resultados a las direcciones de correo electrónico mencionadas allí, luego los cambios se pueden incluir en la próxima versión. ¡Muchos usuarios se beneficiarán!Muchas gracias a esta útil publicación de Vaidas Jablonskis.
fuente
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
también$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory