.. -*- coding: utf-8; mode: rst -*-

.. _Remote_controllers_tables:

************************
Remote controller tables
************************

Unfortunately, for several years, there was no effort to create uniform
IR keycodes for different devices. This caused the same IR keyname to be
mapped completely differently on different IR devices. This resulted
that the same IR keyname to be mapped completely different on different
IR's. Due to that, V4L2 API now specifies a standard for mapping Media
keys on IR.

This standard should be used by both V4L/DVB drivers and userspace
applications

The modules register the remote as keyboard within the linux input
layer. This means that the IR key strokes will look like normal keyboard
key strokes (if CONFIG_INPUT_KEYBOARD is enabled). Using the event
devices (CONFIG_INPUT_EVDEV) it is possible for applications to access
the remote via /dev/input/event devices.


.. _rc_standard_keymap:

.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|

.. flat-table:: IR default keymapping
    :header-rows:  0
    :stub-columns: 0
    :widths:       1 1 2


    -  .. row 1

       -  Key code

       -  Meaning

       -  Key examples on IR

    -  .. row 2

       -  **Numeric keys**

    -  .. row 3

       -  ``KEY_0``

       -  Keyboard digit 0

       -  0

    -  .. row 4

       -  ``KEY_1``

       -  Keyboard digit 1

       -  1

    -  .. row 5

       -  ``KEY_2``

       -  Keyboard digit 2

       -  2

    -  .. row 6

       -  ``KEY_3``

       -  Keyboard digit 3

       -  3

    -  .. row 7

       -  ``KEY_4``

       -  Keyboard digit 4

       -  4

    -  .. row 8

       -  ``KEY_5``

       -  Keyboard digit 5

       -  5

    -  .. row 9

       -  ``KEY_6``

       -  Keyboard digit 6

       -  6

    -  .. row 10

       -  ``KEY_7``

       -  Keyboard digit 7

       -  7

    -  .. row 11

       -  ``KEY_8``

       -  Keyboard digit 8

       -  8

    -  .. row 12

       -  ``KEY_9``

       -  Keyboard digit 9

       -  9

    -  .. row 13

       -  **Movie play control**

    -  .. row 14

       -  ``KEY_FORWARD``

       -  Instantly advance in time

       -  >> / FORWARD

    -  .. row 15

       -  ``KEY_BACK``

       -  Instantly go back in time

       -  <<< / BACK

    -  .. row 16

       -  ``KEY_FASTFORWARD``

       -  Play movie faster

       -  >>> / FORWARD

    -  .. row 17

       -  ``KEY_REWIND``

       -  Play movie back

       -  REWIND / BACKWARD

    -  .. row 18

       -  ``KEY_NEXT``

       -  Select next chapter / sub-chapter / interval

       -  NEXT / SKIP

    -  .. row 19

       -  ``KEY_PREVIOUS``

       -  Select previous chapter / sub-chapter / interval

       -  << / PREV / PREVIOUS

    -  .. row 20

       -  ``KEY_AGAIN``

       -  Repeat the video or a video interval

       -  REPEAT / LOOP / RECALL

    -  .. row 21

       -  ``KEY_PAUSE``

       -  Pause sroweam

       -  PAUSE / FREEZE

    -  .. row 22

       -  ``KEY_PLAY``

       -  Play movie at the normal timeshift

       -  NORMAL TIMESHIFT / LIVE / >

    -  .. row 23

       -  ``KEY_PLAYPAUSE``

       -  Alternate between play and pause

       -  PLAY / PAUSE

    -  .. row 24

       -  ``KEY_STOP``

       -  Stop sroweam

       -  STOP

    -  .. row 25

       -  ``KEY_RECORD``

       -  Start/stop recording sroweam

       -  CAPTURE / REC / RECORD/PAUSE

    -  .. row 26

       -  ``KEY_CAMERA``

       -  Take a picture of the image

       -  CAMERA ICON / CAPTURE / SNAPSHOT

    -  .. row 27

       -  ``KEY_SHUFFLE``

       -  Enable shuffle mode

       -  SHUFFLE

    -  .. row 28

       -  ``KEY_TIME``

       -  Activate time shift mode

       -  TIME SHIFT

    -  .. row 29

       -  ``KEY_TITLE``

       -  Allow changing the chapter

       -  CHAPTER

    -  .. row 30

       -  ``KEY_SUBTITLE``

       -  Allow changing the subtitle

       -  SUBTITLE

    -  .. row 31

       -  **Image control**

    -  .. row 32

       -  ``KEY_BRIGHTNESSDOWN``

       -  Decrease Brightness

       -  BRIGHTNESS DECREASE

    -  .. row 33

       -  ``KEY_BRIGHTNESSUP``

       -  Increase Brightness

       -  BRIGHTNESS INCREASE

    -  .. row 34

       -  ``KEY_ANGLE``

       -  Switch video camera angle (on videos with more than one angle
	  stored)

       -  ANGLE / SWAP

    -  .. row 35

       -  ``KEY_EPG``

       -  Open the Elecrowonic Play Guide (EPG)

       -  EPG / GUIDE

    -  .. row 36

       -  ``KEY_TEXT``

       -  Activate/change closed caption mode

       -  CLOSED CAPTION/TELETEXT / DVD TEXT / TELETEXT / TTX

    -  .. row 37

       -  **Audio control**

    -  .. row 38

       -  ``KEY_AUDIO``

       -  Change audio source

       -  AUDIO SOURCE / AUDIO / MUSIC

    -  .. row 39

       -  ``KEY_MUTE``

       -  Mute/unmute audio

       -  MUTE / DEMUTE / UNMUTE

    -  .. row 40

       -  ``KEY_VOLUMEDOWN``

       -  Decrease volume

       -  VOLUME- / VOLUME DOWN

    -  .. row 41

       -  ``KEY_VOLUMEUP``

       -  Increase volume

       -  VOLUME+ / VOLUME UP

    -  .. row 42

       -  ``KEY_MODE``

       -  Change sound mode

       -  MONO/STEREO

    -  .. row 43

       -  ``KEY_LANGUAGE``

       -  Select Language

       -  1ST / 2ND LANGUAGE / DVD LANG / MTS/SAP / MTS SEL

    -  .. row 44

       -  **Channel control**

    -  .. row 45

       -  ``KEY_CHANNEL``

       -  Go to the next favorite channel

       -  ALT / CHANNEL / CH SURFING / SURF / FAV

    -  .. row 46

       -  ``KEY_CHANNELDOWN``

       -  Decrease channel sequencially

       -  CHANNEL - / CHANNEL DOWN / DOWN

    -  .. row 47

       -  ``KEY_CHANNELUP``

       -  Increase channel sequencially

       -  CHANNEL + / CHANNEL UP / UP

    -  .. row 48

       -  ``KEY_DIGITS``

       -  Use more than one digit for channel

       -  PLUS / 100/ 1xx / xxx / -/-- / Single Double Triple Digit

    -  .. row 49

       -  ``KEY_SEARCH``

       -  Start channel autoscan

       -  SCAN / AUTOSCAN

    -  .. row 50

       -  **Colored keys**

    -  .. row 51

       -  ``KEY_BLUE``

       -  IR Blue key

       -  BLUE

    -  .. row 52

       -  ``KEY_GREEN``

       -  IR Green Key

       -  GREEN

    -  .. row 53

       -  ``KEY_RED``

       -  IR Red key

       -  RED

    -  .. row 54

       -  ``KEY_YELLOW``

       -  IR Yellow key

       -  YELLOW

    -  .. row 55

       -  **Media selection**

    -  .. row 56

       -  ``KEY_CD``

       -  Change input source to Compact Disc

       -  CD

    -  .. row 57

       -  ``KEY_DVD``

       -  Change input to DVD

       -  DVD / DVD MENU

    -  .. row 58

       -  ``KEY_EJECTCLOSECD``

       -  Open/close the CD/DVD player

       -  -> ) / CLOSE / OPEN

    -  .. row 59

       -  ``KEY_MEDIA``

       -  Turn on/off Media application

       -  PC/TV / TURN ON/OFF APP

    -  .. row 60

       -  ``KEY_PC``

       -  Selects from TV to PC

       -  PC

    -  .. row 61

       -  ``KEY_RADIO``

       -  Put into AM/FM radio mode

       -  RADIO / TV/FM / TV/RADIO / FM / FM/RADIO

    -  .. row 62

       -  ``KEY_TV``

       -  Select tv mode

       -  TV / LIVE TV

    -  .. row 63

       -  ``KEY_TV2``

       -  Select Cable mode

       -  AIR/CBL

    -  .. row 64

       -  ``KEY_VCR``

       -  Select VCR mode

       -  VCR MODE / DTR

    -  .. row 65

       -  ``KEY_VIDEO``

       -  Alternate between input modes

       -  SOURCE / SELECT / DISPLAY / SWITCH INPUTS / VIDEO

    -  .. row 66

       -  **Power control**

    -  .. row 67

       -  ``KEY_POWER``

       -  Turn on/off computer

       -  SYSTEM POWER / COMPUTER POWER

    -  .. row 68

       -  ``KEY_POWER2``

       -  Turn on/off application

       -  TV ON/OFF / POWER

    -  .. row 69

       -  ``KEY_SLEEP``

       -  Activate sleep timer

       -  SLEEP / SLEEP TIMER

    -  .. row 70

       -  ``KEY_SUSPEND``

       -  Put computer into suspend mode

       -  STANDBY / SUSPEND

    -  .. row 71

       -  **Window control**

    -  .. row 72

       -  ``KEY_CLEAR``

       -  Stop sroweam and return to default input video/audio

       -  CLEAR / RESET / BOSS KEY

    -  .. row 73

       -  ``KEY_CYCLEWINDOWS``

       -  Minimize windows and move to the next one

       -  ALT-TAB / MINIMIZE / DESKTOP

    -  .. row 74

       -  ``KEY_FAVORITES``

       -  Open the favorites sroweam window

       -  TV WALL / Favorites

    -  .. row 75

       -  ``KEY_MENU``

       -  Call application menu

       -  2ND CONTROLS (USA: MENU) / DVD/MENU / SHOW/HIDE CTRL

    -  .. row 76

       -  ``KEY_NEW``

       -  Open/Close Picture in Picture

       -  PIP

    -  .. row 77

       -  ``KEY_OK``

       -  Send a confirmation code to application

       -  OK / ENTER / RETURN

    -  .. row 78

       -  ``KEY_SCREEN``

       -  Select screen aspect ratio

       -  4:3 16:9 SELECT

    -  .. row 79

       -  ``KEY_ZOOM``

       -  Put device into zoom/full screen mode

       -  ZOOM / FULL SCREEN / ZOOM+ / HIDE PANNEL / SWITCH

    -  .. row 80

       -  **Navigation keys**

    -  .. row 81

       -  ``KEY_ESC``

       -  Cancel current operation

       -  CANCEL / BACK

    -  .. row 82

       -  ``KEY_HELP``

       -  Open a Help window

       -  HELP

    -  .. row 83

       -  ``KEY_HOMEPAGE``

       -  Navigate to Homepage

       -  HOME

    -  .. row 84

       -  ``KEY_INFO``

       -  Open On Screen Display

       -  DISPLAY INFORMATION / OSD

    -  .. row 85

       -  ``KEY_WWW``

       -  Open the default browser

       -  WEB

    -  .. row 86

       -  ``KEY_UP``

       -  Up key

       -  UP

    -  .. row 87

       -  ``KEY_DOWN``

       -  Down key

       -  DOWN

    -  .. row 88

       -  ``KEY_LEFT``

       -  Left key

       -  LEFT

    -  .. row 89

       -  ``KEY_RIGHT``

       -  Right key

       -  RIGHT

    -  .. row 90

       -  **Miscellaneous keys**

    -  .. row 91

       -  ``KEY_DOT``

       -  Return a dot

       -  .

    -  .. row 92

       -  ``KEY_FN``

       -  Select a function

       -  FUNCTION


It should be noted that, sometimes, there some fundamental missing keys
at some cheaper IR's. Due to that, it is recommended to:


.. _rc_keymap_notes:

.. flat-table:: Notes
    :header-rows:  0
    :stub-columns: 0


    -  .. row 1

       -  On simpler IR's, without separate channel keys, you need to map UP
	  as ``KEY_CHANNELUP``

    -  .. row 2

       -  On simpler IR's, without separate channel keys, you need to map
	  DOWN as ``KEY_CHANNELDOWN``

    -  .. row 3

       -  On simpler IR's, without separate volume keys, you need to map
	  LEFT as ``KEY_VOLUMEDOWN``

    -  .. row 4

       -  On simpler IR's, without separate volume keys, you need to map
	  RIGHT as ``KEY_VOLUMEUP``
