Como cambiar el uso de la tecla "Fn" en teclados Apple en Linux


OpenSuse es una distribución que me ha sorprendido mucho recientemente. A finales del año 2014 probé OpenSuse 13.1 y mi experiencia fue muy satisfactoria, tanto que esperé ansiosamente la salida de la versión 13.2. Utilicé por varios meses esta distribución y ahora utilizo OpenSuse Tumbleweed.

A pesar de todo esto, existe un pequeño "problema". Antes que nada debo decir que poseo un teclado Apple inalámbrico bluetooth color aluminio. Me resulta muy cómodo de escribir a pesar de que frecuentemente extraño las teclas Inicio, Fin y Suprimir. En las distribuciones GNU/Linux modernas puede utilizarse muy bien (gracias al controlador nativo del kernel linux 3), funcionando a la perfección todas las teclas, incluso las multimedia.

Justo en estas teclas es donde OpenSuse tiene una diferencia en relación con las demás distribuciones: para utilizar las teclas multimedia es necesario presionarlas en combinación con la tecla 'Fn'. 

Después de investigar al respecto, descubrí que el problema es un parámetro en el archivo controlador del kernel para este teclado: 

/drivers/hid/hid-apple.c línea 42:

Modo de la tecla Fn en los teclados Apple

(0 = disabled, [1] = fkeyslast, 2 = fkeysfirst)


Esto significa lo siguiente:
  • 0 = Tecla Fn deshabilitada
  • 1 = Tecla Fn presionada por defecto
  • 2 = Tecla Fn no presionada por defecto
La opción que deseo en este caso es la '1', tal y como funcionaría este teclado en una computadora Apple.

En este punto tenemos dos opciones:
  1. Bajar el código fuente del kernel, modificar este valor en el archivo correspondiente y compilar el kernel.
  2. Modificar el valor "al vuelo" de la configuración del teclado. 
En mi caso utilizaré la segunda opción porque simplemente es más rápido y sencillo, siendo la primera más divertida pero un poco más tardada.

Para este caso basta con ejecutar el comando siguiente con privilegios de root:

echo 1 > /sys/module/hid_apple/parameters/fnmode
Inmediatamente después, las teclas multimedia funcionarán como lo esperamos. Sin embargo, la configuración se pierde al reiniciar/apagar el sistema. 

Una solución rápida es añadir este comando al inicio del sistema para que se ejecute al arranque del sistema operativo. Para esto habría que agregar al script especial /etc/rc.d/boot.local que ejecutará este comando al arranque. El contenido del archivo quedaría algo similar a este:


#! /bin/sh
#
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany.  All rights reserved.
#
# Author: Werner Fink, 1996
#         Burchard Steinbild, 1996
#
# /etc/init.d/boot.local
#
# script with local commands to be executed from init on system startup
#
# Here you should add things, that should happen directly after booting
# before we're going to the first run level.
#
echo 1 > /sys/module/hid_apple/parameters/fnmode

Ahora solo guardamos el archivo, cabe mencionar que debemos tener privilegios de administrador para editarlo. 

Con esto las teclas especiales ya funcionarán como lo esperamos.

Espero que esta pequeña guía les sea de utilidad. 

Comentarios

Entradas más populares de este blog

Cómo habilitar y configurar el módulo userdir de Apache2 y PHP5 en Ubuntu

Instalar Spotify + Blockify Ubuntu 17.04

Instalar kde-connect en cualquier escritorio distinto a KDE Plasma en OpenSUSE