actionmap: Implement key translations
authorMirakels <mirakels@openpli.org>
Fri, 18 Dec 2015 12:28:05 +0000 (13:28 +0100)
committerMirakels <mirakels@openpli.org>
Fri, 18 Dec 2015 12:33:14 +0000 (13:33 +0100)
commit65df3da8cb5d50934ef36bcf8c974b8b437c3708
tree58f799dada33fb41626dea1c36244eb797ce8475
parentcc068caeca3f5b30f6841fb399ab499f8bebbc98
actionmap: Implement key translations

Some remotes lack support for certian buttons or have buttons
with different key codes. This translation feature allows to
translate specific keys into a different one reducing to need
to create bloated keymaps to map several buttons to the same function.

Some remotes are very small and lack certain keys. Using a toggle
feature based on a specific button, buttons can be multi functional

The definitions are like a keymap.xml and the translations can be added
to the default keymap.xml. But to keep keymap.xml clean and to let it serve
as a standard keymap, enigma2 will look for a keytranslation.xml file.
In is just like a keymap.xml but can be used for STB specific mappings
and translations.

An example keytranslation.xml in which the number keys are mapped
to specific other keys is shown below.  The toggle="1" means that
translation will only be done after the toggle key has been pressed. The
toggle element defines the toggle button, in this case the BACKSPACE key.
key definitions without the toggle= attribute (or with a value not equal
to "1") will always be translated regardless the toggle state.

The device name is taken from the /dev/input identifications. Check your
enigma2 log to find the proper names.

<keymap>
      <translate>
              <device name="Small remote device name">
                      <toggle from="KEY_BACKSPACE"/>
                      <key from="KEY_1" to="KEY_RED" toggle="1"/>
                      <key from="KEY_2" to="KEY_GREEN" toggle="1"/>
                      <key from="KEY_3" to="KEY_YELLOW" toggle="1"/>
                      <key from="KEY_4" to="KEY_BLUE" toggle="1"/>
                      <key from="KEY_5" to="KEY_PREVIOUS" toggle="1"/>
                      <key from="KEY_6" to="KEY_NEXT" toggle="1"/>
                      <key from="KEY_7" to="KEY_REWIND" toggle="1"/>
                      <key from="KEY_8" to="KEY_STOP" toggle="1"/>
                      <key from="KEY_9" to="KEY_FASTFORWARD" toggle="1"/>
                      <key from="KEY_0" to="KEY_PLAYPAUSE" toggle="1"/>

                      <key from="KEY_F7" to="KEY_MENU"/>
                      <key from="KEY_F1" to="KEY_VIDEO"/>
                      <key from="KEY_HOME" to="KEY_INFO"/>
                      <key from="KEY_BACK" to="KEY_EXIT"/>
                      <key from="KEY_F2" to="KEY_EPG"/>
                      <key from="KEY_ENTER" to="KEY_OK"/>
              </device>
      </translate>
      <translate>
              <device name="dreambox advanced remote control (native)">
                      <key from="KEY_PLAY" to="KEY_PLAYPAUSE"/>
              </device>
      </translate>
</keymap>
keymapparser.py
lib/actions/action.cpp
lib/actions/action.h
lib/python/Components/UsageConfig.py
mytest.py