Scroll to navigation



ir-keytable - a swiss-knife tool to handle Remote Controllers.


ir-keytable [OPTION]... --device [/dev/input/event* device]
ir-keytable [OPTION]... --sysdev [rc class (f. ex. rc0)]
ir-keytable [OPTION]... [for using the rc0 sysdev]


ir-keytable is a tool that lists the Remote Controller devices, allows one to get/set rc keycode/scancode tables, set protocol decoder, test events generated by a rc device, and to adjust other Remote Controller options.

Note: You need to have read permissions on /dev/input for most of the options to work.


-a, --auto-load=CFGFILE
Auto-load a table, based on a configuration file. Only works with --sysdev.
-c, --clear
Clears the scancode to keycode mappings.
-d, --device=DEV
Use specified input device.
-D, --delay=DELAY
Sets the delay before repeating a keystroke.
-k, --set-key=SCANKEY
Set scancode to keycode mapping.
-p, --protocol=PROTOCOL
Comma separated list of kernel protocols or BPF protocol to enable. All other protocols are disabled.
-e, --parameter=PARAMETER
Comma separated list of parameters for the BPF protocol.
-P, --period=PERIOD
Sets the period to repeat a keystroke.
-r, --read
Read and show the current scancode to keycode mapping.
-s, --sysdev=SYSDEV
rc device to control
-t, --test
test if the rc device is generating events
-v, --verbose
Enables debug messages.
-w, --write=TABLE
Reads the protocols and scancode to keycode mapping from the TABLE file, and enables those on the rc device.
-?, --help
Prints the help message
Give a short usage message
-V, --version
print the v4l2-utils version

Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. Options can be combined together.

The options arguments are:

the /dev/input/event* device to control
the rc class as found at /sys/class/rc
a toml file with a list of protocols and scancode to keycode mappings.
a set of scancode1=keycode1,scancode2=keycode2.. value pairs
Comma separated list of kernel protocols to be enabled (case insensitive). Supported kernel protocols are: nec, rc-5, rc-6, jvc, sony, sanyo, rc-5-sz, sharp, mce-kbd, xmp, imon, other, all. It can also be a BPF protocol, e.g. manchester, rc_mm, pulse_distance, pulse_length. If it does not match any of these, it is taken to be the path of BPF decoder to be loaded.
Comma separated list of parameters for the BPF protocol being loaded. They have the format of name=value, where value is an number.
Delay before repeating a keystroke
Period to repeat a keystroke
configuration file that associates a driver/table name with a keymap file


On success, it returns 0. Otherwise, it will return the error code.


To list all connected Remote Controller devices:

To clean the keycode table and use a newer one:
ir-keytable -c -w /etc/rc_keymaps/nec_terratec_cinergy_xs.toml

To append more codes to the existing table:
ir-keytable -w /etc/rc_keymaps/nec_terratec_cinergy_xs.toml

To read the current keytable, on the second remote controller: ir-keytable -s rc1 -r

To enable NEC protocol and load a BPF protocol, with a parameter for the BPF protocol:
ir-keytable -p nec,pulse_distance -e pulse_header=9000


Report bugs to Linux Media Mailing List <>


Copyright (c) 2010-2014 by Mauro Carvalho Chehab.

License GPLv2: GNU GPL version 2 <>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Fri Oct 3 2014 v4l-utils 1.16.3