Slide Remote Keyboard Support

Slide Keyboard Layout ([Sym] key to access symbols in row below each row):

      q w e r t y u i   o    p       1 2 3
      ! @ # $ % ^ & *   (    )       + - =

      a s d f g h j k   l    ←       4 5 6
      ~ { } [ ] ; : '   "            * /  

[Clear] z x c v b n m [Sym][Enter]   7 8 9
        < > | \ , . ?                _   `

    [Cap]   [space] [Cap]              0

If the HME application reports a minor version of at least 49, appropriate key code values are transmitted in keypress (and keyrepeat?) events.

  • Backspace is code 65
  • The enter key, when modified by the Alt or Windows key, is sent with code 70, otherwise it is sent as KEY_SELECT
  • Left Shift and Right Shift are codes 71 and 72
  • Left Alt and Right Alt (also Left and Right Windows key) 73 and 74
  • Capslock is code 75
  • ASCII characters 32 (space) through (tilde (~)) come in with a key code equal to the ASCII code plus 2^16 (65536). In other words key code 65568 (space) through 65662 (tilde). This does not include the numbers which send standard HME KEY codes for the numbers.
  • Other keys are assigned to standard HME key codes as listed below.

Keyrelease events, however, report with the below mappings using KEY_UNKNOWN as the key code.

Believed Mappings:
(adjusted raw code = (int)(((rawcode & 0xff00) » 8) - 0x3c);
per William McBrine, but taking into account known keys, the -0x3c shouldn't be applied so arrows can start at 0 instead of -60)
If your HME server reports a minor version number of at least 49, more key codes are reported, and all keys send both keypress and keyrelease.
Otherwise, only the below is reported to HME applications with a minor version below 49.
Slide Remote USB Keyboard adjusted raw code *=not sent without v49 or above key code *=0(UNKNOWN) without v49 sends keypress, too for minor version below 49 Network Remote
A a 0 0x10000 + 'a' * KEYBOARD A
Z z 25 0x10000 + 'z' * KEYBOARD Z
[sym]2 - (including numeric pad) 26 0x10000 + '-' * KEYBOARD MINUS
[sym]3 = 27 0x10000 + '=' * KEYBOARD EQUALS
[sym]f [ 28 0x10000 + '[' * KEYBOARD LBRACKET
[sym]g ] 29 0x10000 + ']' * KEYBOARD RBRACKET
[sym]v \ 30 0x10000 + '\' * KEYBOARD BACKSLASH
[sym]h ; 31 0x10000 + ';' * KEYBOARD SEMICOLON
[sym]k ' 32 0x10000 + ' * KEYBOARD QUOTE (docs map to ")
[sym]b , 33 0x10000 + ',' * KEYBOARD COMMA
[sym]n . 34 0x10000 + '.' * KEYBOARD PERIOD
[sym]5 / (including numeric pad) 35 0x10000 + '/' * KEYBOARD SLASH
[sym]9 36 0x10000 + ’‘’ * KEYBOARD BACKQUOTE
(space) (space) 37 0x10000 + ' ' * KEYBOARD SPACE
tab 38 KEY_UNKNOWN
capslock 39 * 75 * KEYBOARD CAPS
shift (left) 40 * 71 * KEYBOARD LSHIFT
shift (right) 41 * 72 * KEYBOARD RSHIFT
? Cap (left) ? Ctrl (left) 42 KEY_UNKNOWN *
? Cap (right) ? Ctrl (right) 43 KEY_UNKNOWN *
Alt or Win (left) 44 * 73 * KEYBOARD LMETA
Alt or Win (right) 45 * 74 * KEYBOARD RMETA
Page Up 50 KEY_UNKNOWN * KEYBOARD PAGEUP
Page Down 51 KEY_UNKNOWN * KEYBOARD PAGEDOWN
Home 52 KEY_UNKNOWN * KEYBOARD HOME
End 53 KEY_UNKNOWN * KEYBOARD END (in docs)
Insert 54 KEY_UNKNOWN * KEYBOARD INSERT
Backspace 55 * 65 * KEYBOARD BACKSPACE
Delete 56 KEY_UNKNOWN * KEYBOARD DELETE
Print Screen 116 KEY_UNKNOWN *
[sym]0
[sym]1 (not direct entry, not even numeric pad) + 0x10000 + '+' *
[sym]4 (not direct entry, not even numeric pad) * 0x10000 + '*' *
[sym]6
[sym]7 (not direct entry) _ 0x10000 + '_' *
[sym]8
[sym]a (not direct entry) ~ 0x10000 + '~' *
[sym]c (not direct entry) | 0x10000 + '|' *
[sym]d (not direct entry) } 0x10000 + '}' *
[sym]e (not direct entry) # 0x10000 + '#' *
[sym]i (not direct entry) * 0x10000 + '*' *
[sym]j (not direct entry) : 0x10000 + ':' *
[sym]l (not direct entry) " 0x10000 + '"' *
[sym]m (not direct entry) ? 0x10000 + '?' *
[sym]o (not direct entry) ( 0x10000 + '(' *
[sym]p (not direct entry) ) 0x10000 + ')' *
[sym]q (not direct entry) ! 0x10000 + '!' *
[sym]r (not direct entry) $ 0x10000 + '$' *
[sym]s (not direct entry) { 0x10000 + '}' *
[sym]t (not direct entry) % 0x10000 + '%' *
[sym]u (not direct entry) & 0x10000 + '&' *
[sym]w (not direct entry) @ 0x10000 + '@' *
[sym]x (not direct entry) > 0x10000 + '>' *
[sym]y (not direct entry) ^ 0x10000 + '^' *
[sym]z (not direct entry) < 0x10000 + '<' *
Pause pause/break -31 KEY_PAUSE * IRCODE PAUSE
Select Return/Enter (including numeric pad) KEY_SELECT * IRCODE SELECT also KEYBOARD KBDENTER
arrows arrows (-60 - -58) KEY_ (arrows) * KEYBOARD KBDUP/DOWN/LEFT/RIGHT also IRCODE UP/DOWN/LEFT/RIGHT
0 0 (including numeric pad) KEY_ 0 * IRCODE NUM0
9 9 (including numeric pad) KEY_ 9 * IRCODE NUM9
TiVo F1 KEY_TIVO (teleport key) IRCODE TIVO or TELEPORT TIVO
Live TV F2 LIVE TV (teleport key) IRCODE LIVETV not exactly TELEPORT LIVETV
Guide F3 KEY_OPT_GUIDE (teleport key) IRCODE GUIDE or TELEPORT GUIDE
Clear F4 or ESC KEY_CLEAR * IRCODE CLEAR
Thumbs Up F5 KEY_THUMBSUP * IRCODE THUMBSUP
Thumbs Down F6 KEY_THUMBSDOWN * IRCODE THUMBSDOWN
Channel Up F7 KEY_CHANNELUP * IRCODE CHANNELUP
Channel Down F8 KEY_CHANNELDOWN * IRCODE CHANNELDOWN
Record F9 KEY_RECORD * IRCODE RECORD
Info F10 -48 KEY_INFO aka KEY_DISPLAY * IRCODE INFO (or DISPLAY)
F11 KEY_OPT_TOP_MENU probably (teleport key) IRCODE DIRECTV (maybe? which takes you to SD TiVo Menu regardless of menu mode)
F12 -46 * IRCODE OPTIONS (does nothing)
Sym ? does this send anything? it must
Play KEY_PLAY IRCODE PLAY
Slow KEY_SLOW IRCODE SLOW
Reverse KEY_REVERSE IRCODE REVERSE
Forward KEY_FORWARD IRCODE FORWARD
Replay KEY_REPLAY IRCODE REPLAY
Advance KEY_ADVANCE IRCODE ADVANCE (or DELIMITER)
Mute KEY_MUTE IRCODE MUTE
Vol Up KEY_VOLUMEUP IRCODE VOLUMEUP
Vol Down KEY_VOLUMEDOWN IRCODE VOLUMEDOWN
Enter KEY_ENTER IRCODE ENTER

v49 and later: Shift and Capslock affect low byte of many keys (but not numbers) keypress rawcodes - more later.

following tested only in v49:
other IRCODE with key codes:
WINDOW KEY_WINDOW/PIP/ASPECT(/ZOOM)
ACTION_A/B/C/D 56-59 (*?)
following tested only in v49:
other IRCODE (with key code 0):
Network Remote raw code notes
STANDBY (teleport, effectively)
NOWSHOWING (vs. TELEPORT NOWPLAYING)
EXIT (teleports to LiveTV)
ESCAPE (-31232 adjusted: 74)
VIDEO_MODE_FIXED_480i (-13056 adjusted: 145) these are like series 3 video mode button on device - forces mode even in HME
VIDEO_MODE_FIXED_480p (-12800 adjusted: 146)
VIDEO_MODE_FIXED_720p (-12544 adjusted: 147)
VIDEO_MODE_FIXED_1080i (-12288 adjusted: 148)
VIDEO_MODE_HYBRID (-12032 adjusted: 149)
VIDEO_MODE_NATIVE (-11776 adjusted: 150)
ASPECT_CORRECTION_FULL (-11520 adjusted: 151) (stretch SD to fill width)
ASPECT_CORRECTION_PANEL (-11264 adjusted: 152) (black on sides of SD)
ASPECT_CORRECTION_ZOOM (-11008 adjusted: 153) (Zoom in enough for SD to fill width)
ASPECT_CORRECTION_WIDE_ZOOM (-10752 adjusted: 154) not part of normal UI zoom options (SD stretched on edges, not in middle)
CC_ON (-10496 adjusted: 155)
CC_OFF (-10240 adjusted: 156)
TUNER_SWITCH (-9984 adjusted: 157) (does nothing)
VIDEO_MODE_HYBRID_720p (-9728 adjusted: 158)
VIDEO_MODE_HYBRID_1080i (-9472 adjusted: 159)
BACK (-7680 adjusted: 166)
TVINPUT (does nothing, does not send to HME)
TVPOWER (not documented, does not send to HME)

following tested only in v49:
KEYBOARD:
STOP (KEYBOARD according to docs, but IRCODE is fine, too)
VIDEO_ON_DEMAND (sends key code 35(?) to HME just before teleporting to VOD app)

following tested only in v49:
TELEPORT:
SEARCH

Backspace, Shift, Alt, Caps, Windows, Send nothing in a pre-v49 HME environment.
Context Menu key doesn't send any event ever, nor does Scroll Lock and Num Lock.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License