TMWNN Posted February 22, 2020 Report Posted February 22, 2020 (edited) Flirc has a hidden method for sending HID Consumer (page 12) codes: flirc_util record_api x 102 where x is in decimal flirc_util record_api 2 x where x is in hexadecimal The first method is only documented in @yawor's forum post; the second is not documented anywhere except sort of in one comment by @jseymour. I tried every value for x from 0 to 0x29c (668 decimal), the highest listed in the HID documentation, to to see which ones cause Nvidia Shield TV to do things. Each is listed with the Android KEYCODE the resulting Flirc binding produced in Button Mapper. (The Flirc codes do not match Android keycodes' numbers.) Flirc code | Android keycode -----------|---------------- 48 | POWER1 50 | SLEEP1 52 | SLEEP1 54 | BUTTON_1 64 | MENU 65 | DPAD_CENTER 66 | DPAD_UP 67 | DPAD_DOWN 68 | DPAD_LEFT 69 | DPAD_RIGHT 70 | ESCAPE 71 | NUMPAD_ADD 72 | NUMPAD_SUBTRACT 101 | CAMERA 111 | BRIGHTNESS_UP 112 | BRIGHTNESS_DOWN 132 | ENTER 137 | TV (Live Channels app) 138 | EXPLORER 140 | CALL 154 | DVR (DVR functionality in Live Channels app) 156 | CHANNEL_UP 157 | CHANNEL_DOWN 176 | MEDIA_PLAY 177 | BREAK 178 | MEDIA_RECORD 179 | MEDIA_FAST_FORWARD 180 | MEDIA_REWIND 181 | MEDIA_NEXT 182 | MEDIA_PREVIOUS 183 | MEDIA_STOP 184 | MEDIA_EJECT 205 | MEDIA_PLAY_PAUSE 207 | VOICE_ASSIST1 (general Google Assistant voice search) 226 | VOLUME_MUTE 233 | VOLUME_UP 234 | VOLUME_DOWN 386 | BOOKMARK 387 | MUSIC 394 | ENVELOPE 397 | CONTACTS 398 | CALENDAR 402 | CALCULATOR 406 | EXPLORER 414 | POWER1 418 | APP_SWITCH1(Recents in Button Mapper) 539 | COPY 540 | CUT 541 | PASTE 545 | VOICE_ASSIST1 547 | HOME 548 | BACK 549 | FORWARD 550 | MEDIA_STOP 554 | BOOKMARK 563 | PAGE_UP 564 | PAGE_DOWN 1 Did not produce Android keycodes in Button Mapper. I identified the corresponding keycodes based on what they caused Shield to do. Other Flirc codes may not generate Android keycodes but still do things that I did not notice. I hope @jason will implement the ability to use flirc_util record_api in long press and/or macro, and perhaps other HID tables and/or true Android keycodes. The latter would obviate the need for apps like Button Mapper to convert HID codes to Android counterparts. Until then, what is this list useful for today? Many of the Flirc codes produce bindings already available for use via the GUI or command line utilities. My remote has separate Play and Pause buttons, and I do prefer to bind the former to MEDIA_PLAY (not in GUI or command line utilities) and the latter to MEDIA_PLAY_PAUSE (which is). Otherwise, unused keybindings can be used in Button Mapper, or Keyboard/Button Mapper, to open specified apps or other duties . Edited February 23, 2020 by TMWNN Ping Quote
kalhimeo Posted February 22, 2020 Report Posted February 22, 2020 excellent finding, thanks a lot for your feedback ! Quote
tmm1 Posted June 19, 2020 Report Posted June 19, 2020 Thanks for sharing! A similar list is also available on https://source.android.com/devices/input/keyboard-devices#hid-consumer-page-0x0c Quote
kbhasi Posted June 26 Report Posted June 26 (edited) Ooh this is awesome!! I've wanted updated Android TV OS control code sets for the FLIRC USB configuration GUI, but am still working on my post detailing my findings for getting it to program codes normally sent by the Google TV reference remotes (specifically the G20 which is a superset of the G10 for devices that have TV tuners), and from there, add the media transport controls that some manufacturers like Hisense, TCL, Skyworth, and Sony add to the remotes for their TV models (including those who sell rebranded Hisense, TCL, and/or Skyworth TVs). The only Android TV OS codes I found in the current 3.15.x release are specifically for the NVIDIA Shield TV older and newer remotes, those may work on my Xiaomi TV Box, but I want more for my Logitech Harmony 300 (which I'm using because FLIRC are still working on their Skip software and can't yet make a Skip 1m or 2m (medium) instead) to use with Sparkle TV that I have installed (and set up to access a Tvheadend system on my home network) as it does support using channel keys. Other than that, the GUI has codes for the original Fire TV, so those just have the basic controls for navigation and playback, but that may not be a problem for some as the only buttons that were added were for volume control, assistance, TV guide, and specific video streaming services, however I don't have any Fire TV devices, so I can't check. I know, however, that Amazon's documentation included some pages that guided developers on porting their Google TV apps (Android TV OS apps) to Fire TV, including how context menus are triggered (press and hold the Enter/Select/OK button to trigger the context menu on Google TV, but Fire TV instead has a dedicated Menu button). I likely won't be posting that post anytime soon as I still have things to test, and I have an older Xiaomi TV Box that was left on Android 9. I plan to get the newer TV Box S 2nd gen, but am not ready as I have an older Full HD TV and don't need some of the new features at this time, but thanks to what you mentioned, I can test the commands using Button Mapper. EDIT: I'm cross-referencing the AOSP documentation page about keyboard input that @tmm1 posted a link to. As I suspected, the AOSP page shows the key codes as hexadecimal numbers, while the FLIRC USB CLI instead uses regular decimal numbers. As I suspected, 30 in hexadecimal is 48 in decimal, and 182 in hexadecimal is 386 in decimal. Edited June 26 by kbhasi Added some additional info Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.