Introduction

When I last looked for a new keyboard I ended up with the IQUNIX M80 since it looks pretty darn cute and is, at least in terms of mechanical keyboards, very affordable at $99 with discounts.

Picture of IQUNIX M80 in Persian version

Where are my function keys

One of the first things I’ve noticed upon receiving it is the function keys refusing to do their job. Pressing F12 for example just increased the volume, as you’d expect only while holding FN. This behavior seemed familiar from Apple keyboards, so I went to take a look into lsusb and my suspicions couldn’t have been more correct.

➜  ~ lsusb                                         
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05ac:024f Apple, Inc. Aluminium Keyboard (ANSI)

The keyboard gets detected as an Apple keyboard, so Linux loads its apple_hid driver which defaults to this behavior. Luckily for us, this can be modified in 2 ways.

The Fix

First, to see if this is actually the cause, the behavior should be changed temporarily via

echo 2 | sudo tee -a /sys/module/hid_apple/parameters/fnmode

If this fixed the issue, the change can be made permanent by creating the file /etc/modprobe.d/hid_apple.conf with the following contents:

options hid_apple fnmode=2

Credits

Apple keyboard fix taken from wiki.archlinux.org.