Remote controllers

Currently, most analog and digital devices have an Infrared input for a remote control. Each manufacturer has their own type of control. It is not uncommon for the same manufacturer to ship different types of remote controls, depending on the device.

Adding support for new IR's

In order to add support for a new keyboard, you need first to discover how the IR code is sent to the device. There are several possibilities:

* IR sensor is directly connected with a GPIO pin of the PCI/USB bridge. This is a very common case nowadays.
* This is probably the easiest way to add support, provided that the driver has already other similar devices. For an example, please see: add IR support for saa7134.
* Bridge has an IR decoder inside. Some chipsets have already some internal decoder for IR, like dib0700 and em2884;
* There's a small chip that does serial to parallel conversion, outputting the IR code at several GPIO pins.

The way to get the data is hardware specific. Once the driver is able to get an IR scancode, it is generally required to create a new table for it.

NOTE: before adding a new table, please check if the existing ones have already the proper mapping.

The first step to add a new map is to create an alias for it atinclude/media/rc-map.h:

All you need to do is to make sure that those codes are properly mapped at the keycode table, and to specify
the ir_type (in this case, IR_TYPE_NEC). So, to support the above, the main content of the new rc map will be:

Don't forget to add the new module at drivers/media/IR/keymaps/Makefile, otherwise, it won't be built.

IR Keycode map used by media devices

While there has been effort over the years to keep track of the varying IR layouts (documenting them within ir-common.c), unfortunately, there was never any effort to uniform the actual IR keycodes used by the different devices. This lack of uniformity resulted in cases where the same IR keyname was mapped completely different on different IR's. The overall state of confusion that existed is perhaps best demonstrated by viewing what ir-common.c IR summary looked like as of Aug, 26 2009.

On Aug, 27 2009, having a common mapping for supported IR's became the subject of a proposal which would allow userspace applications to make use of common keycode definitions. The table bellow reflects the expected keycode mappings for IR keys.

Key code

Meaning

Key examples on IR

Notes

Numeric keys

KEY_0

Keyboard digit 0

0

KEY_1

Keyboard digit 1

1

KEY_2

Keyboard digit 2

2

KEY_3

Keyboard digit 3

3

KEY_4

Keyboard digit 4

4

KEY_5

Keyboard digit 5

5

KEY_6

Keyboard digit 6

6

KEY_7

Keyboard digit 7

7

KEY_8

Keyboard digit 8

8

KEY_9

Keyboard digit 9

9

Movie play control

KEY_FORWARD

Instantly advance in time

>> / FORWARD

KEY_BACK

Instantly go back in time

<<< / BACK

KEY_FASTFORWARD

Play movie faster

>>> / FORWARD

KEY_REWIND

Play movie back

REWIND / BACKWARD

KEY_NEXT

Select next chapter / sub-chapter / interval

NEXT / SKIP

KEY_PREVIOUS

Select previous chapter / sub-chapter / interval

<< / PREV / PREVIOUS

KEY_AGAIN

Repeat the video or a video interval

REPEAT / LOOP / RECALL

KEY_PAUSE

Pause stream

PAUSE / FREEZE

KEY_PLAY

Play movie at the normal timeshift

NORMAL TIMESHIFT / LIVE / >

KEY_PLAYPAUSE

Alternate between play and pause

PLAY / PAUSE

KEY_STOP

Stop stream

STOP

KEY_RECORD

Start/stop recording stream

CAPTURE / REC / RECORD/PAUSE

KEY_CAMERA

Take a picture of the image

CAMERA ICON / CAPTURE / SNAPSHOT

KEY_SHUFFLE

Enable shuffle mode

SHUFFLE

KEY_TIME

Activate time shift mode

TIME SHIFT

KEY_TITLE

Allow changing the chapter

CHAPTER

KEY_SUBTITLE

Allow changing the subtitle

SUBTITLE

Image control

KEY_BRIGHTNESSDOWN

Decrease Brightness

BRIGHTNESS DECREASE

KEY_BRIGHTNESSUP

Increase Brightness

BRIGHTNESS INCREASE

KEY_ANGLE

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

ANGLE / SWAP

KEY_EPG

Open the Electronic Play Guide (EPG)

EPG / GUIDE

KEY_TEXT

Activate/change closed caption mode

CLOSED CAPTION/TELETEXT / DVD TEXT / TELETEXT / TTX

Audio control

KEY_AUDIO

Change audio source

AUDIO SOURCE / AUDIO / MUSIC

KEY_MUTE

Mute/unmute audio

MUTE / DEMUTE / UNMUTE

KEY_VOLUMEDOWN

Decrease volume

VOLUME- / VOLUME DOWN

KEY_VOLUMEUP

Increase volume

VOLUME+ / VOLUME UP

KEY_MODE

Change sound mode

MONO/STEREO

KEY_LANGUAGE

Select Language

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

Channel control

KEY_CHANNEL

Go to the next favorite channel

ALT / CHANNEL / CH SURFING / SURF / FAV

KEY_CHANNELDOWN

Decrease channel sequencially

CHANNEL - / CHANNEL DOWN / DOWN

KEY_CHANNELUP

Increase channel sequencially

CHANNEL + / CHANNEL UP / UP

KEY_DIGITS

Use more than one digit for channel

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

KEY_SEARCH

Start channel autoscan

SCAN / AUTOSCAN

Colored keys

KEY_BLUE

IR “Blue” key

BLUE

KEY_GREEN

IR “Green” Key

GREEN

KEY_RED

IR “Red” key

RED

KEY_YELLOW

IR “Yellow” key

YELLOW

Media selection

KEY_CD

Change input source to Compact Disc

CD

KEY_DVD

Change input to DVD

DVD / DVD MENU

KEY_EJECTCLOSECD

Open/close the CD/DVD player

-> ) / CLOSE / OPEN

KEY_MEDIA

Turn on/off Media application

PC/TV / TURN ON/OFF APP

KEY_PC

Selects from TV to PC

PC

KEY_RADIO

Put into AM/FM radio mode

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

KEY_TV

Select tv mode

TV / LIVE TV

KEY_TV2

Select Cable mode

AIR/CBL

KEY_VCR

Select VCR mode

VCR MODE / DTR

KEY_VIDEO

Alternate between input modes

SOURCE / SELECT / DISPLAY / SWITCH INPUTS / VIDEO

Power control

KEY_POWER

Turn on/off computer

SYSTEM POWER / COMPUTER POWER

KEY_POWER2

Turn on/off application

TV ON/OFF / POWER

KEY_SLEEP

Activate sleep timer

SLEEP / SLEEP TIMER

KEY_SUSPEND

Put computer into suspend mode

STANDBY / SUSPEND

Window control

KEY_CLEAR

Stop stream and return to default input video/audio

CLEAR / RESET / BOSS KEY

KEY_CYCLEWINDOWS

Minimize windows and move to the next one

ALT-TAB / MINIMIZE / DESKTOP

KEY_FAVORITES

Open the favorites stream window

TV WALL / Favorites

KEY_MENU

Call application menu

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

KEY_NEW

Open/Close Picture in Picture

PIP

KEY_OK

Send a confirmation code to application

OK / ENTER / RETURN

KEY_SCREEN

Select screen aspect ratio

4:3 16:9 SELECT

KEY_ZOOM

Put device into zoom/full screen mode

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

Navigation keys

KEY_ESC

Cancel current operation

CANCEL / BACK

KEY_HELP

Open a Help window

HELP

KEY_HOMEPAGE

Navigate to Homepage

HOME

KEY_INFO

Open On Screen Display

DISPLAY INFORMATION / OSD

KEY_WWW

Open the default browser

WEB

KEY_UP

Up key

UP

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

KEY_DOWN

Down key

DOWN

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

KEY_LEFT

Left key

LEFT

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

KEY_RIGHT

Right key

RIGHT

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