Skip to contentSkip to conversation

Add BPF decoders to ir-keytable

PATCH Superseded Sean Young 2 participants 9 messages Jul 13, 2018 – Jul 30, 2018

Subsystems (6)
Media (V4L/DVB) PowerPC Kbuild BPF +2 more subsystems

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore

Sean Young

author
#0 lore raw

v3 cover Add BPF decoders to ir-keytable

Once kernel v4.18 is released with IR BPF decoding, this can be merged to v4l-utils.

The idea is that IR decoders can be written in C, compiled to BPF relocatable object file. Any global variables can overriden, so we can supports lots of variants of similiar protocols (just like in the lircd.conf file).

The existing rc_keymap file format can't be used for variables, so I've converted the format to toml. An alternative would be to use the existing lircd.conf file format, but it's a very awkward file to parse in C and it contains many features which are irrelevant to us.

We use libelf to load the bpf relocatable object file.

After loading our example grundig keymap with bpf decoder, the output of ir-keytable is:

Found /sys/class/rc/rc0/ (/dev/input/event8) with:
Name: Winbond CIR
Driver: winbond-cir, table: rc-rc6-mce
LIRC device: /dev/lirc0
Attached BPF protocols: grundig
Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon Enabled protocols: lirc
bus: 25, vendor/product: 10ad:00f1, version: 0x0004
Repeat delay = 500 ms, repeat period = 125 ms

Alternatively, you simply specify the path to the object file on the command line:

$ ir-keytable -e header_pulse=9000,header_space=4500 -p ./pulse_distance.o

Derek, please note that you can now convert the dish lircd.conf to toml and load the keymap; it should just work. It would be great to have your feedback, thank you.

Changes since v3:
- lots of fixes
- Wrote python script to convert lircd.conf to toml file

Changes since v2:
- bpf parameters can be specified on the command line
- bpf decoders can be loaded by path without keymap

Sean Young (5):
keytable: add support for BPF based protocols
keytable: add bpf protocols
keytable: add toml keymap reader
keytable: convert keymaps to new toml format
ir-keytable: add tool to aid migration from lircd

 Makefile.am                                   |    4 +-
 configure.ac                                  |   15 +
 contrib/Makefile.am                           |    3 +-
 contrib/lircd2toml.py                         |  527 ++++
 include/linux/bpf.h                           | 2669 +++++++++++++++++
 utils/keytable/Makefile.am                    |   13 +-
 utils/keytable/bpf.c                          |  515 ++++
 utils/keytable/bpf.h                          |  110 +
 utils/keytable/bpf_load.c                     |  472 +++
 utils/keytable/bpf_load.h                     |   43 +
 utils/keytable/bpf_protocols/Makefile.am      |   21 +
 utils/keytable/bpf_protocols/bpf_helpers.h    |  315 ++
 utils/keytable/bpf_protocols/grundig.c        |  126 +
 utils/keytable/bpf_protocols/manchester.c     |  167 ++
 utils/keytable/bpf_protocols/pulse_distance.c |  156 +
 utils/keytable/bpf_protocols/pulse_length.c   |  152 +
 utils/keytable/bpf_protocols/rc_mm.c          |  139 +
 utils/keytable/gen_keytables.pl               |   33 +-
 utils/keytable/ir-keytable.1.in               |   18 +-
 utils/keytable/keytable.c                     |  532 +++-
 utils/keytable/rc_keymaps/adstech_dvb_t_pci   |   45 -
 .../rc_keymaps/adstech_dvb_t_pci.toml         |   48 +
 utils/keytable/rc_keymaps/af9005              |   37 -
 utils/keytable/rc_keymaps/af9005.toml         |   40 +
 utils/keytable/rc_keymaps/alink_dtu_m         |   19 -
 utils/keytable/rc_keymaps/alink_dtu_m.toml    |   23 +
 .../keytable/rc_keymaps/allwinner_ba10_tv_box |   15 -
 .../rc_keymaps/allwinner_i12_a20_tv_box       |   28 -
 utils/keytable/rc_keymaps/anysee              |   45 -
 utils/keytable/rc_keymaps/anysee.toml         |   49 +
 utils/keytable/rc_keymaps/apac_viewcomp       |   32 -
 utils/keytable/rc_keymaps/apac_viewcomp.toml  |   35 +
 utils/keytable/rc_keymaps/astrometa_t2hybrid  |   22 -
 .../rc_keymaps/astrometa_t2hybrid.toml        |   26 +
 utils/keytable/rc_keymaps/asus_pc39           |   40 -
 utils/keytable/rc_keymaps/asus_pc39.toml      |   44 +
 utils/keytable/rc_keymaps/asus_ps3_100        |   42 -
 utils/keytable/rc_keymaps/asus_ps3_100.toml   |   46 +
 .../keytable/rc_keymaps/ati_tv_wonder_hd_600  |   25 -
 .../rc_keymaps/ati_tv_wonder_hd_600.toml      |   28 +
 utils/keytable/rc_keymaps/ati_x10             |   49 -
 utils/keytable/rc_keymaps/ati_x10.toml        |   52 +
 utils/keytable/rc_keymaps/avermedia           |   37 -
 utils/keytable/rc_keymaps/avermedia.toml      |   40 +
 utils/keytable/rc_keymaps/avermedia_a16d      |   35 -
 utils/keytable/rc_keymaps/avermedia_a16d.toml |   38 +
 utils/keytable/rc_keymaps/avermedia_cardbus   |   55 -
 .../rc_keymaps/avermedia_cardbus.toml         |   58 +
 utils/keytable/rc_keymaps/avermedia_dvbt      |   35 -
 utils/keytable/rc_keymaps/avermedia_dvbt.toml |   38 +
 utils/keytable/rc_keymaps/avermedia_m135a     |   81 -
 .../keytable/rc_keymaps/avermedia_m135a.toml  |   85 +
 .../keytable/rc_keymaps/avermedia_m733a_rm_k6 |   45 -
 .../rc_keymaps/avermedia_m733a_rm_k6.toml     |   49 +
 utils/keytable/rc_keymaps/avermedia_rm_ks     |   28 -
 .../keytable/rc_keymaps/avermedia_rm_ks.toml  |   32 +
 utils/keytable/rc_keymaps/avertv_303          |   37 -
 utils/keytable/rc_keymaps/avertv_303.toml     |   40 +
 utils/keytable/rc_keymaps/az6027              |    3 -
 utils/keytable/rc_keymaps/az6027.toml         |    6 +
 utils/keytable/rc_keymaps/azurewave_ad_tu700  |   54 -
 .../rc_keymaps/azurewave_ad_tu700.toml        |   58 +
 utils/keytable/rc_keymaps/behold              |   35 -
 utils/keytable/rc_keymaps/behold.toml         |   39 +
 utils/keytable/rc_keymaps/behold_columbus     |   29 -
 .../keytable/rc_keymaps/behold_columbus.toml  |   32 +
 utils/keytable/rc_keymaps/budget_ci_old       |   46 -
 utils/keytable/rc_keymaps/budget_ci_old.toml  |   49 +
 utils/keytable/rc_keymaps/cec                 |   98 -
 utils/keytable/rc_keymaps/cec.toml            |  101 +
 utils/keytable/rc_keymaps/cinergy             |   37 -
 utils/keytable/rc_keymaps/cinergy.toml        |   40 +
 utils/keytable/rc_keymaps/cinergy_1400        |   38 -
 utils/keytable/rc_keymaps/cinergy_1400.toml   |   41 +
 utils/keytable/rc_keymaps/cinergyt2           |   38 -
 utils/keytable/rc_keymaps/cinergyt2.toml      |   41 +
 utils/keytable/rc_keymaps/d680_dmb            |   36 -
 utils/keytable/rc_keymaps/d680_dmb.toml       |   39 +
 utils/keytable/rc_keymaps/delock_61959        |   33 -
 utils/keytable/rc_keymaps/delock_61959.toml   |   37 +
 utils/keytable/rc_keymaps/dib0700_nec         |   71 -
 utils/keytable/rc_keymaps/dib0700_nec.toml    |   75 +
 utils/keytable/rc_keymaps/dib0700_rc5         |  181 --
 utils/keytable/rc_keymaps/dib0700_rc5.toml    |  185 ++
 utils/keytable/rc_keymaps/dibusb              |  112 -
 utils/keytable/rc_keymaps/dibusb.toml         |  115 +
 utils/keytable/rc_keymaps/digitalnow_tinytwin |   50 -
 .../rc_keymaps/digitalnow_tinytwin.toml       |   54 +
 utils/keytable/rc_keymaps/digittrade          |   29 -
 utils/keytable/rc_keymaps/digittrade.toml     |   33 +
 utils/keytable/rc_keymaps/digitv              |   56 -
 utils/keytable/rc_keymaps/digitv.toml         |   59 +
 utils/keytable/rc_keymaps/dm1105_nec          |   32 -
 utils/keytable/rc_keymaps/dm1105_nec.toml     |   35 +
 utils/keytable/rc_keymaps/dntv_live_dvb_t     |   33 -
 .../keytable/rc_keymaps/dntv_live_dvb_t.toml  |   36 +
 utils/keytable/rc_keymaps/dntv_live_dvbt_pro  |   54 -
 .../rc_keymaps/dntv_live_dvbt_pro.toml        |   57 +
 utils/keytable/rc_keymaps/dtt200u             |   19 -
 utils/keytable/rc_keymaps/dtt200u.toml        |   23 +
 utils/keytable/rc_keymaps/dvbsky              |   33 -
 utils/keytable/rc_keymaps/dvbsky.toml         |   37 +
 utils/keytable/rc_keymaps/dvico_mce           |   46 -
 utils/keytable/rc_keymaps/dvico_mce.toml      |   50 +
 utils/keytable/rc_keymaps/dvico_portable      |   37 -
 utils/keytable/rc_keymaps/dvico_portable.toml |   41 +
 utils/keytable/rc_keymaps/em_terratec         |   29 -
 utils/keytable/rc_keymaps/em_terratec.toml    |   32 +
 utils/keytable/rc_keymaps/encore_enltv        |   53 -
 utils/keytable/rc_keymaps/encore_enltv.toml   |   56 +
 utils/keytable/rc_keymaps/encore_enltv2       |   40 -
 utils/keytable/rc_keymaps/encore_enltv2.toml  |   43 +
 utils/keytable/rc_keymaps/encore_enltv_fm53   |   30 -
 .../rc_keymaps/encore_enltv_fm53.toml         |   33 +
 utils/keytable/rc_keymaps/evga_indtube        |   17 -
 utils/keytable/rc_keymaps/evga_indtube.toml   |   20 +
 utils/keytable/rc_keymaps/eztv                |   45 -
 utils/keytable/rc_keymaps/eztv.toml           |   48 +
 utils/keytable/rc_keymaps/flydvb              |   33 -
 utils/keytable/rc_keymaps/flydvb.toml         |   36 +
 utils/keytable/rc_keymaps/flyvideo            |   28 -
 utils/keytable/rc_keymaps/flyvideo.toml       |   31 +
 utils/keytable/rc_keymaps/fusionhdtv_mce      |   46 -
 utils/keytable/rc_keymaps/fusionhdtv_mce.toml |   49 +
 utils/keytable/rc_keymaps/gadmei_rm008z       |   32 -
 utils/keytable/rc_keymaps/gadmei_rm008z.toml  |   35 +
 utils/keytable/rc_keymaps/geekbox             |   13 -
 utils/keytable/rc_keymaps/geekbox.toml        |   17 +
 utils/keytable/rc_keymaps/genius_tvgo_a11mce  |   33 -
 .../rc_keymaps/genius_tvgo_a11mce.toml        |   36 +
 utils/keytable/rc_keymaps/gotview7135         |   35 -
 utils/keytable/rc_keymaps/gotview7135.toml    |   38 +
 utils/keytable/rc_keymaps/haupp               |   46 -
 utils/keytable/rc_keymaps/haupp.toml          |   49 +
 utils/keytable/rc_keymaps/hauppauge           |  173 --
 utils/keytable/rc_keymaps/hauppauge.toml      |  177 ++
 utils/keytable/rc_keymaps/hisi_poplar         |   30 -
 utils/keytable/rc_keymaps/hisi_poplar.toml    |   34 +
 utils/keytable/rc_keymaps/hisi_tv_demo        |   42 -
 utils/keytable/rc_keymaps/hisi_tv_demo.toml   |   46 +
 utils/keytable/rc_keymaps/imon_mce            |   78 -
 utils/keytable/rc_keymaps/imon_mce.toml       |   82 +
 utils/keytable/rc_keymaps/imon_pad            |   91 -
 utils/keytable/rc_keymaps/imon_pad.toml       |   94 +
 utils/keytable/rc_keymaps/imon_rsc            |   44 -
 utils/keytable/rc_keymaps/imon_rsc.toml       |   48 +
 utils/keytable/rc_keymaps/iodata_bctv7e       |   37 -
 utils/keytable/rc_keymaps/iodata_bctv7e.toml  |   40 +
 utils/keytable/rc_keymaps/it913x_v1           |   53 -
 utils/keytable/rc_keymaps/it913x_v1.toml      |   57 +
 utils/keytable/rc_keymaps/it913x_v2           |   48 -
 utils/keytable/rc_keymaps/it913x_v2.toml      |   52 +
 utils/keytable/rc_keymaps/kaiomy              |   33 -
 utils/keytable/rc_keymaps/kaiomy.toml         |   36 +
 utils/keytable/rc_keymaps/kworld_315u         |   33 -
 utils/keytable/rc_keymaps/kworld_315u.toml    |   37 +
 utils/keytable/rc_keymaps/kworld_pc150u       |   45 -
 utils/keytable/rc_keymaps/kworld_pc150u.toml  |   48 +
 .../keytable/rc_keymaps/kworld_plus_tv_analog |   32 -
 .../rc_keymaps/kworld_plus_tv_analog.toml     |   35 +
 utils/keytable/rc_keymaps/leadtek_y04g0051    |   51 -
 .../keytable/rc_keymaps/leadtek_y04g0051.toml |   55 +
 utils/keytable/rc_keymaps/lme2510             |   67 -
 utils/keytable/rc_keymaps/lme2510.toml        |   71 +
 utils/keytable/rc_keymaps/manli               |   32 -
 utils/keytable/rc_keymaps/manli.toml          |   35 +
 utils/keytable/rc_keymaps/medion_x10          |   54 -
 utils/keytable/rc_keymaps/medion_x10.toml     |   57 +
 .../keytable/rc_keymaps/medion_x10_digitainer |   50 -
 .../rc_keymaps/medion_x10_digitainer.toml     |   53 +
 utils/keytable/rc_keymaps/medion_x10_or2x     |   46 -
 .../keytable/rc_keymaps/medion_x10_or2x.toml  |   49 +
 utils/keytable/rc_keymaps/megasky             |   17 -
 utils/keytable/rc_keymaps/megasky.toml        |   20 +
 utils/keytable/rc_keymaps/msi_digivox_ii      |   19 -
 utils/keytable/rc_keymaps/msi_digivox_ii.toml |   23 +
 utils/keytable/rc_keymaps/msi_digivox_iii     |   33 -
 .../keytable/rc_keymaps/msi_digivox_iii.toml  |   37 +
 utils/keytable/rc_keymaps/msi_tvanywhere      |   25 -
 utils/keytable/rc_keymaps/msi_tvanywhere.toml |   28 +
 utils/keytable/rc_keymaps/msi_tvanywhere_plus |   37 -
 .../rc_keymaps/msi_tvanywhere_plus.toml       |   40 +
 utils/keytable/rc_keymaps/nebula              |   56 -
 utils/keytable/rc_keymaps/nebula.toml         |   60 +
 .../rc_keymaps/nec_terratec_cinergy_xs        |   86 -
 .../rc_keymaps/nec_terratec_cinergy_xs.toml   |   90 +
 utils/keytable/rc_keymaps/norwood             |   36 -
 utils/keytable/rc_keymaps/norwood.toml        |   39 +
 utils/keytable/rc_keymaps/npgtech             |   36 -
 utils/keytable/rc_keymaps/npgtech.toml        |   39 +
 utils/keytable/rc_keymaps/opera1              |   27 -
 utils/keytable/rc_keymaps/opera1.toml         |   30 +
 utils/keytable/rc_keymaps/pctv_sedna          |   33 -
 utils/keytable/rc_keymaps/pctv_sedna.toml     |   36 +
 utils/keytable/rc_keymaps/pinnacle310e        |   54 -
 utils/keytable/rc_keymaps/pinnacle310e.toml   |   57 +
 utils/keytable/rc_keymaps/pinnacle_color      |   43 -
 utils/keytable/rc_keymaps/pinnacle_color.toml |   46 +
 utils/keytable/rc_keymaps/pinnacle_grey       |   42 -
 utils/keytable/rc_keymaps/pinnacle_grey.toml  |   45 +
 utils/keytable/rc_keymaps/pinnacle_pctv_hd    |   27 -
 .../keytable/rc_keymaps/pinnacle_pctv_hd.toml |   31 +
 utils/keytable/rc_keymaps/pixelview           |   33 -
 utils/keytable/rc_keymaps/pixelview.toml      |   36 +
 utils/keytable/rc_keymaps/pixelview_002t      |   27 -
 utils/keytable/rc_keymaps/pixelview_002t.toml |   31 +
 utils/keytable/rc_keymaps/pixelview_mk12      |   32 -
 utils/keytable/rc_keymaps/pixelview_mk12.toml |   36 +
 utils/keytable/rc_keymaps/pixelview_new       |   32 -
 utils/keytable/rc_keymaps/pixelview_new.toml  |   35 +
 .../keytable/rc_keymaps/powercolor_real_angel |   36 -
 .../rc_keymaps/powercolor_real_angel.toml     |   39 +
 utils/keytable/rc_keymaps/proteus_2309        |   25 -
 utils/keytable/rc_keymaps/proteus_2309.toml   |   28 +
 utils/keytable/rc_keymaps/purpletv            |   36 -
 utils/keytable/rc_keymaps/purpletv.toml       |   39 +
 utils/keytable/rc_keymaps/pv951               |   32 -
 utils/keytable/rc_keymaps/pv951.toml          |   35 +
 utils/keytable/rc_keymaps/rc6_mce             |   65 -
 utils/keytable/rc_keymaps/rc6_mce.toml        |   69 +
 .../rc_keymaps/real_audio_220_32_keys         |   29 -
 .../rc_keymaps/real_audio_220_32_keys.toml    |   32 +
 utils/keytable/rc_keymaps/reddo               |   24 -
 utils/keytable/rc_keymaps/reddo.toml          |   28 +
 utils/keytable/rc_keymaps/snapstream_firefly  |   49 -
 .../rc_keymaps/snapstream_firefly.toml        |   52 +
 utils/keytable/rc_keymaps/streamzap           |   36 -
 utils/keytable/rc_keymaps/streamzap.toml      |   39 +
 utils/keytable/rc_keymaps/su3000              |   36 -
 utils/keytable/rc_keymaps/su3000.toml         |   40 +
 utils/keytable/rc_keymaps/tango               |   51 -
 utils/keytable/rc_keymaps/tango.toml          |   55 +
 utils/keytable/rc_keymaps/tbs_nec             |   35 -
 utils/keytable/rc_keymaps/tbs_nec.toml        |   38 +
 utils/keytable/rc_keymaps/technisat_ts35      |   34 -
 utils/keytable/rc_keymaps/technisat_ts35.toml |   37 +
 utils/keytable/rc_keymaps/technisat_usb2      |   34 -
 utils/keytable/rc_keymaps/technisat_usb2.toml |   38 +
 .../rc_keymaps/terratec_cinergy_c_pci         |   49 -
 .../rc_keymaps/terratec_cinergy_c_pci.toml    |   52 +
 .../rc_keymaps/terratec_cinergy_s2_hd         |   49 -
 .../rc_keymaps/terratec_cinergy_s2_hd.toml    |   52 +
 utils/keytable/rc_keymaps/terratec_cinergy_xs |   48 -
 .../rc_keymaps/terratec_cinergy_xs.toml       |   51 +
 utils/keytable/rc_keymaps/terratec_slim       |   29 -
 utils/keytable/rc_keymaps/terratec_slim.toml  |   33 +
 utils/keytable/rc_keymaps/terratec_slim_2     |   19 -
 .../keytable/rc_keymaps/terratec_slim_2.toml  |   23 +
 utils/keytable/rc_keymaps/tevii_nec           |   48 -
 utils/keytable/rc_keymaps/tevii_nec.toml      |   51 +
 utils/keytable/rc_keymaps/tivo                |   46 -
 utils/keytable/rc_keymaps/tivo.toml           |   50 +
 utils/keytable/rc_keymaps/total_media_in_hand |   36 -
 .../rc_keymaps/total_media_in_hand.toml       |   40 +
 .../rc_keymaps/total_media_in_hand_02         |   36 -
 .../rc_keymaps/total_media_in_hand_02.toml    |   40 +
 utils/keytable/rc_keymaps/trekstor            |   29 -
 utils/keytable/rc_keymaps/trekstor.toml       |   33 +
 utils/keytable/rc_keymaps/tt_1500             |   40 -
 utils/keytable/rc_keymaps/tt_1500.toml        |   44 +
 utils/keytable/rc_keymaps/tvwalkertwin        |   18 -
 utils/keytable/rc_keymaps/tvwalkertwin.toml   |   21 +
 utils/keytable/rc_keymaps/twinhan_dtv_cab_ci  |   54 -
 .../rc_keymaps/twinhan_dtv_cab_ci.toml        |   57 +
 utils/keytable/rc_keymaps/twinhan_vp1027_dvbs |   54 -
 .../rc_keymaps/twinhan_vp1027_dvbs.toml       |   58 +
 utils/keytable/rc_keymaps/videomate_k100      |   52 -
 utils/keytable/rc_keymaps/videomate_k100.toml |   55 +
 utils/keytable/rc_keymaps/videomate_s350      |   45 -
 utils/keytable/rc_keymaps/videomate_s350.toml |   48 +
 utils/keytable/rc_keymaps/videomate_tv_pvr    |   38 -
 .../keytable/rc_keymaps/videomate_tv_pvr.toml |   41 +
 utils/keytable/rc_keymaps/vp702x              |    3 -
 utils/keytable/rc_keymaps/vp702x.toml         |    6 +
 utils/keytable/rc_keymaps/winfast             |   57 -
 utils/keytable/rc_keymaps/winfast.toml        |   60 +
 .../keytable/rc_keymaps/winfast_usbii_deluxe  |   29 -
 .../rc_keymaps/winfast_usbii_deluxe.toml      |   32 +
 utils/keytable/rc_keymaps/wobo_i5             |    9 -
 utils/keytable/rc_keymaps/zx_irdec            |   41 -
 utils/keytable/rc_keymaps/zx_irdec.toml       |   45 +
 .../allwinner_ba10_tv_box                     |   15 -
 .../allwinner_ba10_tv_box.toml                |   18 +
 .../allwinner_i12_a20_tv_box                  |   28 -
 .../allwinner_i12_a20_tv_box.toml             |   31 +
 utils/keytable/rc_keymaps_userspace/wobo_i5   |    9 -
 .../rc_keymaps_userspace/wobo_i5.toml         |   12 +
 utils/keytable/rc_maps.cfg                    |  268 +-
 utils/keytable/toml.c                         | 1903 ++++++++++++
 utils/keytable/toml.h                         |  110 +
 v4l-utils.spec.in                             |    2 +-
 291 files changed, 14094 insertions(+), 5752 deletions(-)
 create mode 100755 contrib/lircd2toml.py
 create mode 100644 include/linux/bpf.h
 create mode 100644 utils/keytable/bpf.c
 create mode 100644 utils/keytable/bpf.h
 create mode 100644 utils/keytable/bpf_load.c
 create mode 100644 utils/keytable/bpf_load.h
 create mode 100644 utils/keytable/bpf_protocols/Makefile.am
 create mode 100644 utils/keytable/bpf_protocols/bpf_helpers.h
 create mode 100644 utils/keytable/bpf_protocols/grundig.c
 create mode 100644 utils/keytable/bpf_protocols/manchester.c
 create mode 100644 utils/keytable/bpf_protocols/pulse_distance.c
 create mode 100644 utils/keytable/bpf_protocols/pulse_length.c
 create mode 100644 utils/keytable/bpf_protocols/rc_mm.c
 delete mode 100644 utils/keytable/rc_keymaps/adstech_dvb_t_pci
 create mode 100644 utils/keytable/rc_keymaps/adstech_dvb_t_pci.toml
 delete mode 100644 utils/keytable/rc_keymaps/af9005
 create mode 100644 utils/keytable/rc_keymaps/af9005.toml
 delete mode 100644 utils/keytable/rc_keymaps/alink_dtu_m
 create mode 100644 utils/keytable/rc_keymaps/alink_dtu_m.toml
 delete mode 100644 utils/keytable/rc_keymaps/allwinner_ba10_tv_box
 delete mode 100644 utils/keytable/rc_keymaps/allwinner_i12_a20_tv_box
 delete mode 100644 utils/keytable/rc_keymaps/anysee
 create mode 100644 utils/keytable/rc_keymaps/anysee.toml
 delete mode 100644 utils/keytable/rc_keymaps/apac_viewcomp
 create mode 100644 utils/keytable/rc_keymaps/apac_viewcomp.toml
 delete mode 100644 utils/keytable/rc_keymaps/astrometa_t2hybrid
 create mode 100644 utils/keytable/rc_keymaps/astrometa_t2hybrid.toml
 delete mode 100644 utils/keytable/rc_keymaps/asus_pc39
 create mode 100644 utils/keytable/rc_keymaps/asus_pc39.toml
 delete mode 100644 utils/keytable/rc_keymaps/asus_ps3_100
 create mode 100644 utils/keytable/rc_keymaps/asus_ps3_100.toml
 delete mode 100644 utils/keytable/rc_keymaps/ati_tv_wonder_hd_600
 create mode 100644 utils/keytable/rc_keymaps/ati_tv_wonder_hd_600.toml
 delete mode 100644 utils/keytable/rc_keymaps/ati_x10
 create mode 100644 utils/keytable/rc_keymaps/ati_x10.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia
 create mode 100644 utils/keytable/rc_keymaps/avermedia.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_a16d
 create mode 100644 utils/keytable/rc_keymaps/avermedia_a16d.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_cardbus
 create mode 100644 utils/keytable/rc_keymaps/avermedia_cardbus.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_dvbt
 create mode 100644 utils/keytable/rc_keymaps/avermedia_dvbt.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_m135a
 create mode 100644 utils/keytable/rc_keymaps/avermedia_m135a.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_m733a_rm_k6
 create mode 100644 utils/keytable/rc_keymaps/avermedia_m733a_rm_k6.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_rm_ks
 create mode 100644 utils/keytable/rc_keymaps/avermedia_rm_ks.toml
 delete mode 100644 utils/keytable/rc_keymaps/avertv_303
 create mode 100644 utils/keytable/rc_keymaps/avertv_303.toml
 delete mode 100644 utils/keytable/rc_keymaps/az6027
 create mode 100644 utils/keytable/rc_keymaps/az6027.toml
 delete mode 100644 utils/keytable/rc_keymaps/azurewave_ad_tu700
 create mode 100644 utils/keytable/rc_keymaps/azurewave_ad_tu700.toml
 delete mode 100644 utils/keytable/rc_keymaps/behold
 create mode 100644 utils/keytable/rc_keymaps/behold.toml
 delete mode 100644 utils/keytable/rc_keymaps/behold_columbus
 create mode 100644 utils/keytable/rc_keymaps/behold_columbus.toml
 delete mode 100644 utils/keytable/rc_keymaps/budget_ci_old
 create mode 100644 utils/keytable/rc_keymaps/budget_ci_old.toml
 delete mode 100644 utils/keytable/rc_keymaps/cec
 create mode 100644 utils/keytable/rc_keymaps/cec.toml
 delete mode 100644 utils/keytable/rc_keymaps/cinergy
 create mode 100644 utils/keytable/rc_keymaps/cinergy.toml
 delete mode 100644 utils/keytable/rc_keymaps/cinergy_1400
 create mode 100644 utils/keytable/rc_keymaps/cinergy_1400.toml
 delete mode 100644 utils/keytable/rc_keymaps/cinergyt2
 create mode 100644 utils/keytable/rc_keymaps/cinergyt2.toml
 delete mode 100644 utils/keytable/rc_keymaps/d680_dmb
 create mode 100644 utils/keytable/rc_keymaps/d680_dmb.toml
 delete mode 100644 utils/keytable/rc_keymaps/delock_61959
 create mode 100644 utils/keytable/rc_keymaps/delock_61959.toml
 delete mode 100644 utils/keytable/rc_keymaps/dib0700_nec
 create mode 100644 utils/keytable/rc_keymaps/dib0700_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/dib0700_rc5
 create mode 100644 utils/keytable/rc_keymaps/dib0700_rc5.toml
 delete mode 100644 utils/keytable/rc_keymaps/dibusb
 create mode 100644 utils/keytable/rc_keymaps/dibusb.toml
 delete mode 100644 utils/keytable/rc_keymaps/digitalnow_tinytwin
 create mode 100644 utils/keytable/rc_keymaps/digitalnow_tinytwin.toml
 delete mode 100644 utils/keytable/rc_keymaps/digittrade
 create mode 100644 utils/keytable/rc_keymaps/digittrade.toml
 delete mode 100644 utils/keytable/rc_keymaps/digitv
 create mode 100644 utils/keytable/rc_keymaps/digitv.toml
 delete mode 100644 utils/keytable/rc_keymaps/dm1105_nec
 create mode 100644 utils/keytable/rc_keymaps/dm1105_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/dntv_live_dvb_t
 create mode 100644 utils/keytable/rc_keymaps/dntv_live_dvb_t.toml
 delete mode 100644 utils/keytable/rc_keymaps/dntv_live_dvbt_pro
 create mode 100644 utils/keytable/rc_keymaps/dntv_live_dvbt_pro.toml
 delete mode 100644 utils/keytable/rc_keymaps/dtt200u
 create mode 100644 utils/keytable/rc_keymaps/dtt200u.toml
 delete mode 100644 utils/keytable/rc_keymaps/dvbsky
 create mode 100644 utils/keytable/rc_keymaps/dvbsky.toml
 delete mode 100644 utils/keytable/rc_keymaps/dvico_mce
 create mode 100644 utils/keytable/rc_keymaps/dvico_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/dvico_portable
 create mode 100644 utils/keytable/rc_keymaps/dvico_portable.toml
 delete mode 100644 utils/keytable/rc_keymaps/em_terratec
 create mode 100644 utils/keytable/rc_keymaps/em_terratec.toml
 delete mode 100644 utils/keytable/rc_keymaps/encore_enltv
 create mode 100644 utils/keytable/rc_keymaps/encore_enltv.toml
 delete mode 100644 utils/keytable/rc_keymaps/encore_enltv2
 create mode 100644 utils/keytable/rc_keymaps/encore_enltv2.toml
 delete mode 100644 utils/keytable/rc_keymaps/encore_enltv_fm53
 create mode 100644 utils/keytable/rc_keymaps/encore_enltv_fm53.toml
 delete mode 100644 utils/keytable/rc_keymaps/evga_indtube
 create mode 100644 utils/keytable/rc_keymaps/evga_indtube.toml
 delete mode 100644 utils/keytable/rc_keymaps/eztv
 create mode 100644 utils/keytable/rc_keymaps/eztv.toml
 delete mode 100644 utils/keytable/rc_keymaps/flydvb
 create mode 100644 utils/keytable/rc_keymaps/flydvb.toml
 delete mode 100644 utils/keytable/rc_keymaps/flyvideo
 create mode 100644 utils/keytable/rc_keymaps/flyvideo.toml
 delete mode 100644 utils/keytable/rc_keymaps/fusionhdtv_mce
 create mode 100644 utils/keytable/rc_keymaps/fusionhdtv_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/gadmei_rm008z
 create mode 100644 utils/keytable/rc_keymaps/gadmei_rm008z.toml
 delete mode 100644 utils/keytable/rc_keymaps/geekbox
 create mode 100644 utils/keytable/rc_keymaps/geekbox.toml
 delete mode 100644 utils/keytable/rc_keymaps/genius_tvgo_a11mce
 create mode 100644 utils/keytable/rc_keymaps/genius_tvgo_a11mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/gotview7135
 create mode 100644 utils/keytable/rc_keymaps/gotview7135.toml
 delete mode 100644 utils/keytable/rc_keymaps/haupp
 create mode 100644 utils/keytable/rc_keymaps/haupp.toml
 delete mode 100644 utils/keytable/rc_keymaps/hauppauge
 create mode 100644 utils/keytable/rc_keymaps/hauppauge.toml
 delete mode 100644 utils/keytable/rc_keymaps/hisi_poplar
 create mode 100644 utils/keytable/rc_keymaps/hisi_poplar.toml
 delete mode 100644 utils/keytable/rc_keymaps/hisi_tv_demo
 create mode 100644 utils/keytable/rc_keymaps/hisi_tv_demo.toml
 delete mode 100644 utils/keytable/rc_keymaps/imon_mce
 create mode 100644 utils/keytable/rc_keymaps/imon_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/imon_pad
 create mode 100644 utils/keytable/rc_keymaps/imon_pad.toml
 delete mode 100644 utils/keytable/rc_keymaps/imon_rsc
 create mode 100644 utils/keytable/rc_keymaps/imon_rsc.toml
 delete mode 100644 utils/keytable/rc_keymaps/iodata_bctv7e
 create mode 100644 utils/keytable/rc_keymaps/iodata_bctv7e.toml
 delete mode 100644 utils/keytable/rc_keymaps/it913x_v1
 create mode 100644 utils/keytable/rc_keymaps/it913x_v1.toml
 delete mode 100644 utils/keytable/rc_keymaps/it913x_v2
 create mode 100644 utils/keytable/rc_keymaps/it913x_v2.toml
 delete mode 100644 utils/keytable/rc_keymaps/kaiomy
 create mode 100644 utils/keytable/rc_keymaps/kaiomy.toml
 delete mode 100644 utils/keytable/rc_keymaps/kworld_315u
 create mode 100644 utils/keytable/rc_keymaps/kworld_315u.toml
 delete mode 100644 utils/keytable/rc_keymaps/kworld_pc150u
 create mode 100644 utils/keytable/rc_keymaps/kworld_pc150u.toml
 delete mode 100644 utils/keytable/rc_keymaps/kworld_plus_tv_analog
 create mode 100644 utils/keytable/rc_keymaps/kworld_plus_tv_analog.toml
 delete mode 100644 utils/keytable/rc_keymaps/leadtek_y04g0051
 create mode 100644 utils/keytable/rc_keymaps/leadtek_y04g0051.toml
 delete mode 100644 utils/keytable/rc_keymaps/lme2510
 create mode 100644 utils/keytable/rc_keymaps/lme2510.toml
 delete mode 100644 utils/keytable/rc_keymaps/manli
 create mode 100644 utils/keytable/rc_keymaps/manli.toml
 delete mode 100644 utils/keytable/rc_keymaps/medion_x10
 create mode 100644 utils/keytable/rc_keymaps/medion_x10.toml
 delete mode 100644 utils/keytable/rc_keymaps/medion_x10_digitainer
 create mode 100644 utils/keytable/rc_keymaps/medion_x10_digitainer.toml
 delete mode 100644 utils/keytable/rc_keymaps/medion_x10_or2x
 create mode 100644 utils/keytable/rc_keymaps/medion_x10_or2x.toml
 delete mode 100644 utils/keytable/rc_keymaps/megasky
 create mode 100644 utils/keytable/rc_keymaps/megasky.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_digivox_ii
 create mode 100644 utils/keytable/rc_keymaps/msi_digivox_ii.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_digivox_iii
 create mode 100644 utils/keytable/rc_keymaps/msi_digivox_iii.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere
 create mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere_plus
 create mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere_plus.toml
 delete mode 100644 utils/keytable/rc_keymaps/nebula
 create mode 100644 utils/keytable/rc_keymaps/nebula.toml
 delete mode 100644 utils/keytable/rc_keymaps/nec_terratec_cinergy_xs
 create mode 100644 utils/keytable/rc_keymaps/nec_terratec_cinergy_xs.toml
 delete mode 100644 utils/keytable/rc_keymaps/norwood
 create mode 100644 utils/keytable/rc_keymaps/norwood.toml
 delete mode 100644 utils/keytable/rc_keymaps/npgtech
 create mode 100644 utils/keytable/rc_keymaps/npgtech.toml
 delete mode 100644 utils/keytable/rc_keymaps/opera1
 create mode 100644 utils/keytable/rc_keymaps/opera1.toml
 delete mode 100644 utils/keytable/rc_keymaps/pctv_sedna
 create mode 100644 utils/keytable/rc_keymaps/pctv_sedna.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle310e
 create mode 100644 utils/keytable/rc_keymaps/pinnacle310e.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle_color
 create mode 100644 utils/keytable/rc_keymaps/pinnacle_color.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle_grey
 create mode 100644 utils/keytable/rc_keymaps/pinnacle_grey.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle_pctv_hd
 create mode 100644 utils/keytable/rc_keymaps/pinnacle_pctv_hd.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview
 create mode 100644 utils/keytable/rc_keymaps/pixelview.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview_002t
 create mode 100644 utils/keytable/rc_keymaps/pixelview_002t.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview_mk12
 create mode 100644 utils/keytable/rc_keymaps/pixelview_mk12.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview_new
 create mode 100644 utils/keytable/rc_keymaps/pixelview_new.toml
 delete mode 100644 utils/keytable/rc_keymaps/powercolor_real_angel
 create mode 100644 utils/keytable/rc_keymaps/powercolor_real_angel.toml
 delete mode 100644 utils/keytable/rc_keymaps/proteus_2309
 create mode 100644 utils/keytable/rc_keymaps/proteus_2309.toml
 delete mode 100644 utils/keytable/rc_keymaps/purpletv
 create mode 100644 utils/keytable/rc_keymaps/purpletv.toml
 delete mode 100644 utils/keytable/rc_keymaps/pv951
 create mode 100644 utils/keytable/rc_keymaps/pv951.toml
 delete mode 100644 utils/keytable/rc_keymaps/rc6_mce
 create mode 100644 utils/keytable/rc_keymaps/rc6_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/real_audio_220_32_keys
 create mode 100644 utils/keytable/rc_keymaps/real_audio_220_32_keys.toml
 delete mode 100644 utils/keytable/rc_keymaps/reddo
 create mode 100644 utils/keytable/rc_keymaps/reddo.toml
 delete mode 100644 utils/keytable/rc_keymaps/snapstream_firefly
 create mode 100644 utils/keytable/rc_keymaps/snapstream_firefly.toml
 delete mode 100644 utils/keytable/rc_keymaps/streamzap
 create mode 100644 utils/keytable/rc_keymaps/streamzap.toml
 delete mode 100644 utils/keytable/rc_keymaps/su3000
 create mode 100644 utils/keytable/rc_keymaps/su3000.toml
 delete mode 100644 utils/keytable/rc_keymaps/tango
 create mode 100644 utils/keytable/rc_keymaps/tango.toml
 delete mode 100644 utils/keytable/rc_keymaps/tbs_nec
 create mode 100644 utils/keytable/rc_keymaps/tbs_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/technisat_ts35
 create mode 100644 utils/keytable/rc_keymaps/technisat_ts35.toml
 delete mode 100644 utils/keytable/rc_keymaps/technisat_usb2
 create mode 100644 utils/keytable/rc_keymaps/technisat_usb2.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_c_pci
 create mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_c_pci.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_s2_hd
 create mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_s2_hd.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_xs
 create mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_xs.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_slim
 create mode 100644 utils/keytable/rc_keymaps/terratec_slim.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_slim_2
 create mode 100644 utils/keytable/rc_keymaps/terratec_slim_2.toml
 delete mode 100644 utils/keytable/rc_keymaps/tevii_nec
 create mode 100644 utils/keytable/rc_keymaps/tevii_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/tivo
 create mode 100644 utils/keytable/rc_keymaps/tivo.toml
 delete mode 100644 utils/keytable/rc_keymaps/total_media_in_hand
 create mode 100644 utils/keytable/rc_keymaps/total_media_in_hand.toml
 delete mode 100644 utils/keytable/rc_keymaps/total_media_in_hand_02
 create mode 100644 utils/keytable/rc_keymaps/total_media_in_hand_02.toml
 delete mode 100644 utils/keytable/rc_keymaps/trekstor
 create mode 100644 utils/keytable/rc_keymaps/trekstor.toml
 delete mode 100644 utils/keytable/rc_keymaps/tt_1500
 create mode 100644 utils/keytable/rc_keymaps/tt_1500.toml
 delete mode 100644 utils/keytable/rc_keymaps/tvwalkertwin
 create mode 100644 utils/keytable/rc_keymaps/tvwalkertwin.toml
 delete mode 100644 utils/keytable/rc_keymaps/twinhan_dtv_cab_ci
 create mode 100644 utils/keytable/rc_keymaps/twinhan_dtv_cab_ci.toml
 delete mode 100644 utils/keytable/rc_keymaps/twinhan_vp1027_dvbs
 create mode 100644 utils/keytable/rc_keymaps/twinhan_vp1027_dvbs.toml
 delete mode 100644 utils/keytable/rc_keymaps/videomate_k100
 create mode 100644 utils/keytable/rc_keymaps/videomate_k100.toml
 delete mode 100644 utils/keytable/rc_keymaps/videomate_s350
 create mode 100644 utils/keytable/rc_keymaps/videomate_s350.toml
 delete mode 100644 utils/keytable/rc_keymaps/videomate_tv_pvr
 create mode 100644 utils/keytable/rc_keymaps/videomate_tv_pvr.toml
 delete mode 100644 utils/keytable/rc_keymaps/vp702x
 create mode 100644 utils/keytable/rc_keymaps/vp702x.toml
 delete mode 100644 utils/keytable/rc_keymaps/winfast
 create mode 100644 utils/keytable/rc_keymaps/winfast.toml
 delete mode 100644 utils/keytable/rc_keymaps/winfast_usbii_deluxe
 create mode 100644 utils/keytable/rc_keymaps/winfast_usbii_deluxe.toml
 delete mode 100644 utils/keytable/rc_keymaps/wobo_i5
 delete mode 100644 utils/keytable/rc_keymaps/zx_irdec
 create mode 100644 utils/keytable/rc_keymaps/zx_irdec.toml
 delete mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_ba10_tv_box
 create mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_ba10_tv_box.toml
 delete mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_i12_a20_tv_box
 create mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_i12_a20_tv_box.toml
 delete mode 100644 utils/keytable/rc_keymaps_userspace/wobo_i5
 create mode 100644 utils/keytable/rc_keymaps_userspace/wobo_i5.toml
 create mode 100644 utils/keytable/toml.c
 create mode 100644 utils/keytable/toml.h
Signature · 1 line
2.17.1
author
#1 lore raw

PATCH v3 1/5 keytable: add support for BPF based protocols

We use a modified version of samples/bpf/bpf_load.c from the linux kernel tree to load elf based BPF protocols and display the BPF program names.

Any global int variables can be overrided from the command line. The immediate values are patched in the BPF LD instructions.

Write a BPF protocol decoder in C, and compile with:

	clang -O2 -c --target=bpf foo.c

Now you can load the object file like so:

ir-keytable -p foo.o -v

Any parameters can be specified using -e name=value.

---
 Makefile.am                     |    4 +-
 configure.ac                    |   11 +
 include/linux/bpf.h             | 2669 +++++++++++++++++++++++++++++++
 utils/keytable/Makefile.am      |    7 +-
 utils/keytable/bpf.c            |  515 ++++++
 utils/keytable/bpf.h            |  110 ++
 utils/keytable/bpf_load.c       |  455 ++++++
 utils/keytable/bpf_load.h       |   43 +
 utils/keytable/ir-keytable.1.in |   14 +-
 utils/keytable/keytable.c       |  318 +++-
 v4l-utils.spec.in               |    2 +-
 11 files changed, 4117 insertions(+), 31 deletions(-)
 create mode 100644 include/linux/bpf.h
 create mode 100644 utils/keytable/bpf.c
 create mode 100644 utils/keytable/bpf.h
 create mode 100644 utils/keytable/bpf_load.c
 create mode 100644 utils/keytable/bpf_load.h
Makefile.am +3 -1
index fc8f2f34..38e17bab 100644
@@ -25,7 +25,8 @@ sync-with-kernel:
 	      ! -f $(KERNEL_DIR)/usr/include/linux/ivtv.h -o \
 	      ! -f $(KERNEL_DIR)/usr/include/linux/dvb/frontend.h -o \
 	      ! -f $(KERNEL_DIR)/usr/include/linux/dvb/dmx.h -o \
-	      ! -f $(KERNEL_DIR)/usr/include/linux/lirc.h ]; then \
+	      ! -f $(KERNEL_DIR)/usr/include/linux/lirc.h -o \
+	      ! -f $(KERNEL_DIR)/usr/include/linux/bpf.h ]; then \
 	  echo "Error you must set KERNEL_DIR to point to an extracted kernel source dir"; \
 	  echo "and run 'make headers_install' in \$$KERNEL_DIR."; \
 	  exit 1; \
@@ -43,6 +44,7 @@ sync-with-kernel:
 	cp $(top_srcdir)/include/linux/dvb/frontend.h $(top_srcdir)/lib/include/libdvbv5/dvb-frontend.h
 	cp -a $(KERNEL_DIR)/usr/include/linux/dvb/dmx.h $(top_srcdir)/include/linux/dvb
 	cp -a $(KERNEL_DIR)/usr/include/linux/lirc.h $(top_srcdir)/include/linux
+	cp -a $(KERNEL_DIR)/usr/include/linux/bpf.h $(top_srcdir)/include/linux
 	cp -a $(KERNEL_DIR)/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c $(top_srcdir)/utils/common
 	cp -a $(KERNEL_DIR)/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c $(top_srcdir)/utils/common
 	cp -a $(KERNEL_DIR)/include/media/tpg/v4l2-tpg* $(top_srcdir)/utils/common
configure.ac +11 -0
index dc1e9cbf..08f5a4c5 100644
@@ -167,6 +167,16 @@ AC_SUBST([X11_CFLAGS])
 AC_SUBST([X11_LIBS])
 AM_CONDITIONAL([HAVE_X11], [test x$x11_pkgconfig = xyes])
 
+PKG_CHECK_MODULES([LIBELF], [libelf], [libelf_pkgconfig=yes], [libelf_pkgconfig=no])
+AC_SUBST([LIBELF_CFLAGS])
+AC_SUBST([LIBELF_LIBS])
+AM_CONDITIONAL([HAVE_LIBELF], [test x$libelf_pkgconfig = xyes])
+if test "x$libelf_pkgconfig" = "xyes"; then
+  AC_DEFINE([HAVE_LIBELF], [1], [libelf library is present])
+else
+  AC_MSG_WARN(libelf library not available)
+fi
+
 AS_IF([test "x$x11_pkgconfig" = xyes],
       [PKG_CHECK_MODULES(GL, [gl], [gl_pkgconfig=yes], [gl_pkgconfig=no])], [gl_pkgconfig=no])
 AC_SUBST([GL_CFLAGS])
@@ -497,6 +507,7 @@ compile time options summary
     X11                        : $x11_pkgconfig
     GL                         : $gl_pkgconfig
     glu                        : $glu_pkgconfig
+    libelf		       : $libelf_pkgconfig
     libjpeg                    : $have_jpeg
     libudev                    : $have_libudev
     pthread                    : $have_pthread
include/linux/bpf.h new file +2669 -0

2,669 lines not on this page · raw message

utils/keytable/Makefile.am +6 -1
index 904aa96b..ad251915 100644
@@ -5,8 +5,13 @@ keytablesystem_DATA = $(srcdir)/rc_keymaps/*
 udevrules_DATA = 70-infrared.rules
 
 ir_keytable_SOURCES = keytable.c parse.h ir-encode.c ir-encode.h
+
+if HAVE_LIBELF
+ir_keytable_SOURCES += bpf.c bpf_load.c bpf.h bpf_load.h
+endif
+
 ir_keytable_LDADD = @LIBINTL@
-ir_keytable_LDFLAGS = $(ARGP_LIBS)
+ir_keytable_LDFLAGS = $(ARGP_LIBS) $(LIBELF_LIBS)
 
 EXTRA_DIST = 70-infrared.rules rc_keymaps rc_keymaps_userspace gen_keytables.pl ir-keytable.1 rc_maps.cfg
 
utils/keytable/bpf.c new file +515 -0

278 lines not on this page · raw message

utils/keytable/bpf.h new file +110 -0

110 lines not on this page · raw message

utils/keytable/bpf_load.c new file +455 -0

455 lines not on this page · raw message

utils/keytable/bpf_load.h new file +43 -0

43 lines not on this page · raw message

utils/keytable/ir-keytable.1.in +11 -3
index db1843b3..0be8a5a7 100644

Lines of this file are not shown. View the raw message.

utils/keytable/keytable.c +293 -25

318 lines not on this page · raw message

v4l-utils.spec.in +1 -1
index bdbb27ba..f7be08b3 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.17.1

Part of the diff is not shown here. View the raw message.

author
#2 lore raw

PATCH v3 2/5 keytable: add bpf protocols

In reply to Sean Young

Add a few BPF protocols and infrastructure for building them.

---
 configure.ac                                  |   4 +
 utils/keytable/Makefile.am                    |   4 +
 utils/keytable/bpf_protocols/Makefile.am      |  21 ++
 utils/keytable/bpf_protocols/bpf_helpers.h    | 315 ++++++++++++++++++
 utils/keytable/bpf_protocols/grundig.c        | 126 +++++++
 utils/keytable/bpf_protocols/manchester.c     | 167 ++++++++++
 utils/keytable/bpf_protocols/pulse_distance.c | 156 +++++++++
 utils/keytable/bpf_protocols/pulse_length.c   | 152 +++++++++
 utils/keytable/bpf_protocols/rc_mm.c          | 139 ++++++++
 v4l-utils.spec.in                             |   2 +-
 10 files changed, 1085 insertions(+), 1 deletion(-)
 create mode 100644 utils/keytable/bpf_protocols/Makefile.am
 create mode 100644 utils/keytable/bpf_protocols/bpf_helpers.h
 create mode 100644 utils/keytable/bpf_protocols/grundig.c
 create mode 100644 utils/keytable/bpf_protocols/manchester.c
 create mode 100644 utils/keytable/bpf_protocols/pulse_distance.c
 create mode 100644 utils/keytable/bpf_protocols/pulse_length.c
 create mode 100644 utils/keytable/bpf_protocols/rc_mm.c
configure.ac +4 -0
index 08f5a4c5..10f8628b 100644
@@ -23,6 +23,7 @@ AC_CONFIG_FILES([Makefile
 	utils/libmedia_dev/Makefile
 	utils/dvb/Makefile
 	utils/keytable/Makefile
+	utils/keytable/bpf_protocols/Makefile
 	utils/ir-ctl/Makefile
 	utils/cx18-ctl/Makefile
 	utils/ivtv-ctl/Makefile
@@ -172,11 +173,14 @@ AC_SUBST([LIBELF_CFLAGS])
 AC_SUBST([LIBELF_LIBS])
 AM_CONDITIONAL([HAVE_LIBELF], [test x$libelf_pkgconfig = xyes])
 if test "x$libelf_pkgconfig" = "xyes"; then
+  AC_CHECK_PROG([CLANG], clang, clang)
   AC_DEFINE([HAVE_LIBELF], [1], [libelf library is present])
 else
   AC_MSG_WARN(libelf library not available)
 fi
 
+AM_CONDITIONAL([BPF_PROTOCOLS], [test x$CLANG = xclang])
+
 AS_IF([test "x$x11_pkgconfig" = xyes],
       [PKG_CHECK_MODULES(GL, [gl], [gl_pkgconfig=yes], [gl_pkgconfig=no])], [gl_pkgconfig=no])
 AC_SUBST([GL_CFLAGS])
utils/keytable/Makefile.am +4 -0
index ad251915..b500e2f2 100644
@@ -13,6 +13,10 @@ endif
 ir_keytable_LDADD = @LIBINTL@
 ir_keytable_LDFLAGS = $(ARGP_LIBS) $(LIBELF_LIBS)
 
+if BPF_PROTOCOLS
+SUBDIRS = bpf_protocols
+endif
+
 EXTRA_DIST = 70-infrared.rules rc_keymaps rc_keymaps_userspace gen_keytables.pl ir-keytable.1 rc_maps.cfg
 
 # custom target
utils/keytable/bpf_protocols/Makefile.am new file +21 -0
new file mode 100644
index 00000000..5e4b3d67
@@ -0,0 +1,21 @@
+# Get Clang's default includes on this system, as opposed to those seen by
+# '-target bpf'. This fixes "missing" files on some architectures/distros,
+# such as asm/byteorder.h, asm/socket.h, asm/sockios.h, sys/cdefs.h etc.
+#
+# Use '-idirafter': Don't interfere with include mechanics except where the
+# build would have failed anyways.
+CLANG_SYS_INCLUDES := $(shell $(CLANG) -v -E - </dev/null 2>&1 \
+        | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }')
+
+%.o: %.c
+	$(CLANG) $(CLANG_SYS_INCLUDES) -I$(top_srcdir)/include -target bpf -O2 -c $<
+
+PROTOCOLS = grundig.o pulse_distance.o pulse_length.o rc_mm.o manchester.o
+
+all: $(PROTOCOLS)
+
+# custom target
+install-data-local:
+	$(install_sh) -d "$(DESTDIR)$(keytableuserdir)/protocols"
+	$(install_sh) -d "$(DESTDIR)$(keytablesystemdir)/protocols"
+	$(install_sh) $(PROTOCOLS) "$(DESTDIR)$(keytablesystemdir)/protocols"
utils/keytable/bpf_protocols/bpf_helpers.h new file +315 -0

315 lines not on this page · raw message

utils/keytable/bpf_protocols/grundig.c new file +126 -0

126 lines not on this page · raw message

utils/keytable/bpf_protocols/manchester.c new file +167 -0

167 lines not on this page · raw message

utils/keytable/bpf_protocols/pulse_distance.c new file +156 -0

156 lines not on this page · raw message

utils/keytable/bpf_protocols/pulse_length.c new file +152 -0

152 lines not on this page · raw message

utils/keytable/bpf_protocols/rc_mm.c new file +139 -0

139 lines not on this page · raw message

v4l-utils.spec.in +1 -1
index f7be08b3..e8203124 100644
@@ -10,7 +10,7 @@ Source0:        http://linuxtv.org/downloads/v4l-utils/v4l-utils-%{version}.tar.
 Source1:        qv4l2.desktop
 Source2:        qv4l2.svg
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires:  qt4-devel libsysfs-devel kernel-headers desktop-file-utils elfutils-libelf-devel
+BuildRequires:  qt4-devel libsysfs-devel kernel-headers desktop-file-utils elfutils-libelf-devel clang
 # For /etc/udev/rules.d ownership
 Requires:       udev
 Requires:       libv4l = %{version}-%{release}
Signature · 1 line
2.17.1
author
#3 lore raw

PATCH v3 3/5 keytable: add toml keymap reader

In reply to Sean Young

We would like to define BPF based IR protocols from rc_keymaps. We will need per-protocol parameters, so we need a more flexible format than the existing plain-text format.

At some point in the future it would nice to change rc-core keycode mapping to protocol + 64 bit scancode -> keycode, rather the existing 32 bit scancode -> keycode. In order to make this possible, we want the scancodes to be specified for their protocol, in case multiple protocols are selected.

---
 utils/keytable/Makefile.am |    2 +-
 utils/keytable/bpf_load.c  |   21 +-
 utils/keytable/bpf_load.h  |    2 +-
 utils/keytable/keytable.c  |  222 ++++-
 utils/keytable/toml.c      | 1903 ++++++++++++++++++++++++++++++++++++
 utils/keytable/toml.h      |  110 +++
 6 files changed, 2250 insertions(+), 10 deletions(-)
 create mode 100644 utils/keytable/toml.c
 create mode 100644 utils/keytable/toml.h
utils/keytable/Makefile.am +1 -1
index b500e2f2..90e4c8c8 100644
@@ -4,7 +4,7 @@ sysconf_DATA = rc_maps.cfg
 keytablesystem_DATA = $(srcdir)/rc_keymaps/*
 udevrules_DATA = 70-infrared.rules
 
-ir_keytable_SOURCES = keytable.c parse.h ir-encode.c ir-encode.h
+ir_keytable_SOURCES = keytable.c parse.h ir-encode.c ir-encode.h toml.c toml.h
 
 if HAVE_LIBELF
 ir_keytable_SOURCES += bpf.c bpf_load.c bpf.h bpf_load.h
utils/keytable/bpf_load.c +19 -2
index 5e9040a7..6f8a27b0 100644
@@ -13,6 +13,7 @@
 #include <stdlib.h>
 #include <linux/bpf.h>
 #include <assert.h>
+#include "toml.h"
 #include "bpf.h"
 #include "bpf_load.h"
 
@@ -43,6 +44,7 @@ struct bpf_file {
 	Elf_Data *data;
 	int strtabidx;
 	Elf_Data *symbols;
+	struct toml_table_t *toml;
 };
 
 static int load_and_attach(int lirc_fd, struct bpf_file *bpf_file, const char *name, struct bpf_insn *prog, int size)
@@ -184,6 +186,21 @@ static int parse_relo_and_apply(struct bpf_file *bpf_file, GElf_Shdr *shdr,
 
 			if (!bpf_param(sym_name, &value)) {
 				// done
+			} else if (bpf_file->toml &&
+				   (raw = toml_raw_in(bpf_file->toml, sym_name)) != NULL) {
+				int64_t val64;
+
+				if (toml_rtoi(raw, &val64)) {
+					printf(_("variable %s not a integer: %s\n"), sym_name, raw);
+					return 1;
+				}
+
+				if (value < INT_MIN && value > UINT_MAX) {
+					printf(_("variable %s out of range: %s\n"), sym_name, raw);
+					return 1;
+				}
+
+				value = val64;
 			} else if (sym.st_shndx == bpf_file->dataidx) {
 				int32_t *p = (bpf_file->data->d_buf + sym.st_value);
 				value = *p;
@@ -324,9 +341,9 @@ static int load_elf_maps_section(struct bpf_file *bpf_file)
 	return nr_maps;
 }
 
-int load_bpf_file(const char *path, int lirc_fd)
+int load_bpf_file(const char *path, int lirc_fd, struct toml_table_t *toml)
 {
-	struct bpf_file bpf_file = {};
+	struct bpf_file bpf_file = { .toml = toml };
 	int fd, i, ret;
 	Elf *elf;
 	GElf_Ehdr ehdr;
utils/keytable/bpf_load.h +1 -1
index ec9763e4..2775607f 100644
@@ -36,7 +36,7 @@ struct bpf_map_data {
  *
  * returns zero on success
  */
-int load_bpf_file(const char *path, int lirc_fd);
+int load_bpf_file(const char *path, int lirc_fd, struct toml_table_t *toml);
 
 int bpf_param(const char *name, int *val);
 
utils/keytable/keytable.c +216 -6

282 lines not on this page · raw message

utils/keytable/toml.c new file +1903 -0

1,903 lines not on this page · raw message

utils/keytable/toml.h new file +110 -0

110 lines not on this page · raw message

Signature · 1 line
2.17.1
author
#4 lore raw

PATCH v3 4/5 keytable: convert keymaps to new toml format

In reply to Sean Young

Convert all the existing keymaps to toml, so that only one format is used.

Include the protocol variant as well. This will be useful in the future if we want to use rc keymaps for transmitting IR.

---
 utils/keytable/gen_keytables.pl               |  33 ++-
 utils/keytable/ir-keytable.1.in               |   4 +-
 utils/keytable/rc_keymaps/adstech_dvb_t_pci   |  45 ---
 .../rc_keymaps/adstech_dvb_t_pci.toml         |  48 ++++
 utils/keytable/rc_keymaps/af9005              |  37 ---
 utils/keytable/rc_keymaps/af9005.toml         |  40 +++
 utils/keytable/rc_keymaps/alink_dtu_m         |  19 --
 utils/keytable/rc_keymaps/alink_dtu_m.toml    |  23 ++
 .../keytable/rc_keymaps/allwinner_ba10_tv_box |  15 -
 .../rc_keymaps/allwinner_i12_a20_tv_box       |  28 --
 utils/keytable/rc_keymaps/anysee              |  45 ---
 utils/keytable/rc_keymaps/anysee.toml         |  49 ++++
 utils/keytable/rc_keymaps/apac_viewcomp       |  32 ---
 utils/keytable/rc_keymaps/apac_viewcomp.toml  |  35 +++
 utils/keytable/rc_keymaps/astrometa_t2hybrid  |  22 --
 .../rc_keymaps/astrometa_t2hybrid.toml        |  26 ++
 utils/keytable/rc_keymaps/asus_pc39           |  40 ---
 utils/keytable/rc_keymaps/asus_pc39.toml      |  44 +++
 utils/keytable/rc_keymaps/asus_ps3_100        |  42 ---
 utils/keytable/rc_keymaps/asus_ps3_100.toml   |  46 +++
 .../keytable/rc_keymaps/ati_tv_wonder_hd_600  |  25 --
 .../rc_keymaps/ati_tv_wonder_hd_600.toml      |  28 ++
 utils/keytable/rc_keymaps/ati_x10             |  49 ----
 utils/keytable/rc_keymaps/ati_x10.toml        |  52 ++++
 utils/keytable/rc_keymaps/avermedia           |  37 ---
 utils/keytable/rc_keymaps/avermedia.toml      |  40 +++
 utils/keytable/rc_keymaps/avermedia_a16d      |  35 ---
 utils/keytable/rc_keymaps/avermedia_a16d.toml |  38 +++
 utils/keytable/rc_keymaps/avermedia_cardbus   |  55 ----
 .../rc_keymaps/avermedia_cardbus.toml         |  58 ++++
 utils/keytable/rc_keymaps/avermedia_dvbt      |  35 ---
 utils/keytable/rc_keymaps/avermedia_dvbt.toml |  38 +++
 utils/keytable/rc_keymaps/avermedia_m135a     |  81 ------
 .../keytable/rc_keymaps/avermedia_m135a.toml  |  85 ++++++
 .../keytable/rc_keymaps/avermedia_m733a_rm_k6 |  45 ---
 .../rc_keymaps/avermedia_m733a_rm_k6.toml     |  49 ++++
 utils/keytable/rc_keymaps/avermedia_rm_ks     |  28 --
 .../keytable/rc_keymaps/avermedia_rm_ks.toml  |  32 +++
 utils/keytable/rc_keymaps/avertv_303          |  37 ---
 utils/keytable/rc_keymaps/avertv_303.toml     |  40 +++
 utils/keytable/rc_keymaps/az6027              |   3 -
 utils/keytable/rc_keymaps/az6027.toml         |   6 +
 utils/keytable/rc_keymaps/azurewave_ad_tu700  |  54 ----
 .../rc_keymaps/azurewave_ad_tu700.toml        |  58 ++++
 utils/keytable/rc_keymaps/behold              |  35 ---
 utils/keytable/rc_keymaps/behold.toml         |  39 +++
 utils/keytable/rc_keymaps/behold_columbus     |  29 --
 .../keytable/rc_keymaps/behold_columbus.toml  |  32 +++
 utils/keytable/rc_keymaps/budget_ci_old       |  46 ---
 utils/keytable/rc_keymaps/budget_ci_old.toml  |  49 ++++
 utils/keytable/rc_keymaps/cec                 |  98 -------
 utils/keytable/rc_keymaps/cec.toml            | 101 +++++++
 utils/keytable/rc_keymaps/cinergy             |  37 ---
 utils/keytable/rc_keymaps/cinergy.toml        |  40 +++
 utils/keytable/rc_keymaps/cinergy_1400        |  38 ---
 utils/keytable/rc_keymaps/cinergy_1400.toml   |  41 +++
 utils/keytable/rc_keymaps/cinergyt2           |  38 ---
 utils/keytable/rc_keymaps/cinergyt2.toml      |  41 +++
 utils/keytable/rc_keymaps/d680_dmb            |  36 ---
 utils/keytable/rc_keymaps/d680_dmb.toml       |  39 +++
 utils/keytable/rc_keymaps/delock_61959        |  33 ---
 utils/keytable/rc_keymaps/delock_61959.toml   |  37 +++
 utils/keytable/rc_keymaps/dib0700_nec         |  71 -----
 utils/keytable/rc_keymaps/dib0700_nec.toml    |  75 +++++
 utils/keytable/rc_keymaps/dib0700_rc5         | 181 ------------
 utils/keytable/rc_keymaps/dib0700_rc5.toml    | 185 ++++++++++++
 utils/keytable/rc_keymaps/dibusb              | 112 --------
 utils/keytable/rc_keymaps/dibusb.toml         | 115 ++++++++
 utils/keytable/rc_keymaps/digitalnow_tinytwin |  50 ----
 .../rc_keymaps/digitalnow_tinytwin.toml       |  54 ++++
 utils/keytable/rc_keymaps/digittrade          |  29 --
 utils/keytable/rc_keymaps/digittrade.toml     |  33 +++
 utils/keytable/rc_keymaps/digitv              |  56 ----
 utils/keytable/rc_keymaps/digitv.toml         |  59 ++++
 utils/keytable/rc_keymaps/dm1105_nec          |  32 ---
 utils/keytable/rc_keymaps/dm1105_nec.toml     |  35 +++
 utils/keytable/rc_keymaps/dntv_live_dvb_t     |  33 ---
 .../keytable/rc_keymaps/dntv_live_dvb_t.toml  |  36 +++
 utils/keytable/rc_keymaps/dntv_live_dvbt_pro  |  54 ----
 .../rc_keymaps/dntv_live_dvbt_pro.toml        |  57 ++++
 utils/keytable/rc_keymaps/dtt200u             |  19 --
 utils/keytable/rc_keymaps/dtt200u.toml        |  23 ++
 utils/keytable/rc_keymaps/dvbsky              |  33 ---
 utils/keytable/rc_keymaps/dvbsky.toml         |  37 +++
 utils/keytable/rc_keymaps/dvico_mce           |  46 ---
 utils/keytable/rc_keymaps/dvico_mce.toml      |  50 ++++
 utils/keytable/rc_keymaps/dvico_portable      |  37 ---
 utils/keytable/rc_keymaps/dvico_portable.toml |  41 +++
 utils/keytable/rc_keymaps/em_terratec         |  29 --
 utils/keytable/rc_keymaps/em_terratec.toml    |  32 +++
 utils/keytable/rc_keymaps/encore_enltv        |  53 ----
 utils/keytable/rc_keymaps/encore_enltv.toml   |  56 ++++
 utils/keytable/rc_keymaps/encore_enltv2       |  40 ---
 utils/keytable/rc_keymaps/encore_enltv2.toml  |  43 +++
 utils/keytable/rc_keymaps/encore_enltv_fm53   |  30 --
 .../rc_keymaps/encore_enltv_fm53.toml         |  33 +++
 utils/keytable/rc_keymaps/evga_indtube        |  17 --
 utils/keytable/rc_keymaps/evga_indtube.toml   |  20 ++
 utils/keytable/rc_keymaps/eztv                |  45 ---
 utils/keytable/rc_keymaps/eztv.toml           |  48 ++++
 utils/keytable/rc_keymaps/flydvb              |  33 ---
 utils/keytable/rc_keymaps/flydvb.toml         |  36 +++
 utils/keytable/rc_keymaps/flyvideo            |  28 --
 utils/keytable/rc_keymaps/flyvideo.toml       |  31 ++
 utils/keytable/rc_keymaps/fusionhdtv_mce      |  46 ---
 utils/keytable/rc_keymaps/fusionhdtv_mce.toml |  49 ++++
 utils/keytable/rc_keymaps/gadmei_rm008z       |  32 ---
 utils/keytable/rc_keymaps/gadmei_rm008z.toml  |  35 +++
 utils/keytable/rc_keymaps/geekbox             |  13 -
 utils/keytable/rc_keymaps/geekbox.toml        |  17 ++
 utils/keytable/rc_keymaps/genius_tvgo_a11mce  |  33 ---
 .../rc_keymaps/genius_tvgo_a11mce.toml        |  36 +++
 utils/keytable/rc_keymaps/gotview7135         |  35 ---
 utils/keytable/rc_keymaps/gotview7135.toml    |  38 +++
 utils/keytable/rc_keymaps/haupp               |  46 ---
 utils/keytable/rc_keymaps/haupp.toml          |  49 ++++
 utils/keytable/rc_keymaps/hauppauge           | 173 -----------
 utils/keytable/rc_keymaps/hauppauge.toml      | 177 ++++++++++++
 utils/keytable/rc_keymaps/hisi_poplar         |  30 --
 utils/keytable/rc_keymaps/hisi_poplar.toml    |  34 +++
 utils/keytable/rc_keymaps/hisi_tv_demo        |  42 ---
 utils/keytable/rc_keymaps/hisi_tv_demo.toml   |  46 +++
 utils/keytable/rc_keymaps/imon_mce            |  78 -----
 utils/keytable/rc_keymaps/imon_mce.toml       |  82 ++++++
 utils/keytable/rc_keymaps/imon_pad            |  91 ------
 utils/keytable/rc_keymaps/imon_pad.toml       |  94 ++++++
 utils/keytable/rc_keymaps/imon_rsc            |  44 ---
 utils/keytable/rc_keymaps/imon_rsc.toml       |  48 ++++
 utils/keytable/rc_keymaps/iodata_bctv7e       |  37 ---
 utils/keytable/rc_keymaps/iodata_bctv7e.toml  |  40 +++
 utils/keytable/rc_keymaps/it913x_v1           |  53 ----
 utils/keytable/rc_keymaps/it913x_v1.toml      |  57 ++++
 utils/keytable/rc_keymaps/it913x_v2           |  48 ----
 utils/keytable/rc_keymaps/it913x_v2.toml      |  52 ++++
 utils/keytable/rc_keymaps/kaiomy              |  33 ---
 utils/keytable/rc_keymaps/kaiomy.toml         |  36 +++
 utils/keytable/rc_keymaps/kworld_315u         |  33 ---
 utils/keytable/rc_keymaps/kworld_315u.toml    |  37 +++
 utils/keytable/rc_keymaps/kworld_pc150u       |  45 ---
 utils/keytable/rc_keymaps/kworld_pc150u.toml  |  48 ++++
 .../keytable/rc_keymaps/kworld_plus_tv_analog |  32 ---
 .../rc_keymaps/kworld_plus_tv_analog.toml     |  35 +++
 utils/keytable/rc_keymaps/leadtek_y04g0051    |  51 ----
 .../keytable/rc_keymaps/leadtek_y04g0051.toml |  55 ++++
 utils/keytable/rc_keymaps/lme2510             |  67 -----
 utils/keytable/rc_keymaps/lme2510.toml        |  71 +++++
 utils/keytable/rc_keymaps/manli               |  32 ---
 utils/keytable/rc_keymaps/manli.toml          |  35 +++
 utils/keytable/rc_keymaps/medion_x10          |  54 ----
 utils/keytable/rc_keymaps/medion_x10.toml     |  57 ++++
 .../keytable/rc_keymaps/medion_x10_digitainer |  50 ----
 .../rc_keymaps/medion_x10_digitainer.toml     |  53 ++++
 utils/keytable/rc_keymaps/medion_x10_or2x     |  46 ---
 .../keytable/rc_keymaps/medion_x10_or2x.toml  |  49 ++++
 utils/keytable/rc_keymaps/megasky             |  17 --
 utils/keytable/rc_keymaps/megasky.toml        |  20 ++
 utils/keytable/rc_keymaps/msi_digivox_ii      |  19 --
 utils/keytable/rc_keymaps/msi_digivox_ii.toml |  23 ++
 utils/keytable/rc_keymaps/msi_digivox_iii     |  33 ---
 .../keytable/rc_keymaps/msi_digivox_iii.toml  |  37 +++
 utils/keytable/rc_keymaps/msi_tvanywhere      |  25 --
 utils/keytable/rc_keymaps/msi_tvanywhere.toml |  28 ++
 utils/keytable/rc_keymaps/msi_tvanywhere_plus |  37 ---
 .../rc_keymaps/msi_tvanywhere_plus.toml       |  40 +++
 utils/keytable/rc_keymaps/nebula              |  56 ----
 utils/keytable/rc_keymaps/nebula.toml         |  60 ++++
 .../rc_keymaps/nec_terratec_cinergy_xs        |  86 ------
 .../rc_keymaps/nec_terratec_cinergy_xs.toml   |  90 ++++++
 utils/keytable/rc_keymaps/norwood             |  36 ---
 utils/keytable/rc_keymaps/norwood.toml        |  39 +++
 utils/keytable/rc_keymaps/npgtech             |  36 ---
 utils/keytable/rc_keymaps/npgtech.toml        |  39 +++
 utils/keytable/rc_keymaps/opera1              |  27 --
 utils/keytable/rc_keymaps/opera1.toml         |  30 ++
 utils/keytable/rc_keymaps/pctv_sedna          |  33 ---
 utils/keytable/rc_keymaps/pctv_sedna.toml     |  36 +++
 utils/keytable/rc_keymaps/pinnacle310e        |  54 ----
 utils/keytable/rc_keymaps/pinnacle310e.toml   |  57 ++++
 utils/keytable/rc_keymaps/pinnacle_color      |  43 ---
 utils/keytable/rc_keymaps/pinnacle_color.toml |  46 +++
 utils/keytable/rc_keymaps/pinnacle_grey       |  42 ---
 utils/keytable/rc_keymaps/pinnacle_grey.toml  |  45 +++
 utils/keytable/rc_keymaps/pinnacle_pctv_hd    |  27 --
 .../keytable/rc_keymaps/pinnacle_pctv_hd.toml |  31 ++
 utils/keytable/rc_keymaps/pixelview           |  33 ---
 utils/keytable/rc_keymaps/pixelview.toml      |  36 +++
 utils/keytable/rc_keymaps/pixelview_002t      |  27 --
 utils/keytable/rc_keymaps/pixelview_002t.toml |  31 ++
 utils/keytable/rc_keymaps/pixelview_mk12      |  32 ---
 utils/keytable/rc_keymaps/pixelview_mk12.toml |  36 +++
 utils/keytable/rc_keymaps/pixelview_new       |  32 ---
 utils/keytable/rc_keymaps/pixelview_new.toml  |  35 +++
 .../keytable/rc_keymaps/powercolor_real_angel |  36 ---
 .../rc_keymaps/powercolor_real_angel.toml     |  39 +++
 utils/keytable/rc_keymaps/proteus_2309        |  25 --
 utils/keytable/rc_keymaps/proteus_2309.toml   |  28 ++
 utils/keytable/rc_keymaps/purpletv            |  36 ---
 utils/keytable/rc_keymaps/purpletv.toml       |  39 +++
 utils/keytable/rc_keymaps/pv951               |  32 ---
 utils/keytable/rc_keymaps/pv951.toml          |  35 +++
 utils/keytable/rc_keymaps/rc6_mce             |  65 -----
 utils/keytable/rc_keymaps/rc6_mce.toml        |  69 +++++
 .../rc_keymaps/real_audio_220_32_keys         |  29 --
 .../rc_keymaps/real_audio_220_32_keys.toml    |  32 +++
 utils/keytable/rc_keymaps/reddo               |  24 --
 utils/keytable/rc_keymaps/reddo.toml          |  28 ++
 utils/keytable/rc_keymaps/snapstream_firefly  |  49 ----
 .../rc_keymaps/snapstream_firefly.toml        |  52 ++++
 utils/keytable/rc_keymaps/streamzap           |  36 ---
 utils/keytable/rc_keymaps/streamzap.toml      |  39 +++
 utils/keytable/rc_keymaps/su3000              |  36 ---
 utils/keytable/rc_keymaps/su3000.toml         |  40 +++
 utils/keytable/rc_keymaps/tango               |  51 ----
 utils/keytable/rc_keymaps/tango.toml          |  55 ++++
 utils/keytable/rc_keymaps/tbs_nec             |  35 ---
 utils/keytable/rc_keymaps/tbs_nec.toml        |  38 +++
 utils/keytable/rc_keymaps/technisat_ts35      |  34 ---
 utils/keytable/rc_keymaps/technisat_ts35.toml |  37 +++
 utils/keytable/rc_keymaps/technisat_usb2      |  34 ---
 utils/keytable/rc_keymaps/technisat_usb2.toml |  38 +++
 .../rc_keymaps/terratec_cinergy_c_pci         |  49 ----
 .../rc_keymaps/terratec_cinergy_c_pci.toml    |  52 ++++
 .../rc_keymaps/terratec_cinergy_s2_hd         |  49 ----
 .../rc_keymaps/terratec_cinergy_s2_hd.toml    |  52 ++++
 utils/keytable/rc_keymaps/terratec_cinergy_xs |  48 ----
 .../rc_keymaps/terratec_cinergy_xs.toml       |  51 ++++
 utils/keytable/rc_keymaps/terratec_slim       |  29 --
 utils/keytable/rc_keymaps/terratec_slim.toml  |  33 +++
 utils/keytable/rc_keymaps/terratec_slim_2     |  19 --
 .../keytable/rc_keymaps/terratec_slim_2.toml  |  23 ++
 utils/keytable/rc_keymaps/tevii_nec           |  48 ----
 utils/keytable/rc_keymaps/tevii_nec.toml      |  51 ++++
 utils/keytable/rc_keymaps/tivo                |  46 ---
 utils/keytable/rc_keymaps/tivo.toml           |  50 ++++
 utils/keytable/rc_keymaps/total_media_in_hand |  36 ---
 .../rc_keymaps/total_media_in_hand.toml       |  40 +++
 .../rc_keymaps/total_media_in_hand_02         |  36 ---
 .../rc_keymaps/total_media_in_hand_02.toml    |  40 +++
 utils/keytable/rc_keymaps/trekstor            |  29 --
 utils/keytable/rc_keymaps/trekstor.toml       |  33 +++
 utils/keytable/rc_keymaps/tt_1500             |  40 ---
 utils/keytable/rc_keymaps/tt_1500.toml        |  44 +++
 utils/keytable/rc_keymaps/tvwalkertwin        |  18 --
 utils/keytable/rc_keymaps/tvwalkertwin.toml   |  21 ++
 utils/keytable/rc_keymaps/twinhan_dtv_cab_ci  |  54 ----
 .../rc_keymaps/twinhan_dtv_cab_ci.toml        |  57 ++++
 utils/keytable/rc_keymaps/twinhan_vp1027_dvbs |  54 ----
 .../rc_keymaps/twinhan_vp1027_dvbs.toml       |  58 ++++
 utils/keytable/rc_keymaps/videomate_k100      |  52 ----
 utils/keytable/rc_keymaps/videomate_k100.toml |  55 ++++
 utils/keytable/rc_keymaps/videomate_s350      |  45 ---
 utils/keytable/rc_keymaps/videomate_s350.toml |  48 ++++
 utils/keytable/rc_keymaps/videomate_tv_pvr    |  38 ---
 .../keytable/rc_keymaps/videomate_tv_pvr.toml |  41 +++
 utils/keytable/rc_keymaps/vp702x              |   3 -
 utils/keytable/rc_keymaps/vp702x.toml         |   6 +
 utils/keytable/rc_keymaps/winfast             |  57 ----
 utils/keytable/rc_keymaps/winfast.toml        |  60 ++++
 .../keytable/rc_keymaps/winfast_usbii_deluxe  |  29 --
 .../rc_keymaps/winfast_usbii_deluxe.toml      |  32 +++
 utils/keytable/rc_keymaps/wobo_i5             |   9 -
 utils/keytable/rc_keymaps/zx_irdec            |  41 ---
 utils/keytable/rc_keymaps/zx_irdec.toml       |  45 +++
 .../allwinner_ba10_tv_box                     |  15 -
 .../allwinner_ba10_tv_box.toml                |  18 ++
 .../allwinner_i12_a20_tv_box                  |  28 --
 .../allwinner_i12_a20_tv_box.toml             |  31 ++
 utils/keytable/rc_keymaps_userspace/wobo_i5   |   9 -
 .../rc_keymaps_userspace/wobo_i5.toml         |  12 +
 utils/keytable/rc_maps.cfg                    | 268 +++++++++---------
 270 files changed, 6121 insertions(+), 5717 deletions(-)
 delete mode 100644 utils/keytable/rc_keymaps/adstech_dvb_t_pci
 create mode 100644 utils/keytable/rc_keymaps/adstech_dvb_t_pci.toml
 delete mode 100644 utils/keytable/rc_keymaps/af9005
 create mode 100644 utils/keytable/rc_keymaps/af9005.toml
 delete mode 100644 utils/keytable/rc_keymaps/alink_dtu_m
 create mode 100644 utils/keytable/rc_keymaps/alink_dtu_m.toml
 delete mode 100644 utils/keytable/rc_keymaps/allwinner_ba10_tv_box
 delete mode 100644 utils/keytable/rc_keymaps/allwinner_i12_a20_tv_box
 delete mode 100644 utils/keytable/rc_keymaps/anysee
 create mode 100644 utils/keytable/rc_keymaps/anysee.toml
 delete mode 100644 utils/keytable/rc_keymaps/apac_viewcomp
 create mode 100644 utils/keytable/rc_keymaps/apac_viewcomp.toml
 delete mode 100644 utils/keytable/rc_keymaps/astrometa_t2hybrid
 create mode 100644 utils/keytable/rc_keymaps/astrometa_t2hybrid.toml
 delete mode 100644 utils/keytable/rc_keymaps/asus_pc39
 create mode 100644 utils/keytable/rc_keymaps/asus_pc39.toml
 delete mode 100644 utils/keytable/rc_keymaps/asus_ps3_100
 create mode 100644 utils/keytable/rc_keymaps/asus_ps3_100.toml
 delete mode 100644 utils/keytable/rc_keymaps/ati_tv_wonder_hd_600
 create mode 100644 utils/keytable/rc_keymaps/ati_tv_wonder_hd_600.toml
 delete mode 100644 utils/keytable/rc_keymaps/ati_x10
 create mode 100644 utils/keytable/rc_keymaps/ati_x10.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia
 create mode 100644 utils/keytable/rc_keymaps/avermedia.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_a16d
 create mode 100644 utils/keytable/rc_keymaps/avermedia_a16d.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_cardbus
 create mode 100644 utils/keytable/rc_keymaps/avermedia_cardbus.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_dvbt
 create mode 100644 utils/keytable/rc_keymaps/avermedia_dvbt.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_m135a
 create mode 100644 utils/keytable/rc_keymaps/avermedia_m135a.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_m733a_rm_k6
 create mode 100644 utils/keytable/rc_keymaps/avermedia_m733a_rm_k6.toml
 delete mode 100644 utils/keytable/rc_keymaps/avermedia_rm_ks
 create mode 100644 utils/keytable/rc_keymaps/avermedia_rm_ks.toml
 delete mode 100644 utils/keytable/rc_keymaps/avertv_303
 create mode 100644 utils/keytable/rc_keymaps/avertv_303.toml
 delete mode 100644 utils/keytable/rc_keymaps/az6027
 create mode 100644 utils/keytable/rc_keymaps/az6027.toml
 delete mode 100644 utils/keytable/rc_keymaps/azurewave_ad_tu700
 create mode 100644 utils/keytable/rc_keymaps/azurewave_ad_tu700.toml
 delete mode 100644 utils/keytable/rc_keymaps/behold
 create mode 100644 utils/keytable/rc_keymaps/behold.toml
 delete mode 100644 utils/keytable/rc_keymaps/behold_columbus
 create mode 100644 utils/keytable/rc_keymaps/behold_columbus.toml
 delete mode 100644 utils/keytable/rc_keymaps/budget_ci_old
 create mode 100644 utils/keytable/rc_keymaps/budget_ci_old.toml
 delete mode 100644 utils/keytable/rc_keymaps/cec
 create mode 100644 utils/keytable/rc_keymaps/cec.toml
 delete mode 100644 utils/keytable/rc_keymaps/cinergy
 create mode 100644 utils/keytable/rc_keymaps/cinergy.toml
 delete mode 100644 utils/keytable/rc_keymaps/cinergy_1400
 create mode 100644 utils/keytable/rc_keymaps/cinergy_1400.toml
 delete mode 100644 utils/keytable/rc_keymaps/cinergyt2
 create mode 100644 utils/keytable/rc_keymaps/cinergyt2.toml
 delete mode 100644 utils/keytable/rc_keymaps/d680_dmb
 create mode 100644 utils/keytable/rc_keymaps/d680_dmb.toml
 delete mode 100644 utils/keytable/rc_keymaps/delock_61959
 create mode 100644 utils/keytable/rc_keymaps/delock_61959.toml
 delete mode 100644 utils/keytable/rc_keymaps/dib0700_nec
 create mode 100644 utils/keytable/rc_keymaps/dib0700_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/dib0700_rc5
 create mode 100644 utils/keytable/rc_keymaps/dib0700_rc5.toml
 delete mode 100644 utils/keytable/rc_keymaps/dibusb
 create mode 100644 utils/keytable/rc_keymaps/dibusb.toml
 delete mode 100644 utils/keytable/rc_keymaps/digitalnow_tinytwin
 create mode 100644 utils/keytable/rc_keymaps/digitalnow_tinytwin.toml
 delete mode 100644 utils/keytable/rc_keymaps/digittrade
 create mode 100644 utils/keytable/rc_keymaps/digittrade.toml
 delete mode 100644 utils/keytable/rc_keymaps/digitv
 create mode 100644 utils/keytable/rc_keymaps/digitv.toml
 delete mode 100644 utils/keytable/rc_keymaps/dm1105_nec
 create mode 100644 utils/keytable/rc_keymaps/dm1105_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/dntv_live_dvb_t
 create mode 100644 utils/keytable/rc_keymaps/dntv_live_dvb_t.toml
 delete mode 100644 utils/keytable/rc_keymaps/dntv_live_dvbt_pro
 create mode 100644 utils/keytable/rc_keymaps/dntv_live_dvbt_pro.toml
 delete mode 100644 utils/keytable/rc_keymaps/dtt200u
 create mode 100644 utils/keytable/rc_keymaps/dtt200u.toml
 delete mode 100644 utils/keytable/rc_keymaps/dvbsky
 create mode 100644 utils/keytable/rc_keymaps/dvbsky.toml
 delete mode 100644 utils/keytable/rc_keymaps/dvico_mce
 create mode 100644 utils/keytable/rc_keymaps/dvico_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/dvico_portable
 create mode 100644 utils/keytable/rc_keymaps/dvico_portable.toml
 delete mode 100644 utils/keytable/rc_keymaps/em_terratec
 create mode 100644 utils/keytable/rc_keymaps/em_terratec.toml
 delete mode 100644 utils/keytable/rc_keymaps/encore_enltv
 create mode 100644 utils/keytable/rc_keymaps/encore_enltv.toml
 delete mode 100644 utils/keytable/rc_keymaps/encore_enltv2
 create mode 100644 utils/keytable/rc_keymaps/encore_enltv2.toml
 delete mode 100644 utils/keytable/rc_keymaps/encore_enltv_fm53
 create mode 100644 utils/keytable/rc_keymaps/encore_enltv_fm53.toml
 delete mode 100644 utils/keytable/rc_keymaps/evga_indtube
 create mode 100644 utils/keytable/rc_keymaps/evga_indtube.toml
 delete mode 100644 utils/keytable/rc_keymaps/eztv
 create mode 100644 utils/keytable/rc_keymaps/eztv.toml
 delete mode 100644 utils/keytable/rc_keymaps/flydvb
 create mode 100644 utils/keytable/rc_keymaps/flydvb.toml
 delete mode 100644 utils/keytable/rc_keymaps/flyvideo
 create mode 100644 utils/keytable/rc_keymaps/flyvideo.toml
 delete mode 100644 utils/keytable/rc_keymaps/fusionhdtv_mce
 create mode 100644 utils/keytable/rc_keymaps/fusionhdtv_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/gadmei_rm008z
 create mode 100644 utils/keytable/rc_keymaps/gadmei_rm008z.toml
 delete mode 100644 utils/keytable/rc_keymaps/geekbox
 create mode 100644 utils/keytable/rc_keymaps/geekbox.toml
 delete mode 100644 utils/keytable/rc_keymaps/genius_tvgo_a11mce
 create mode 100644 utils/keytable/rc_keymaps/genius_tvgo_a11mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/gotview7135
 create mode 100644 utils/keytable/rc_keymaps/gotview7135.toml
 delete mode 100644 utils/keytable/rc_keymaps/haupp
 create mode 100644 utils/keytable/rc_keymaps/haupp.toml
 delete mode 100644 utils/keytable/rc_keymaps/hauppauge
 create mode 100644 utils/keytable/rc_keymaps/hauppauge.toml
 delete mode 100644 utils/keytable/rc_keymaps/hisi_poplar
 create mode 100644 utils/keytable/rc_keymaps/hisi_poplar.toml
 delete mode 100644 utils/keytable/rc_keymaps/hisi_tv_demo
 create mode 100644 utils/keytable/rc_keymaps/hisi_tv_demo.toml
 delete mode 100644 utils/keytable/rc_keymaps/imon_mce
 create mode 100644 utils/keytable/rc_keymaps/imon_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/imon_pad
 create mode 100644 utils/keytable/rc_keymaps/imon_pad.toml
 delete mode 100644 utils/keytable/rc_keymaps/imon_rsc
 create mode 100644 utils/keytable/rc_keymaps/imon_rsc.toml
 delete mode 100644 utils/keytable/rc_keymaps/iodata_bctv7e
 create mode 100644 utils/keytable/rc_keymaps/iodata_bctv7e.toml
 delete mode 100644 utils/keytable/rc_keymaps/it913x_v1
 create mode 100644 utils/keytable/rc_keymaps/it913x_v1.toml
 delete mode 100644 utils/keytable/rc_keymaps/it913x_v2
 create mode 100644 utils/keytable/rc_keymaps/it913x_v2.toml
 delete mode 100644 utils/keytable/rc_keymaps/kaiomy
 create mode 100644 utils/keytable/rc_keymaps/kaiomy.toml
 delete mode 100644 utils/keytable/rc_keymaps/kworld_315u
 create mode 100644 utils/keytable/rc_keymaps/kworld_315u.toml
 delete mode 100644 utils/keytable/rc_keymaps/kworld_pc150u
 create mode 100644 utils/keytable/rc_keymaps/kworld_pc150u.toml
 delete mode 100644 utils/keytable/rc_keymaps/kworld_plus_tv_analog
 create mode 100644 utils/keytable/rc_keymaps/kworld_plus_tv_analog.toml
 delete mode 100644 utils/keytable/rc_keymaps/leadtek_y04g0051
 create mode 100644 utils/keytable/rc_keymaps/leadtek_y04g0051.toml
 delete mode 100644 utils/keytable/rc_keymaps/lme2510
 create mode 100644 utils/keytable/rc_keymaps/lme2510.toml
 delete mode 100644 utils/keytable/rc_keymaps/manli
 create mode 100644 utils/keytable/rc_keymaps/manli.toml
 delete mode 100644 utils/keytable/rc_keymaps/medion_x10
 create mode 100644 utils/keytable/rc_keymaps/medion_x10.toml
 delete mode 100644 utils/keytable/rc_keymaps/medion_x10_digitainer
 create mode 100644 utils/keytable/rc_keymaps/medion_x10_digitainer.toml
 delete mode 100644 utils/keytable/rc_keymaps/medion_x10_or2x
 create mode 100644 utils/keytable/rc_keymaps/medion_x10_or2x.toml
 delete mode 100644 utils/keytable/rc_keymaps/megasky
 create mode 100644 utils/keytable/rc_keymaps/megasky.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_digivox_ii
 create mode 100644 utils/keytable/rc_keymaps/msi_digivox_ii.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_digivox_iii
 create mode 100644 utils/keytable/rc_keymaps/msi_digivox_iii.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere
 create mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere.toml
 delete mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere_plus
 create mode 100644 utils/keytable/rc_keymaps/msi_tvanywhere_plus.toml
 delete mode 100644 utils/keytable/rc_keymaps/nebula
 create mode 100644 utils/keytable/rc_keymaps/nebula.toml
 delete mode 100644 utils/keytable/rc_keymaps/nec_terratec_cinergy_xs
 create mode 100644 utils/keytable/rc_keymaps/nec_terratec_cinergy_xs.toml
 delete mode 100644 utils/keytable/rc_keymaps/norwood
 create mode 100644 utils/keytable/rc_keymaps/norwood.toml
 delete mode 100644 utils/keytable/rc_keymaps/npgtech
 create mode 100644 utils/keytable/rc_keymaps/npgtech.toml
 delete mode 100644 utils/keytable/rc_keymaps/opera1
 create mode 100644 utils/keytable/rc_keymaps/opera1.toml
 delete mode 100644 utils/keytable/rc_keymaps/pctv_sedna
 create mode 100644 utils/keytable/rc_keymaps/pctv_sedna.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle310e
 create mode 100644 utils/keytable/rc_keymaps/pinnacle310e.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle_color
 create mode 100644 utils/keytable/rc_keymaps/pinnacle_color.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle_grey
 create mode 100644 utils/keytable/rc_keymaps/pinnacle_grey.toml
 delete mode 100644 utils/keytable/rc_keymaps/pinnacle_pctv_hd
 create mode 100644 utils/keytable/rc_keymaps/pinnacle_pctv_hd.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview
 create mode 100644 utils/keytable/rc_keymaps/pixelview.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview_002t
 create mode 100644 utils/keytable/rc_keymaps/pixelview_002t.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview_mk12
 create mode 100644 utils/keytable/rc_keymaps/pixelview_mk12.toml
 delete mode 100644 utils/keytable/rc_keymaps/pixelview_new
 create mode 100644 utils/keytable/rc_keymaps/pixelview_new.toml
 delete mode 100644 utils/keytable/rc_keymaps/powercolor_real_angel
 create mode 100644 utils/keytable/rc_keymaps/powercolor_real_angel.toml
 delete mode 100644 utils/keytable/rc_keymaps/proteus_2309
 create mode 100644 utils/keytable/rc_keymaps/proteus_2309.toml
 delete mode 100644 utils/keytable/rc_keymaps/purpletv
 create mode 100644 utils/keytable/rc_keymaps/purpletv.toml
 delete mode 100644 utils/keytable/rc_keymaps/pv951
 create mode 100644 utils/keytable/rc_keymaps/pv951.toml
 delete mode 100644 utils/keytable/rc_keymaps/rc6_mce
 create mode 100644 utils/keytable/rc_keymaps/rc6_mce.toml
 delete mode 100644 utils/keytable/rc_keymaps/real_audio_220_32_keys
 create mode 100644 utils/keytable/rc_keymaps/real_audio_220_32_keys.toml
 delete mode 100644 utils/keytable/rc_keymaps/reddo
 create mode 100644 utils/keytable/rc_keymaps/reddo.toml
 delete mode 100644 utils/keytable/rc_keymaps/snapstream_firefly
 create mode 100644 utils/keytable/rc_keymaps/snapstream_firefly.toml
 delete mode 100644 utils/keytable/rc_keymaps/streamzap
 create mode 100644 utils/keytable/rc_keymaps/streamzap.toml
 delete mode 100644 utils/keytable/rc_keymaps/su3000
 create mode 100644 utils/keytable/rc_keymaps/su3000.toml
 delete mode 100644 utils/keytable/rc_keymaps/tango
 create mode 100644 utils/keytable/rc_keymaps/tango.toml
 delete mode 100644 utils/keytable/rc_keymaps/tbs_nec
 create mode 100644 utils/keytable/rc_keymaps/tbs_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/technisat_ts35
 create mode 100644 utils/keytable/rc_keymaps/technisat_ts35.toml
 delete mode 100644 utils/keytable/rc_keymaps/technisat_usb2
 create mode 100644 utils/keytable/rc_keymaps/technisat_usb2.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_c_pci
 create mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_c_pci.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_s2_hd
 create mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_s2_hd.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_xs
 create mode 100644 utils/keytable/rc_keymaps/terratec_cinergy_xs.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_slim
 create mode 100644 utils/keytable/rc_keymaps/terratec_slim.toml
 delete mode 100644 utils/keytable/rc_keymaps/terratec_slim_2
 create mode 100644 utils/keytable/rc_keymaps/terratec_slim_2.toml
 delete mode 100644 utils/keytable/rc_keymaps/tevii_nec
 create mode 100644 utils/keytable/rc_keymaps/tevii_nec.toml
 delete mode 100644 utils/keytable/rc_keymaps/tivo
 create mode 100644 utils/keytable/rc_keymaps/tivo.toml
 delete mode 100644 utils/keytable/rc_keymaps/total_media_in_hand
 create mode 100644 utils/keytable/rc_keymaps/total_media_in_hand.toml
 delete mode 100644 utils/keytable/rc_keymaps/total_media_in_hand_02
 create mode 100644 utils/keytable/rc_keymaps/total_media_in_hand_02.toml
 delete mode 100644 utils/keytable/rc_keymaps/trekstor
 create mode 100644 utils/keytable/rc_keymaps/trekstor.toml
 delete mode 100644 utils/keytable/rc_keymaps/tt_1500
 create mode 100644 utils/keytable/rc_keymaps/tt_1500.toml
 delete mode 100644 utils/keytable/rc_keymaps/tvwalkertwin
 create mode 100644 utils/keytable/rc_keymaps/tvwalkertwin.toml
 delete mode 100644 utils/keytable/rc_keymaps/twinhan_dtv_cab_ci
 create mode 100644 utils/keytable/rc_keymaps/twinhan_dtv_cab_ci.toml
 delete mode 100644 utils/keytable/rc_keymaps/twinhan_vp1027_dvbs
 create mode 100644 utils/keytable/rc_keymaps/twinhan_vp1027_dvbs.toml
 delete mode 100644 utils/keytable/rc_keymaps/videomate_k100
 create mode 100644 utils/keytable/rc_keymaps/videomate_k100.toml
 delete mode 100644 utils/keytable/rc_keymaps/videomate_s350
 create mode 100644 utils/keytable/rc_keymaps/videomate_s350.toml
 delete mode 100644 utils/keytable/rc_keymaps/videomate_tv_pvr
 create mode 100644 utils/keytable/rc_keymaps/videomate_tv_pvr.toml
 delete mode 100644 utils/keytable/rc_keymaps/vp702x
 create mode 100644 utils/keytable/rc_keymaps/vp702x.toml
 delete mode 100644 utils/keytable/rc_keymaps/winfast
 create mode 100644 utils/keytable/rc_keymaps/winfast.toml
 delete mode 100644 utils/keytable/rc_keymaps/winfast_usbii_deluxe
 create mode 100644 utils/keytable/rc_keymaps/winfast_usbii_deluxe.toml
 delete mode 100644 utils/keytable/rc_keymaps/wobo_i5
 delete mode 100644 utils/keytable/rc_keymaps/zx_irdec
 create mode 100644 utils/keytable/rc_keymaps/zx_irdec.toml
 delete mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_ba10_tv_box
 create mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_ba10_tv_box.toml
 delete mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_i12_a20_tv_box
 create mode 100644 utils/keytable/rc_keymaps_userspace/allwinner_i12_a20_tv_box.toml
 delete mode 100644 utils/keytable/rc_keymaps_userspace/wobo_i5
 create mode 100644 utils/keytable/rc_keymaps_userspace/wobo_i5.toml
utils/keytable/gen_keytables.pl +21 -12
index 3045f257..fbb0db71 100755
@@ -16,12 +16,13 @@ my @ir_files = (
 
 my $debug = 1;
 my $dir="rc_keymaps";
-my $deftype = "UNKNOWN";
+my $deftype = "unknown";
 
 my $keyname="";
 my $out;
 my $read=0;
 my $type = $deftype;
+my $variant = $deftype;
 my $check_type = 0;
 my $name;
 my $warn;
@@ -37,9 +38,15 @@ sub flush($$)
 	my $defined;
 
 	return if (!$keyname || !$out);
-	print "Creating $dir/$keyname\n";
-	open OUT, ">$dir/$keyname";
-	print OUT "# table $keyname, type: $type\n";
+	print "Creating $dir/$keyname.toml\n";
+	open OUT, ">$dir/$keyname.toml";
+	print OUT "[[protocols]]\n";
+	print OUT "name = \"$keyname\"\n";
+	print OUT "protocol = \"$type\"\n";
+	if ($type eq "nec" || $type eq "rc5" || $type eq "rc6" || $type eq "sony") {
+		print OUT "variant = \"$variant\"\n";
+	}
+	print OUT "[protocols.scancodes]\n";
 	print OUT $out;
 	close OUT;
 
@@ -50,11 +57,11 @@ sub flush($$)
 	}
 
 	if ($defined) {
-		printf OUT_MAP "*\t%-24s %s\n", $rc_map_names{$name} , $keyname;
+		printf OUT_MAP "*\t%-24s %s.toml\n", $rc_map_names{$name} , $keyname;
 	} else {
 		my $fname = $filename;
 		$fname =~ s,.*/,,;
-		printf OUT_MAP "# *\t*\t\t\t %-20s # found in %s\n", $keyname, $fname;
+		printf OUT_MAP "# *\t*\t\t\t %-20s # found in %s\n", "$keyname.toml", $fname;
 	}
 
 	$keyname = "";
@@ -104,6 +111,7 @@ sub parse_file($$)
 				next;
 			}
 			if (m/RC_PROTO_([\w\d_]+)/) {
+				$variant = lc $1;
 				$type = $1;
 
 				# Proper name the RC6 protocol
@@ -114,13 +122,14 @@ sub parse_file($$)
 
 				# NECX protocol variant uses nec decoder
 				$type =~ s/^NECX$/NEC/;
+				$type = lc $type;
 			}
 			next;
 		}
 
 		if ($read) {
 			if (m/(0x[\dA-Fa-f]+)[\s\,]+(KEY|BTN)(\_[^\s\,\}]+)/) {
-				$out .= "$1 $2$3\n";
+				$out .= "$1 = \"$2$3\"\n";
 				next;
 			}
 			if (m/\}/) {
@@ -198,11 +207,11 @@ print OUT_MAP << "EOF";
 #		/etc/rc_keymaps.
 # For example:
 # driver	table				file
-# cx8800	*				./keycodes/rc5_hauppauge_new
-# *		rc-avermedia-m135a-rm-jx	./keycodes/kworld_315u
-# saa7134	rc-avermedia-m135a-rm-jx	./keycodes/keycodes/nec_terratec_cinergy_xs
-# em28xx	*				./keycodes/kworld_315u
-# *		*				./keycodes/rc5_hauppauge_new
+# cx8800	*				./keycodes/rc5_hauppauge_new.toml
+# *		rc-avermedia-m135a-rm-jx	./keycodes/kworld_315u.toml
+# saa7134	rc-avermedia-m135a-rm-jx	./keycodes/keycodes/nec_terratec_cinergy_xs.toml
+# em28xx	*				./keycodes/kworld_315u.toml
+# *		*				./keycodes/rc5_hauppauge_new.toml
 
 # Table to automatically load the rc maps for the bundled IR's provided with the
 # devices supported by the linux kernel
utils/keytable/ir-keytable.1.in +2 -2
index 0be8a5a7..60f9dfe9 100644
@@ -98,11 +98,11 @@ To list all connected Remote Controller devices:
 .PP
 To clean the keycode table and use a newer one:
 .br
-	\fBir\-keytable \-c \-w /etc/rc_keymaps/nec_terratec_cinergy_xs\fR
+	\fBir\-keytable \-c \-w /etc/rc_keymaps/nec_terratec_cinergy_xs.toml\fR
 .PP
 To append more codes to the existing table:
 .br
-	\fBir\-keytable \-w /etc/rc_keymaps/nec_terratec_cinergy_xs\fR
+	\fBir\-keytable \-w /etc/rc_keymaps/nec_terratec_cinergy_xs.toml\fR
 .PP
 To read the current keytable, on the second remote controller:
 	\fBir\-keytable \-s rc1 \-r\fR
utils/keytable/rc_keymaps/adstech_dvb_t_pci deleted +0 -45

45 lines not on this page · raw message

utils/keytable/rc_keymaps/adstech_dvb_t_pci.toml new file +48 -0

48 lines not on this page · raw message

utils/keytable/rc_keymaps/af9005 deleted +0 -37
deleted file mode 100644
index b5d32c38..00000000
@@ -1,37 +0,0 @@
-# table af9005, type: UNKNOWN
-0x01b7 KEY_POWER
-0x01a7 KEY_VOLUMEUP
-0x0187 KEY_CHANNELUP
-0x017f KEY_MUTE
-0x01bf KEY_VOLUMEDOWN
-0x013f KEY_CHANNELDOWN
-0x01df KEY_1
-0x015f KEY_2
-0x019f KEY_3
-0x011f KEY_4
-0x01ef KEY_5
-0x016f KEY_6
-0x01af KEY_7
-0x0127 KEY_8
-0x0107 KEY_9
-0x01cf KEY_ZOOM
-0x014f KEY_0
-0x018f KEY_GOTO
-0x00bd KEY_POWER
-0x007d KEY_VOLUMEUP
-0x00fd KEY_CHANNELUP
-0x009d KEY_MUTE
-0x005d KEY_VOLUMEDOWN
-0x00dd KEY_CHANNELDOWN
-0x00ad KEY_1
-0x006d KEY_2
-0x00ed KEY_3
-0x008d KEY_4
-0x004d KEY_5
-0x00cd KEY_6
-0x00b5 KEY_7
-0x0075 KEY_8
-0x00f5 KEY_9
-0x0095 KEY_ZOOM
-0x0055 KEY_0
-0x00d5 KEY_GOTO
utils/keytable/rc_keymaps/af9005.toml new file +40 -0
new file mode 100644
index 00000000..f3152031
@@ -0,0 +1,40 @@
+[[protocols]]
+name = "af9005"
+protocol = "unknown"
+[protocols.scancodes]
+0x01b7 = "KEY_POWER"
+0x01a7 = "KEY_VOLUMEUP"
+0x0187 = "KEY_CHANNELUP"
+0x017f = "KEY_MUTE"
+0x01bf = "KEY_VOLUMEDOWN"
+0x013f = "KEY_CHANNELDOWN"
+0x01df = "KEY_1"
+0x015f = "KEY_2"
+0x019f = "KEY_3"
+0x011f = "KEY_4"
+0x01ef = "KEY_5"
+0x016f = "KEY_6"
+0x01af = "KEY_7"
+0x0127 = "KEY_8"
+0x0107 = "KEY_9"
+0x01cf = "KEY_ZOOM"
+0x014f = "KEY_0"
+0x018f = "KEY_GOTO"
+0x00bd = "KEY_POWER"
+0x007d = "KEY_VOLUMEUP"
+0x00fd = "KEY_CHANNELUP"
+0x009d = "KEY_MUTE"
+0x005d = "KEY_VOLUMEDOWN"
+0x00dd = "KEY_CHANNELDOWN"
+0x00ad = "KEY_1"
+0x006d = "KEY_2"
+0x00ed = "KEY_3"
+0x008d = "KEY_4"
+0x004d = "KEY_5"
+0x00cd = "KEY_6"
+0x00b5 = "KEY_7"
+0x0075 = "KEY_8"
+0x00f5 = "KEY_9"
+0x0095 = "KEY_ZOOM"
+0x0055 = "KEY_0"
+0x00d5 = "KEY_GOTO"
utils/keytable/rc_keymaps/alink_dtu_m deleted +0 -19
deleted file mode 100644
index 64a0d24b..00000000
@@ -1,19 +0,0 @@
-# table alink_dtu_m, type: NEC
-0x0800 KEY_VOLUMEUP
-0x0801 KEY_1
-0x0802 KEY_3
-0x0803 KEY_7
-0x0804 KEY_9
-0x0805 KEY_NEW
-0x0806 KEY_0
-0x0807 KEY_CHANNEL
-0x080d KEY_5
-0x080f KEY_2
-0x0812 KEY_POWER2
-0x0814 KEY_CHANNELUP
-0x0816 KEY_VOLUMEDOWN
-0x0818 KEY_6
-0x081a KEY_MUTE
-0x081b KEY_8
-0x081c KEY_4
-0x081d KEY_CHANNELDOWN
utils/keytable/rc_keymaps/alink_dtu_m.toml new file +23 -0
new file mode 100644
index 00000000..fcdb07f4
@@ -0,0 +1,23 @@
+[[protocols]]
+name = "alink_dtu_m"
+protocol = "nec"
+variant = "nec"
+[protocols.scancodes]
+0x0800 = "KEY_VOLUMEUP"
+0x0801 = "KEY_1"
+0x0802 = "KEY_3"
+0x0803 = "KEY_7"
+0x0804 = "KEY_9"
+0x0805 = "KEY_NEW"
+0x0806 = "KEY_0"
+0x0807 = "KEY_CHANNEL"
+0x080d = "KEY_5"
+0x080f = "KEY_2"
+0x0812 = "KEY_POWER2"
+0x0814 = "KEY_CHANNELUP"
+0x0816 = "KEY_VOLUMEDOWN"
+0x0818 = "KEY_6"
+0x081a = "KEY_MUTE"
+0x081b = "KEY_8"
+0x081c = "KEY_4"
+0x081d = "KEY_CHANNELDOWN"
utils/keytable/rc_keymaps/allwinner_ba10_tv_box deleted +0 -15
deleted file mode 100644
index 5df16e31..00000000
@@ -1,15 +0,0 @@
-# table allwinner_ba10_tv_box, type: NEC
-0x206 KEY_UP
-0x216 KEY_VOLUMEDOWN
-0x217 KEY_NEXTSONG
-0x21a KEY_POWER
-0x21b KEY_BACK
-0x21e KEY_OK
-0x21f KEY_DOWN
-0x244 KEY_VOLUMEUP
-0x254 KEY_PREVIOUSSONG
-0x255 KEY_PLAYPAUSE
-0x258 KEY_MENU
-0x259 KEY_HOMEPAGE
-0x25c KEY_RIGHT
-0x25d KEY_LEFT
utils/keytable/rc_keymaps/allwinner_i12_a20_tv_box deleted +0 -28
deleted file mode 100644
index e87717cd..00000000
@@ -1,28 +0,0 @@
-# table allwinner_i12_a20_tv_box, type: NEC
-0x00 KEY_7
-0x01 KEY_4
-0x02 KEY_1
-0x03 KEY_VOLUMEDOWN
-0x04 KEY_8
-0x05 KEY_5
-0x06 KEY_2
-0x07 KEY_BACK
-0x08 KEY_9
-0x09 KEY_6
-0x0a KEY_3
-0x0b KEY_NEXTSONG
-0x0c KEY_WWW
-0x0d KEY_0
-0x0e KEY_BACKSPACE
-0x40 KEY_VOLUMEUP
-0x41 KEY_LEFT
-0x42 KEY_HOMEPAGE
-0x43 KEY_POWER
-0x44 KEY_DOWN
-0x45 KEY_OK
-0x46 KEY_UP
-0x47 KEY_CONTEXT_MENU
-0x48 KEY_PREVIOUSSONG
-0x49 KEY_RIGHT
-0x4a KEY_MENU
-0x4b KEY_MUTE
utils/keytable/rc_keymaps/anysee deleted +0 -45

45 lines not on this page · raw message

utils/keytable/rc_keymaps/anysee.toml new file +49 -0

49 lines not on this page · raw message

utils/keytable/rc_keymaps/apac_viewcomp deleted +0 -32
deleted file mode 100644
index 13e4232a..00000000
@@ -1,32 +0,0 @@
-# table apac_viewcomp, type: UNKNOWN
-0x01 KEY_1
-0x02 KEY_2
-0x03 KEY_3
-0x04 KEY_4
-0x05 KEY_5
-0x06 KEY_6
-0x07 KEY_7
-0x08 KEY_8
-0x09 KEY_9
-0x00 KEY_0
-0x17 KEY_LAST
-0x0a KEY_LIST
-0x1c KEY_TUNER
-0x15 KEY_SEARCH
-0x12 KEY_POWER
-0x1f KEY_VOLUMEDOWN
-0x1b KEY_VOLUMEUP
-0x1e KEY_CHANNELDOWN
-0x1a KEY_CHANNELUP
-0x11 KEY_VIDEO
-0x0f KEY_ZOOM
-0x13 KEY_MUTE
-0x10 KEY_TEXT
-0x0d KEY_STOP
-0x0e KEY_RECORD
-0x1d KEY_PLAYPAUSE
-0x19 KEY_PLAY
-0x16 KEY_GOTO
-0x14 KEY_REFRESH
-0x0c KEY_KPPLUS
-0x18 KEY_KPMINUS
utils/keytable/rc_keymaps/apac_viewcomp.toml new file +35 -0
new file mode 100644
index 00000000..17e5fd4a
@@ -0,0 +1,35 @@
+[[protocols]]
+name = "apac_viewcomp"
+protocol = "unknown"
+[protocols.scancodes]
+0x01 = "KEY_1"
+0x02 = "KEY_2"
+0x03 = "KEY_3"
+0x04 = "KEY_4"
+0x05 = "KEY_5"
+0x06 = "KEY_6"
+0x07 = "KEY_7"
+0x08 = "KEY_8"
+0x09 = "KEY_9"
+0x00 = "KEY_0"
+0x17 = "KEY_LAST"
+0x0a = "KEY_LIST"
+0x1c = "KEY_TUNER"
+0x15 = "KEY_SEARCH"
+0x12 = "KEY_POWER"
+0x1f = "KEY_VOLUMEDOWN"
+0x1b = "KEY_VOLUMEUP"
+0x1e = "KEY_CHANNELDOWN"
+0x1a = "KEY_CHANNELUP"
+0x11 = "KEY_VIDEO"
+0x0f = "KEY_ZOOM"
+0x13 = "KEY_MUTE"
+0x10 = "KEY_TEXT"
+0x0d = "KEY_STOP"
+0x0e = "KEY_RECORD"
+0x1d = "KEY_PLAYPAUSE"
+0x19 = "KEY_PLAY"
+0x16 = "KEY_GOTO"
+0x14 = "KEY_REFRESH"
+0x0c = "KEY_KPPLUS"
+0x18 = "KEY_KPMINUS"
utils/keytable/rc_keymaps/astrometa_t2hybrid deleted +0 -22
deleted file mode 100644
index 17a3b1a6..00000000
@@ -1,22 +0,0 @@
-# table astrometa_t2hybrid, type: NEC
-0x4d KEY_POWER2
-0x54 KEY_VIDEO
-0x16 KEY_MUTE
-0x4c KEY_RECORD
-0x05 KEY_CHANNELUP
-0x0c KEY_TIME
-0x0a KEY_VOLUMEDOWN
-0x40 KEY_ZOOM
-0x1e KEY_VOLUMEUP
-0x12 KEY_0
-0x02 KEY_CHANNELDOWN
-0x1c KEY_AGAIN
-0x09 KEY_1
-0x1d KEY_2
-0x1f KEY_3
-0x0d KEY_4
-0x19 KEY_5
-0x1b KEY_6
-0x11 KEY_7
-0x15 KEY_8
-0x17 KEY_9
utils/keytable/rc_keymaps/astrometa_t2hybrid.toml new file +26 -0
new file mode 100644
index 00000000..34cdbb15
@@ -0,0 +1,26 @@
+[[protocols]]
+name = "astrometa_t2hybrid"
+protocol = "nec"
+variant = "nec"
+[protocols.scancodes]
+0x4d = "KEY_POWER2"
+0x54 = "KEY_VIDEO"
+0x16 = "KEY_MUTE"
+0x4c = "KEY_RECORD"
+0x05 = "KEY_CHANNELUP"
+0x0c = "KEY_TIME"
+0x0a = "KEY_VOLUMEDOWN"
+0x40 = "KEY_ZOOM"
+0x1e = "KEY_VOLUMEUP"
+0x12 = "KEY_0"
+0x02 = "KEY_CHANNELDOWN"
+0x1c = "KEY_AGAIN"
+0x09 = "KEY_1"
+0x1d = "KEY_2"
+0x1f = "KEY_3"
+0x0d = "KEY_4"
+0x19 = "KEY_5"
+0x1b = "KEY_6"
+0x11 = "KEY_7"
+0x15 = "KEY_8"
+0x17 = "KEY_9"
utils/keytable/rc_keymaps/asus_pc39 deleted +0 -40
deleted file mode 100644
index e498751f..00000000
@@ -1,40 +0,0 @@
-# table asus_pc39, type: RC5
-0x082a KEY_0
-0x0816 KEY_1
-0x0812 KEY_2
-0x0814 KEY_3
-0x0836 KEY_4
-0x0832 KEY_5
-0x0834 KEY_6
-0x080e KEY_7
-0x080a KEY_8
-0x080c KEY_9
-0x0801 KEY_RADIO
-0x083c KEY_MENU
-0x0815 KEY_VOLUMEUP
-0x0826 KEY_VOLUMEDOWN
-0x0808 KEY_UP
-0x0804 KEY_DOWN
-0x0818 KEY_LEFT
-0x0810 KEY_RIGHT
-0x081a KEY_VIDEO
-0x0806 KEY_AUDIO
-0x081e KEY_TV
-0x0822 KEY_EXIT
-0x0835 KEY_CHANNELUP
-0x0824 KEY_CHANNELDOWN
-0x0825 KEY_ENTER
-0x0839 KEY_PAUSE
-0x0821 KEY_PREVIOUS
-0x0819 KEY_NEXT
-0x0831 KEY_REWIND
-0x0805 KEY_FASTFORWARD
-0x0809 KEY_STOP
-0x0811 KEY_RECORD
-0x0829 KEY_POWER
-0x082e KEY_ZOOM
-0x082c KEY_MACRO
-0x081c KEY_HOME
-0x083a KEY_PVR
-0x0802 KEY_MUTE
-0x083e KEY_DVD
utils/keytable/rc_keymaps/asus_pc39.toml new file +44 -0

44 lines not on this page · raw message

utils/keytable/rc_keymaps/asus_ps3_100 deleted +0 -42

42 lines not on this page · raw message

utils/keytable/rc_keymaps/asus_ps3_100.toml new file +46 -0

46 lines not on this page · raw message

utils/keytable/rc_keymaps/ati_tv_wonder_hd_600 deleted +0 -25
deleted file mode 100644
index bd9b93db..00000000
@@ -1,25 +0,0 @@
-# table ati_tv_wonder_hd_600, type: UNKNOWN
-0x00 KEY_RECORD
-0x01 KEY_PLAYPAUSE
-0x02 KEY_STOP
-0x03 KEY_POWER
-0x04 KEY_PREVIOUS
-0x05 KEY_REWIND
-0x06 KEY_FORWARD
-0x07 KEY_NEXT
-0x08 KEY_EPG
-0x09 KEY_HOME
-0x0a KEY_MENU
-0x0b KEY_CHANNELUP
-0x0c KEY_BACK
-0x0d KEY_UP
-0x0e KEY_INFO
-0x0f KEY_CHANNELDOWN
-0x10 KEY_LEFT
-0x11 KEY_SELECT
-0x12 KEY_RIGHT
-0x13 KEY_VOLUMEUP
-0x14 KEY_LAST
-0x15 KEY_DOWN
-0x16 KEY_MUTE
-0x17 KEY_VOLUMEDOWN
utils/keytable/rc_keymaps/ati_tv_wonder_hd_600.toml new file +28 -0
new file mode 100644
index 00000000..2ddc0378
@@ -0,0 +1,28 @@
+[[protocols]]
+name = "ati_tv_wonder_hd_600"
+protocol = "unknown"
+[protocols.scancodes]
+0x00 = "KEY_RECORD"
+0x01 = "KEY_PLAYPAUSE"
+0x02 = "KEY_STOP"
+0x03 = "KEY_POWER"
+0x04 = "KEY_PREVIOUS"
+0x05 = "KEY_REWIND"
+0x06 = "KEY_FORWARD"
+0x07 = "KEY_NEXT"
+0x08 = "KEY_EPG"
+0x09 = "KEY_HOME"
+0x0a = "KEY_MENU"
+0x0b = "KEY_CHANNELUP"
+0x0c = "KEY_BACK"
+0x0d = "KEY_UP"
+0x0e = "KEY_INFO"
+0x0f = "KEY_CHANNELDOWN"
+0x10 = "KEY_LEFT"
+0x11 = "KEY_SELECT"
+0x12 = "KEY_RIGHT"
+0x13 = "KEY_VOLUMEUP"
+0x14 = "KEY_LAST"
+0x15 = "KEY_DOWN"
+0x16 = "KEY_MUTE"
+0x17 = "KEY_VOLUMEDOWN"
utils/keytable/rc_keymaps/ati_x10 deleted +0 -49

49 lines not on this page · raw message

utils/keytable/rc_keymaps/ati_x10.toml new file +52 -0

52 lines not on this page · raw message

utils/keytable/rc_keymaps/avermedia deleted +0 -37
deleted file mode 100644
index d6939add..00000000
@@ -1,37 +0,0 @@
-# table avermedia, type: UNKNOWN
-0x28 KEY_1
-0x18 KEY_2
-0x38 KEY_3
-0x24 KEY_4
-0x14 KEY_5
-0x34 KEY_6
-0x2c KEY_7
-0x1c KEY_8
-0x3c KEY_9
-0x22 KEY_0
-0x20 KEY_TV
-0x10 KEY_CD
-0x30 KEY_TEXT
-0x00 KEY_POWER
-0x08 KEY_VIDEO
-0x04 KEY_AUDIO
-0x0c KEY_ZOOM
-0x12 KEY_SUBTITLE
-0x32 KEY_REWIND
-0x02 KEY_PRINT
-0x2a KEY_SEARCH
-0x1a KEY_SLEEP
-0x3a KEY_CAMERA
-0x0a KEY_MUTE
-0x26 KEY_RECORD
-0x16 KEY_PAUSE
-0x36 KEY_STOP
-0x06 KEY_PLAY
-0x2e KEY_RED
-0x21 KEY_GREEN
-0x0e KEY_YELLOW
-0x01 KEY_BLUE
-0x1e KEY_VOLUMEDOWN
-0x3e KEY_VOLUMEUP
-0x11 KEY_CHANNELDOWN
-0x31 KEY_CHANNELUP
utils/keytable/rc_keymaps/avermedia.toml new file +40 -0
new file mode 100644
index 00000000..6a8b5d49
@@ -0,0 +1,40 @@
+[[protocols]]
+name = "avermedia"
+protocol = "unknown"
+[protocols.scancodes]
+0x28 = "KEY_1"
+0x18 = "KEY_2"
+0x38 = "KEY_3"
+0x24 = "KEY_4"
+0x14 = "KEY_5"
+0x34 = "KEY_6"
+0x2c = "KEY_7"
+0x1c = "KEY_8"
+0x3c = "KEY_9"
+0x22 = "KEY_0"
+0x20 = "KEY_TV"
+0x10 = "KEY_CD"
+0x30 = "KEY_TEXT"
+0x00 = "KEY_POWER"
+0x08 = "KEY_VIDEO"
+0x04 = "KEY_AUDIO"
+0x0c = "KEY_ZOOM"
+0x12 = "KEY_SUBTITLE"
+0x32 = "KEY_REWIND"
+0x02 = "KEY_PRINT"
+0x2a = "KEY_SEARCH"
+0x1a = "KEY_SLEEP"
+0x3a = "KEY_CAMERA"
+0x0a = "KEY_MUTE"
+0x26 = "KEY_RECORD"
+0x16 = "KEY_PAUSE"
+0x36 = "KEY_STOP"
+0x06 = "KEY_PLAY"
+0x2e = "KEY_RED"
+0x21 = "KEY_GREEN"
+0x0e = "KEY_YELLOW"
+0x01 = "KEY_BLUE"
+0x1e = "KEY_VOLUMEDOWN"
+0x3e = "KEY_VOLUMEUP"
+0x11 = "KEY_CHANNELDOWN"
+0x31 = "KEY_CHANNELUP"
utils/keytable/rc_keymaps/avermedia_a16d deleted +0 -35
deleted file mode 100644
index ccbafe7a..00000000
@@ -1,35 +0,0 @@
-# table avermedia_a16d, type: UNKNOWN
-0x20 KEY_LIST
-0x00 KEY_POWER
-0x28 KEY_1
-0x18 KEY_2
-0x38 KEY_3
-0x24 KEY_4
-0x14 KEY_5
-0x34 KEY_6
-0x2c KEY_7
-0x1c KEY_8
-0x3c KEY_9
-0x12 KEY_SUBTITLE
-0x22 KEY_0
-0x32 KEY_REWIND
-0x3a KEY_SHUFFLE
-0x02 KEY_PRINT
-0x11 KEY_CHANNELDOWN
-0x31 KEY_CHANNELUP
-0x0c KEY_ZOOM
-0x1e KEY_VOLUMEDOWN
-0x3e KEY_VOLUMEUP
-0x0a KEY_MUTE
-0x04 KEY_AUDIO
-0x26 KEY_RECORD
-0x06 KEY_PLAY
-0x36 KEY_STOP
-0x16 KEY_PAUSE
-0x2e KEY_REWIND
-0x0e KEY_FASTFORWARD
-0x30 KEY_TEXT
-0x21 KEY_GREEN
-0x01 KEY_BLUE
-0x08 KEY_EPG
-0x2a KEY_MENU
utils/keytable/rc_keymaps/avermedia_a16d.toml new file +38 -0
new file mode 100644
index 00000000..f9d92db4
@@ -0,0 +1,38 @@
+[[protocols]]
+name = "avermedia_a16d"
+protocol = "unknown"
+[protocols.scancodes]
+0x20 = "KEY_LIST"
+0x00 = "KEY_POWER"
+0x28 = "KEY_1"
+0x18 = "KEY_2"
+0x38 = "KEY_3"
+0x24 = "KEY_4"
+0x14 = "KEY_5"
+0x34 = "KEY_6"
+0x2c = "KEY_7"
+0x1c = "KEY_8"
+0x3c = "KEY_9"
+0x12 = "KEY_SUBTITLE"
+0x22 = "KEY_0"
+0x32 = "KEY_REWIND"
+0x3a = "KEY_SHUFFLE"
+0x02 = "KEY_PRINT"
+0x11 = "KEY_CHANNELDOWN"
+0x31 = "KEY_CHANNELUP"
+0x0c = "KEY_ZOOM"
+0x1e = "KEY_VOLUMEDOWN"
+0x3e = "KEY_VOLUMEUP"
+0x0a = "KEY_MUTE"
+0x04 = "KEY_AUDIO"
+0x26 = "KEY_RECORD"
+0x06 = "KEY_PLAY"
+0x36 = "KEY_STOP"
+0x16 = "KEY_PAUSE"
+0x2e = "KEY_REWIND"
+0x0e = "KEY_FASTFORWARD"
+0x30 = "KEY_TEXT"
+0x21 = "KEY_GREEN"
+0x01 = "KEY_BLUE"
+0x08 = "KEY_EPG"
+0x2a = "KEY_MENU"
utils/keytable/rc_keymaps/zx_irdec deleted +0 -41

41 lines not on this page · raw message

utils/keytable/rc_keymaps/zx_irdec.toml new file +45 -0

45 lines not on this page · raw message

utils/keytable/rc_keymaps_userspace/allwinner_ba10_tv_box deleted +0 -15
deleted file mode 100644
index 5df16e31..00000000
@@ -1,15 +0,0 @@
-# table allwinner_ba10_tv_box, type: NEC
-0x206 KEY_UP
-0x216 KEY_VOLUMEDOWN
-0x217 KEY_NEXTSONG
-0x21a KEY_POWER
-0x21b KEY_BACK
-0x21e KEY_OK
-0x21f KEY_DOWN
-0x244 KEY_VOLUMEUP
-0x254 KEY_PREVIOUSSONG
-0x255 KEY_PLAYPAUSE
-0x258 KEY_MENU
-0x259 KEY_HOMEPAGE
-0x25c KEY_RIGHT
-0x25d KEY_LEFT
utils/keytable/rc_keymaps_userspace/allwinner_ba10_tv_box.toml new file +18 -0
new file mode 100644
index 00000000..adc40180
@@ -0,0 +1,18 @@
+[[protocols]]
+name = "allwinner_ba10_tv_box"
+protocol = "nec"
+[protocols.scancodes]
+0x206 = "KEY_UP"
+0x216 = "KEY_VOLUMEDOWN"
+0x217 = "KEY_NEXTSONG"
+0x21a = "KEY_POWER"
+0x21b = "KEY_BACK"
+0x21e = "KEY_OK"
+0x21f = "KEY_DOWN"
+0x244 = "KEY_VOLUMEUP"
+0x254 = "KEY_PREVIOUSSONG"
+0x255 = "KEY_PLAYPAUSE"
+0x258 = "KEY_MENU"
+0x259 = "KEY_HOMEPAGE"
+0x25c = "KEY_RIGHT"
+0x25d = "KEY_LEFT"
utils/keytable/rc_keymaps_userspace/allwinner_i12_a20_tv_box deleted +0 -28
deleted file mode 100644
index e87717cd..00000000
@@ -1,28 +0,0 @@
-# table allwinner_i12_a20_tv_box, type: NEC
-0x00 KEY_7
-0x01 KEY_4
-0x02 KEY_1
-0x03 KEY_VOLUMEDOWN
-0x04 KEY_8
-0x05 KEY_5
-0x06 KEY_2
-0x07 KEY_BACK
-0x08 KEY_9
-0x09 KEY_6
-0x0a KEY_3
-0x0b KEY_NEXTSONG
-0x0c KEY_WWW
-0x0d KEY_0
-0x0e KEY_BACKSPACE
-0x40 KEY_VOLUMEUP
-0x41 KEY_LEFT
-0x42 KEY_HOMEPAGE
-0x43 KEY_POWER
-0x44 KEY_DOWN
-0x45 KEY_OK
-0x46 KEY_UP
-0x47 KEY_CONTEXT_MENU
-0x48 KEY_PREVIOUSSONG
-0x49 KEY_RIGHT
-0x4a KEY_MENU
-0x4b KEY_MUTE
utils/keytable/rc_keymaps_userspace/allwinner_i12_a20_tv_box.toml new file +31 -0
new file mode 100644
index 00000000..d5ffe939
@@ -0,0 +1,31 @@
+[[protocols]]
+name = "allwinner_i12_a20_tv_box"
+protocol = "nec"
+[protocols.scancodes]
+0x00 = "KEY_7"
+0x01 = "KEY_4"
+0x02 = "KEY_1"
+0x03 = "KEY_VOLUMEDOWN"
+0x04 = "KEY_8"
+0x05 = "KEY_5"
+0x06 = "KEY_2"
+0x07 = "KEY_BACK"
+0x08 = "KEY_9"
+0x09 = "KEY_6"
+0x0a = "KEY_3"
+0x0b = "KEY_NEXTSONG"
+0x0c = "KEY_WWW"
+0x0d = "KEY_0"
+0x0e = "KEY_BACKSPACE"
+0x40 = "KEY_VOLUMEUP"
+0x41 = "KEY_LEFT"
+0x42 = "KEY_HOMEPAGE"
+0x43 = "KEY_POWER"
+0x44 = "KEY_DOWN"
+0x45 = "KEY_OK"
+0x46 = "KEY_UP"
+0x47 = "KEY_CONTEXT_MENU"
+0x48 = "KEY_PREVIOUSSONG"
+0x49 = "KEY_RIGHT"
+0x4a = "KEY_MENU"
+0x4b = "KEY_MUTE"
utils/keytable/rc_keymaps_userspace/wobo_i5 deleted +0 -9
deleted file mode 100644
index 38362c5d..00000000
@@ -1,9 +0,0 @@
-# table wobo_i5, type: NEC
-0x01 KEY_POWER
-0x05 KEY_UP
-0x06 KEY_LEFT
-0x08 KEY_RIGHT
-0x09 KEY_PLAYPAUSE
-0x0a KEY_DOWN
-0x0c KEY_MENU
-0x0e KEY_BACK
utils/keytable/rc_keymaps_userspace/wobo_i5.toml new file +12 -0
new file mode 100644
index 00000000..f88de434
@@ -0,0 +1,12 @@
+[[protocols]]
+name = "wobo_i5"
+protocol = "nec"
+[protocols.scancodes]
+0x01 = "KEY_POWER"
+0x05 = "KEY_UP"
+0x06 = "KEY_LEFT"
+0x08 = "KEY_RIGHT"
+0x09 = "KEY_PLAYPAUSE"
+0x0a = "KEY_DOWN"
+0x0c = "KEY_MENU"
+0x0e = "KEY_BACK"
utils/keytable/rc_maps.cfg +134 -134

276 lines not on this page · raw message

Signature · 1 line
2.17.1
author
#5 lore raw

PATCH v3 5/5 ir-keytable: add tool to aid migration from lircd

In reply to Sean Young

This python script is written to help users translate their lircd.conf remote definition to ir-keytable toml format. The tool does not cover every possible lircd.conf, but the majority should work.

	./lircd2toml.py PD-202.lircd.conf -o PD-202.toml
---
 contrib/Makefile.am   |   3 +-
 contrib/lircd2toml.py | 527 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 529 insertions(+), 1 deletion(-)
 create mode 100755 contrib/lircd2toml.py
contrib/Makefile.am +2 -1
index d41dc539..db572c54 100644
@@ -25,4 +25,5 @@ EXTRA_DIST = \
 	cobalt-ctl \
 	parsers \
 	pci_traffic \
-	v4l_rec.pl
+	v4l_rec.pl \
+	lircd2toml.py
contrib/lircd2toml.py new file +527 -0

527 lines not on this page · raw message

Signature · 1 line
2.17.1
#6 lore raw
In reply to Sean Young

Hi Sean,

thanks a lot, this is a really nice new feature!

Quoted 27 lines · Sean Young

Once kernel v4.18 is released with IR BPF decoding, this can be merged to v4l-utils.

The idea is that IR decoders can be written in C, compiled to BPF relocatable object file. Any global variables can overriden, so we can supports lots of variants of similiar protocols (just like in the lircd.conf file).

The existing rc_keymap file format can't be used for variables, so I've converted the format to toml. An alternative would be to use the existing lircd.conf file format, but it's a very awkward file to parse in C and it contains many features which are irrelevant to us.

We use libelf to load the bpf relocatable object file.

After loading our example grundig keymap with bpf decoder, the output of ir-keytable is:

Found /sys/class/rc/rc0/ (/dev/input/event8) with:
Name: Winbond CIR
Driver: winbond-cir, table: rc-rc6-mce
LIRC device: /dev/lirc0
Attached BPF protocols: grundig
Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon Enabled protocols: lirc
bus: 25, vendor/product: 10ad:00f1, version: 0x0004
Repeat delay = 500 ms, repeat period = 125 ms

Quoted 8 lines

Alternatively, you simply specify the path to the object file on the command line:

$ ir-keytable -e header_pulse=9000,header_space=4500 -p ./pulse_distance.o

Derek, please note that you can now convert the dish lircd.conf to toml and load the keymap; it should just work. It would be great to have your feedback, thank you.

I did a few tests with one of my RC-5 remotes, this lircd.conf file
https://github.com/PiSupply/JustBoom/blob/master/LIRC/lircd.conf
and kernel 4.18-rc5 on RPi2, with the 32bit ARM kernel and gpio-ir-recv, and on LePotato / aarch64 with meson-ir.

lircd2toml.py did a really good job on converting it, the only thing missing was the toggle_bit.

When testing the converted toml (with "toggle_bit = 11" added and the obvious volume keycode fixes) I noticed a couple of issues:

Buttons seem to be "stuck". The scancode is decoded, key_down event is generated, but after release the key_down events repeat indefinitely - with the built-in rc-5 decoder this works fine.

root@upstream:/home/hias/ir-test# ir-keytable -c -w justboom.toml -t
Old keytable cleared
Wrote 12 keycode(s) to driver
Protocols changed to
Loaded BPF protocol manchester
Testing events. Please, press CTRL-C to abort.
29.065820: lirc protocol(66): scancode = 0x141b
29.065890: event type EV_MSC(0x04): scancode = 0x141b
29.065890: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.065890: event type EV_SYN(0x00).
29.570059: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.570059: event type EV_SYN(0x00).
29.710062: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.710062: event type EV_SYN(0x00).
29.850057: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.850057: event type EV_SYN(0x00).
29.990057: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.990057: event type EV_SYN(0x00).
30.130055: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
30.130055: event type EV_SYN(0x00).
...

Even scancodes, eg KEY_UP / scancode 0x141a, aren't decoded at all, only odd scancodes work. My guess is the manchester decoder could have a problem when the last bit is zero and the message doesn't end with a pulse, but a (rather long) timeout.

(Re-)loading a bpf decoder only works 8 times. The 9th attempt gives an error message.

# for i in `seq 1 9` ; do ir-keytable -p manchester ; done
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
failed to create a map: 1 Operation not permitted
Loaded BPF protocol manchester

so long,

Hias

author
#7 lore raw

Hi Hias,

Quoted 3 lines · Matthias Reichl

Hi Sean,

thanks a lot, this is a really nice new feature!

Thank you for testing it and finding all those issues, it has become much better from your testing.

Quoted 37 lines · Sean Young
Quoted 27 lines

Once kernel v4.18 is released with IR BPF decoding, this can be merged to v4l-utils.

The idea is that IR decoders can be written in C, compiled to BPF relocatable object file. Any global variables can overriden, so we can supports lots of variants of similiar protocols (just like in the lircd.conf file).

The existing rc_keymap file format can't be used for variables, so I've converted the format to toml. An alternative would be to use the existing lircd.conf file format, but it's a very awkward file to parse in C and it contains many features which are irrelevant to us.

We use libelf to load the bpf relocatable object file.

After loading our example grundig keymap with bpf decoder, the output of ir-keytable is:

Found /sys/class/rc/rc0/ (/dev/input/event8) with:
Name: Winbond CIR
Driver: winbond-cir, table: rc-rc6-mce
LIRC device: /dev/lirc0
Attached BPF protocols: grundig
Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon Enabled protocols: lirc
bus: 25, vendor/product: 10ad:00f1, version: 0x0004
Repeat delay = 500 ms, repeat period = 125 ms

Quoted 8 lines

Alternatively, you simply specify the path to the object file on the command line:

$ ir-keytable -e header_pulse=9000,header_space=4500 -p ./pulse_distance.o

Derek, please note that you can now convert the dish lircd.conf to toml and load the keymap; it should just work. It would be great to have your feedback, thank you.

Quoted 7 lines

I did a few tests with one of my RC-5 remotes, this lircd.conf file
https://github.com/PiSupply/JustBoom/blob/master/LIRC/lircd.conf
and kernel 4.18-rc5 on RPi2, with the 32bit ARM kernel and gpio-ir-recv, and on LePotato / aarch64 with meson-ir.

lircd2toml.py did a really good job on converting it, the only thing missing was the toggle_bit.

Right, there was a bug in lirc2html.py. I've added a fix to my bpf branch:

https://git.linuxtv.org/syoung/v4l-utils.git/log/?h=bpf

Quoted 20 lines

When testing the converted toml (with "toggle_bit = 11" added and the obvious volume keycode fixes) I noticed a couple of issues:

Buttons seem to be "stuck". The scancode is decoded, key_down event is generated, but after release the key_down events repeat indefinitely - with the built-in rc-5 decoder this works fine.

root@upstream:/home/hias/ir-test# ir-keytable -c -w justboom.toml -t
Old keytable cleared
Wrote 12 keycode(s) to driver
Protocols changed to
Loaded BPF protocol manchester
Testing events. Please, press CTRL-C to abort.
29.065820: lirc protocol(66): scancode = 0x141b
29.065890: event type EV_MSC(0x04): scancode = 0x141b
29.065890: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.065890: event type EV_SYN(0x00).
29.570059: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.570059: event type EV_SYN(0x00).
29.710062: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
Quoted 8 lines
29.710062: event type EV_SYN(0x00).
29.850057: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.850057: event type EV_SYN(0x00).
29.990057: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.990057: event type EV_SYN(0x00).
30.130055: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
30.130055: event type EV_SYN(0x00).
...

Thanks, I had not seen this yet either. There is a fix here:

https://www.mail-archive.com/[email protected]/msg133813.html

Quoted 4 lines

Even scancodes, eg KEY_UP / scancode 0x141a, aren't decoded at all, only odd scancodes work. My guess is the manchester decoder could have a problem when the last bit is zero and the message doesn't end with a pulse, but a (rather long) timeout.

Yep, yet another bug! I'v added a fix here:

https://git.linuxtv.org/syoung/v4l-utils.git/log/?h=bpf

Quoted 15 lines

(Re-)loading a bpf decoder only works 8 times. The 9th attempt gives an error message.

# for i in `seq 1 9` ; do ir-keytable -p manchester ; done
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Quoted 8 lines
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
failed to create a map: 1 Operation not permitted
Loaded BPF protocol manchester

There was a bug where bpf programs were leaked on detach. Unfortunately the fix had not made it to the branch when you were testing.

https://www.mail-archive.com/[email protected]/msg133273.html

Sean

#8 lore raw

Hi Sean,

Quoted 52 lines · Sean Young

Hi Hias,

Quoted 3 lines · Matthias Reichl

Hi Sean,

thanks a lot, this is a really nice new feature!

Thank you for testing it and finding all those issues, it has become much better from your testing.

Quoted 42 lines · Sean Young
Quoted 27 lines

Once kernel v4.18 is released with IR BPF decoding, this can be merged to v4l-utils.

The idea is that IR decoders can be written in C, compiled to BPF relocatable object file. Any global variables can overriden, so we can supports lots of variants of similiar protocols (just like in the lircd.conf file).

The existing rc_keymap file format can't be used for variables, so I've converted the format to toml. An alternative would be to use the existing lircd.conf file format, but it's a very awkward file to parse in C and it contains many features which are irrelevant to us.

We use libelf to load the bpf relocatable object file.

After loading our example grundig keymap with bpf decoder, the output of ir-keytable is:

Found /sys/class/rc/rc0/ (/dev/input/event8) with:
Name: Winbond CIR
Driver: winbond-cir, table: rc-rc6-mce
LIRC device: /dev/lirc0
Attached BPF protocols: grundig
Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon Enabled protocols: lirc
bus: 25, vendor/product: 10ad:00f1, version: 0x0004
Repeat delay = 500 ms, repeat period = 125 ms

Quoted 8 lines

Alternatively, you simply specify the path to the object file on the command line:

$ ir-keytable -e header_pulse=9000,header_space=4500 -p ./pulse_distance.o

Derek, please note that you can now convert the dish lircd.conf to toml and load the keymap; it should just work. It would be great to have your feedback, thank you.

I did a few tests with one of my RC-5 remotes, this lircd.conf file
https://github.com/PiSupply/JustBoom/blob/master/LIRC/lircd.conf
and kernel 4.18-rc5 on RPi2, with the 32bit ARM kernel and gpio-ir-recv, and on LePotato / aarch64 with meson-ir.

Quoted 6 lines
Quoted 2 lines

lircd2toml.py did a really good job on converting it, the only thing missing was the toggle_bit.

Right, there was a bug in lirc2html.py. I've added a fix to my bpf branch:

https://git.linuxtv.org/syoung/v4l-utils.git/log/?h=bpf

Thanks a lot, lircd2toml.py now also seems to detect that the lircd.conf uses the rc-5 protocol and uses the rc-5 decoder - that's really nice!

Quoted 29 lines
Quoted 20 lines

When testing the converted toml (with "toggle_bit = 11" added and the obvious volume keycode fixes) I noticed a couple of issues:

Buttons seem to be "stuck". The scancode is decoded, key_down event is generated, but after release the key_down events repeat indefinitely - with the built-in rc-5 decoder this works fine.

root@upstream:/home/hias/ir-test# ir-keytable -c -w justboom.toml -t
Old keytable cleared
Wrote 12 keycode(s) to driver
Protocols changed to
Loaded BPF protocol manchester
Testing events. Please, press CTRL-C to abort.
29.065820: lirc protocol(66): scancode = 0x141b
29.065890: event type EV_MSC(0x04): scancode = 0x141b
29.065890: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.065890: event type EV_SYN(0x00).
29.570059: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.570059: event type EV_SYN(0x00).
29.710062: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
Quoted 8 lines
29.710062: event type EV_SYN(0x00).
29.850057: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.850057: event type EV_SYN(0x00).
29.990057: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
29.990057: event type EV_SYN(0x00).
30.130055: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
30.130055: event type EV_SYN(0x00).
...
Quoted 3 lines

Thanks, I had not seen this yet either. There is a fix here:

https://www.mail-archive.com/[email protected]/msg133813.html

Thanks, the patch seems to fix it, I posted a small nit in the thread.

Quoted 8 lines
Quoted 4 lines

Even scancodes, eg KEY_UP / scancode 0x141a, aren't decoded at all, only odd scancodes work. My guess is the manchester decoder could have a problem when the last bit is zero and the message doesn't end with a pulse, but a (rather long) timeout.

Yep, yet another bug! I'v added a fix here:

https://git.linuxtv.org/syoung/v4l-utils.git/log/?h=bpf

Thanks, using the manchester decoder with rc-5 looks fine now!

Quoted 24 lines
Quoted 15 lines

(Re-)loading a bpf decoder only works 8 times. The 9th attempt gives an error message.

# for i in `seq 1 9` ; do ir-keytable -p manchester ; done
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Quoted 8 lines
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
Loaded BPF protocol manchester
Protocols changed to
failed to create a map: 1 Operation not permitted
Loaded BPF protocol manchester
Quoted 4 lines

There was a bug where bpf programs were leaked on detach. Unfortunately the fix had not made it to the branch when you were testing.

https://www.mail-archive.com/[email protected]/msg133273.html

Thanks, this fixed worked, too!

Work is keeping me busy ATM but I'll see if I find some time to do a few more tests. So far it's already looking very good!

so long,

Hias