/* * This program source code file is part of SystemK, a library in the KTag project. * * 🛡️ 🃞 * * Copyright © 2016-2025 Joseph P. Kearney and the KTag developers. * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * There should be a copy of the GNU Affero General Public License in the LICENSE * file in the root of this repository. If not, see . */ /** \file * \brief This file maps IR remote control codes to events used by the KTag system (SystemK). * */ #ifndef COMMAND_MAPPING_H #define COMMAND_MAPPING_H // First Roku Remote Replacement // https://www.amazon.com/gp/product/B01G7OX9WS/ #define NEC_COMMAND_ROKU_01_BACK_ARROW 2573648618 #define NEC_COMMAND_ROKU_01_HOME 4228104938 #define NEC_COMMAND_ROKU_01_UP_ARROW 3860447978 #define NEC_COMMAND_ROKU_01_RIGHT_ARROW 3526214378 #define NEC_COMMAND_ROKU_01_DOWN_ARROW 3425944298 #define NEC_COMMAND_ROKU_01_LEFT_ARROW 3776889578 #define NEC_COMMAND_ROKU_01_OK 3576349418 #define NEC_COMMAND_ROKU_01_COUNTERCLOCKWISE 3576349418 #define NEC_COMMAND_ROKU_01_ASTERIX 2657207018 #define NEC_COMMAND_ROKU_01_REWIND 3409232618 #define NEC_COMMAND_ROKU_01_PLAY_PAUSE 3008152298 #define NEC_COMMAND_ROKU_01_FAST_FORWARD 2857747178 #define NEC_COMMAND_ROKU_01_CHANNEL_CRACKLE 2155856618 #define NEC_COMMAND_ROKU_01_CHANNEL_PANDORA 2907882218 #define NEC_COMMAND_ROKU_01_CHANNEL_MGO 4027564778 #define NEC_COMMAND_ROKU_01_CHANNEL_AMAZON 4027564778 #define NEC_COMMAND_ROKU_01_CHANNEL_NETFLIX 3024863978 #define NEC_COMMAND_ROKU_01_CHANNEL_BLOCKBUSTER 3743466218 // Second Roku Remote Replacement // https://www.amazon.com/dp/B09Z6Q2MLC/ #define NEC_COMMAND_ROKU_02_BACK_ARROW 2573649898 #define NEC_COMMAND_ROKU_02_HOME 4228106218 #define NEC_COMMAND_ROKU_02_UP_ARROW 3860449258 #define NEC_COMMAND_ROKU_02_RIGHT_ARROW 3526215658 #define NEC_COMMAND_ROKU_02_DOWN_ARROW 3425945578 #define NEC_COMMAND_ROKU_02_LEFT_ARROW 3776890858 #define NEC_COMMAND_ROKU_02_OK 3576350698 #define NEC_COMMAND_ROKU_02_COUNTERCLOCKWISE 2272839658 #define NEC_COMMAND_ROKU_02_ASTERIX 2272839658 #define NEC_COMMAND_ROKU_02_REWIND 3409233898 #define NEC_COMMAND_ROKU_02_PLAY_PAUSE 3008153578 #define NEC_COMMAND_ROKU_02_FAST_FORWARD 2857748458 #define NEC_COMMAND_ROKU_02_CHANNEL_NETFLIX 2907883498 #define NEC_COMMAND_ROKU_02_CHANNEL_HULU 2991441898 #define NEC_COMMAND_ROKU_02_CHANNEL_YOUTUBE 2841036778 #define NEC_COMMAND_ROKU_02_CHANNEL_DISNEYPLUS 4077701098 // Samsung BN59-01301A TV Remote Control // https://samsungparts.com/products/bn59-01301a #define NEC_COMMAND_SAMSUNG_TV_POWER 4244768519 #define NEC_COMMAND_SAMSUNG_TV_SOURCE 4261480199 #define NEC_COMMAND_SAMSUNG_TV_SLEEP 4228056839 #define NEC_COMMAND_SAMSUNG_TV_HOME 2256078599 #define NEC_COMMAND_SAMSUNG_TV_GUIDE 2957969159 #define NEC_COMMAND_SAMSUNG_TV_SETTINGS 3843688199 #define NEC_COMMAND_SAMSUNG_TV_INFO 3760129799 #define NEC_COMMAND_SAMSUNG_TV_UP_ARROW 2673870599 #define NEC_COMMAND_SAMSUNG_TV_RIGHT_ARROW 2640447239 #define NEC_COMMAND_SAMSUNG_TV_DOWN_ARROW 2657158919 #define NEC_COMMAND_SAMSUNG_TV_LEFT_ARROW 2590312199 #define NEC_COMMAND_SAMSUNG_TV_CENTER_SELECT 2540177159 #define NEC_COMMAND_SAMSUNG_TV_RETURN 2807564039 #define NEC_COMMAND_SAMSUNG_TV_EXIT 3526166279 __attribute__((always_inline)) inline void Remap_NEC_Command(KEvent_T *event, uint32_t NEC_data) { switch (NEC_data) { case NEC_COMMAND_ROKU_01_HOME: case NEC_COMMAND_ROKU_02_HOME: case NEC_COMMAND_SAMSUNG_TV_HOME: case NEC_COMMAND_SAMSUNG_TV_SETTINGS: event->ID = KEVENT_MENU_ENTER; break; case NEC_COMMAND_ROKU_01_BACK_ARROW: case NEC_COMMAND_ROKU_02_BACK_ARROW: case NEC_COMMAND_SAMSUNG_TV_EXIT: event->ID = KEVENT_MENU_EXIT; break; case NEC_COMMAND_ROKU_01_OK: case NEC_COMMAND_ROKU_02_OK: case NEC_COMMAND_SAMSUNG_TV_CENTER_SELECT: event->ID = KEVENT_MENU_SELECT; break; case NEC_COMMAND_ROKU_01_UP_ARROW: case NEC_COMMAND_ROKU_02_UP_ARROW: case NEC_COMMAND_SAMSUNG_TV_UP_ARROW: event->ID = KEVENT_MENU_UP; break; case NEC_COMMAND_ROKU_01_DOWN_ARROW: case NEC_COMMAND_ROKU_02_DOWN_ARROW: case NEC_COMMAND_SAMSUNG_TV_DOWN_ARROW: event->ID = KEVENT_MENU_DOWN; break; case NEC_COMMAND_ROKU_01_LEFT_ARROW: case NEC_COMMAND_ROKU_02_LEFT_ARROW: case NEC_COMMAND_ROKU_01_RIGHT_ARROW: case NEC_COMMAND_ROKU_02_RIGHT_ARROW: case NEC_COMMAND_SAMSUNG_TV_LEFT_ARROW: case NEC_COMMAND_SAMSUNG_TV_RIGHT_ARROW: event->ID = KEVENT_MENU_BACK; break; case NEC_COMMAND_ROKU_01_ASTERIX: case NEC_COMMAND_ROKU_02_ASTERIX: case NEC_COMMAND_SAMSUNG_TV_SOURCE: event->ID = KEVENT_REPROGRAM; break; case NEC_COMMAND_ROKU_01_PLAY_PAUSE: case NEC_COMMAND_ROKU_02_PLAY_PAUSE: event->ID = KEVENT_PLAY_PRESSED_ON_REMOTE; break; default: break; } } #endif // COMMAND_MAPPING_H