How to change Function (Fn) Key behavior on wireless Logitech keyboard

Solaar is a graphical utility that has the ability to configure the Fn key functionality on newer devices:

Solaar screenshot with Fn function swap configuration

Since Ubuntu 15.04 (Vivid), Solaar can be installed from the repositories (sudo apt-get install solaar). After installation, you can search for Solaar in the applications menu and start it from there.

A command line interface is also available. Example usage:

$ solaar show
...
  2: Wireless Illuminated Keyboard K800
...
$ solaar config 2
fn-swap = False
$ solaar config 2 fn-swap on
fn-swap = True

Note that these settings are not persistent, you will loose it after reboot. This may change in future versions of Solaar.


I have previously created the ltunify tool which is a Unifying tool that is able to communicate in the older HID++ 1.0 protocol. Until the next version of Solaar is released (current version is 0.8.7), you can use ltunify to toggle the Fn key on an older device such as the K800 keyboard.

Installation instructions (taken from https://askubuntu.com/a/114089/6969):

sudo apt-get install git gcc
git clone https://git.lekensteyn.nl/ltunify.git -b fkeyswap
cd ltunify
make install-home

The command ltunify fkeyswap shows the current status:

$ sudo ltunify fkeyswap 
F key functions are not swapped

To swap the functionality, run ltunify fkeyswap on:

$ sudo ltunify fkeyswap on
F key functions are now swapped

There is also an off action:

$ sudo ltunify fkeyswap off
F key functions are now normal

Please leave a comment if it does not work so it can be fixed. The above functionality uses undocumented hardware registers.


You no longer need a ppa to install this in Ubuntu 15.08 wily. Just type

sudo apt-get install solaar

at the command line.

Additionally, if you are using Unity or Gnome Shell, you can use the following command instead:

sudo apt-get install solaar-gnome

For wired keyboard like k290 use https://github.com/milgner/k290-fnkeyctl and execute command

/usr/local/sbin/k290_fnkeyctl