kernel v5.3 will introduce a new BPF feature: loops. This makes it possible to decode IR based on raw IR. This means the keymap does not list a specific protocol or protocol decoder; for each key it simply list the pulses and spaces that make up that key.
Here is an example based on the blaupunkt remote.
1 | [[protocols]] |
So for each key, in the raw string the + denotes a pulse and the - a space. The + and - prefixes are actually optional, since the position in the string determines whether it is pulse or space. To load these keymaps, you’ll need a git ir-keytable and kernel v5.3 or later.
The script lircd2toml.py to convert lircd remote conf into ir-keytable toml formats now also supports raw_codes. I’m very excited that this now means we support the vast majority of lirc remotes.
Having raw IR in keymaps makes them much more useful for sending IR too. So, ir-ctl now supports sending keys from keymaps. Save the above keymap to blaupunkt.toml, and you send keys like so:
1 | ir-ctl -k blaupunkt.toml -K KEY_VOLUMEUP |
This means that – as far as I know – we have feature parity with the lirc framework. However no daemon is required at all and it’s a much more modern setup.