¿Cómo funcionan las teclas Fn?


26

Me gusta saber cómo Fnfuncionan las teclas en mi computadora portátil. Creo que existe un módulo de kernel que captura la Fnclave y llama a algunos scripts para hacer algo. En mi laptop, Fn+ F2cambio de potencia de la conexión inalámbrica y bluetooth.

esta es la salida de acpi_listen, cuando presiono Fn+F2

hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009

y, el seguimiento es salida de xevpara Fn+F2

keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release

Supongo que cada vez que presioné Fn+ F2se saltaron dos eventos. Traté de encontrar qué acciones se ejecutan para estas claves. cualquier idea apreciada;)

Respuestas:


26

Synetech da una explicación muy legible sobre las Fnclaves aquí

Detalles técnicos

Cuando presiona una tecla en un teclado, el controlador del teclado (un pequeño chip IC dentro del teclado) detecta el circuito eléctrico y lo procesa para decodificar qué tecla se presionó y luego envía el código de escaneo a la placa base . El sistema operativo recibe el código de escaneo del BIOS y luego realiza cualquier acción que necesite para procesar esa pulsación de tecla.

Con la mayoría de las teclas, esto es lo suficientemente simple. Si presiona la A tecla, su controlador de teclado envía el código de escaneo a la placa base que luego lo pasa al sistema operativo que a su vez generalmente imprime 'A'. (Si el sistema operativo detecta que una de las teclas modificadoras está presionada actualmente, entonces puede hacer algo diferente. De hecho, puede configurarla para que haga lo que quiera cuando Ase presiona la tecla con o sin modificadores).

Ahora la Fnclave es especial. Cuando lo presiona solo, no sucede nada porque es exclusivamente una tecla modificadora y no (generalmente) está destinado a hacer nada por sí solo. Cuando lo sostiene y presiona otra tecla, el controlador del teclado lo detecta y mira en su tabla integrada para ver si es una combinación conocida. Si el combo no está en la tabla, simplemente lo ignora, pero si el combo está en la tabla, busca el código de escaneo asociado y lo envía.

¿Qué termina viendo el sistema operativo? No , no ver el código de rastreo para la Fnclave y el código de rastreo para la otra clave. En cambio, ve un único código de escaneo asociado con cualquier función para la que se haya configurado el combo Fn. Por ejemplo, si el fabricante de la computadora portátil ha configurado el combo Fn+ Down Arrowpara reducir el volumen, entonces el sistema operativo ve el código de escaneo asociado con el Volume Down, que algunos teclados realmente tienen.

También tenga en cuenta que la Fnclave funciona independientemente del sistema operativo.

Además, este artículo puede ayudarlo a orientarse en la dirección correcta:

El núcleo tiene su propia scancodepara keycodetabla de asignación, por lo que se asigna un determinado código de rastreo a un código clave. Puede buscar en /usr/include/linux/input.h para ver qué usa su núcleo para el mapeo de código de escaneo a código clave: se llama a keymap.


Posdata

Es posible que deba renegar de alguna manera en la afirmación anterior de que las Fnclaves funcionan de manera completamente independiente del sistema operativo; sin entrar en más detalles técnicos aquí, el resultado parece ser que su sistema operativo podría no "admitir" todas o algunas de las Fnteclas de su teclado , vea, por ejemplo:


1
Gracias, información interesante sobre las teclas Fn. En realidad, quiero encontrar qué parte del sistema operativo se scancodeasocia con, por ejemplo, "código clave 238".
soroosh

3
¿Quizás este artículo pueda ayudarlo a orientarse en la dirección correcta? "El núcleo tiene su propia scancodepara keycodetabla de asignación, por lo que se asigna un determinado código de rastreo a un código clave Usted puede mirar en /usr/include/linux/input.h para ver cuáles son sus usos del kernel para scancode a la cartografía de código clave -. Se le llama keymap".
chiflado sobre natty

1
Ese artículo es perfecto, esto es lo que estoy buscando
Soroosh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.