File indexing completed on 2024-04-14 15:31:33
0001 /* 0002 SPDX-FileCopyrightText: 2022 Aditya Mehra <aix.m@outlook.com> 0003 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 #include "keydisplayprovider.h" 0007 #include <QVariantMap> 0008 #include <linux/input-event-codes.h> 0009 #include <KLocalizedString> 0010 0011 KeyDisplayProvider::KeyDisplayProvider(QObject *parent) 0012 : QObject(parent) 0013 { 0014 m_displayMap.append(QVariantMap({{ "key", KEY_PLAY }, { "text", i18n("Play") }, { "genericIcon", "media-playback-start" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0015 m_displayMap.append(QVariantMap({{ "key", KEY_STOP }, { "text", i18n("Stop") }, { "genericIcon", "media-playback-stop" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0016 m_displayMap.append(QVariantMap({{ "key", KEY_PAUSE }, { "text", i18n("Pause") }, { "genericIcon", "media-playback-pause" }, { "gamePadIcon", "media-playback-pause" }, { "psIcon", "" }, { "cecIcon", "" } })); 0017 m_displayMap.append(QVariantMap({{ "key", KEY_REWIND }, { "text", i18n("Rewind") }, { "genericIcon", "media-seek-backward" }, { "gamePadIcon", "media-seek-backward" }, { "psIcon", "" }, { "cecIcon", "" } })); 0018 m_displayMap.append(QVariantMap({{ "key", KEY_FASTFORWARD }, { "text", i18n("Fast Forward") }, { "genericIcon", "media-seek-forward" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0019 m_displayMap.append(QVariantMap({{ "key", KEY_ENTER }, { "text", i18n("Enter") }, { "genericIcon", "keyboard-enter" }, { "gamePadIcon", "input-gamepad-a" }, { "psIcon", "input-gamepad-playstation-cross" }, { "cecIcon", "input-tvremote-ok" } })); 0020 m_displayMap.append(QVariantMap({{ "key", KEY_UP }, { "text", i18n("Up") }, { "genericIcon", "arrow-up" }, { "gamePadIcon", "input-gamepad-dpad-up" }, { "psIcon", "input-gamepad-playstation-dpad-up" }, { "cecIcon", "input-tvremote-dpad-up" } })); 0021 m_displayMap.append(QVariantMap({{ "key", KEY_DOWN }, { "text", i18n("Down") }, { "genericIcon", "arrow-down" }, { "gamePadIcon", "input-gamepad-dpad-down" }, { "psIcon", "input-gamepad-playstation-dpad-down" }, { "cecIcon", "input-tvremote-dpad-down" } })); 0022 m_displayMap.append(QVariantMap({{ "key", KEY_RIGHT }, { "text", i18n("Right") }, { "genericIcon", "arrow-right" }, { "gamePadIcon", "input-gamepad-dpad-right" }, { "psIcon", "input-gamepad-playstation-dpad-right" }, { "cecIcon", "input-tvremote-dpad-right" } })); 0023 m_displayMap.append(QVariantMap({{ "key", KEY_LEFT }, { "text", i18n("Left") }, { "genericIcon", "arrow-left" }, { "gamePadIcon", "input-gamepad-dpad-left" }, { "psIcon", "input-gamepad-playstation-dpad-left" }, { "cecIcon", "input-tvremote-dpad-left" } })); 0024 m_displayMap.append(QVariantMap({{ "key", KEY_0 }, { "text", i18n("Button 0") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0025 m_displayMap.append(QVariantMap({{ "key", KEY_1 }, { "text", i18n("Button 1") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0026 m_displayMap.append(QVariantMap({{ "key", KEY_2 }, { "text", i18n("Button 2") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0027 m_displayMap.append(QVariantMap({{ "key", KEY_3 }, { "text", i18n("Button 3") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0028 m_displayMap.append(QVariantMap({{ "key", KEY_4 }, { "text", i18n("Button 4") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0029 m_displayMap.append(QVariantMap({{ "key", KEY_5 }, { "text", i18n("Button 5") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0030 m_displayMap.append(QVariantMap({{ "key", KEY_6 }, { "text", i18n("Button 6") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0031 m_displayMap.append(QVariantMap({{ "key", KEY_7 }, { "text", i18n("Button 7") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0032 m_displayMap.append(QVariantMap({{ "key", KEY_8 }, { "text", i18n("Button 8") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0033 m_displayMap.append(QVariantMap({{ "key", KEY_9 }, { "text", i18n("Button 9") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0034 m_displayMap.append(QVariantMap({{ "key", KEY_BLUE }, { "text", i18n("Button Blue") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0035 m_displayMap.append(QVariantMap({{ "key", KEY_GREEN }, { "text", i18n("Button Green") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0036 m_displayMap.append(QVariantMap({{ "key", KEY_YELLOW }, { "text", i18n("Button Yellow") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0037 m_displayMap.append(QVariantMap({{ "key", KEY_RED }, { "text", i18n("Button Red") }, { "genericIcon", "" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0038 m_displayMap.append(QVariantMap({{ "key", KEY_CHANNELUP}, { "text", i18n("Channel Up") }, { "genericIcon", "arrow-up-double" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0039 m_displayMap.append(QVariantMap({{ "key", KEY_CHANNELDOWN}, { "text", i18n("Channel Down") }, { "genericIcon", "arrow-down-double" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0040 m_displayMap.append(QVariantMap({{ "key", KEY_EXIT }, { "text", i18n("Exit") }, { "genericIcon", "application-exit" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0041 m_displayMap.append(QVariantMap({{ "key", KEY_BACK }, { "text", i18n("Back") }, { "genericIcon", "go-previous" }, { "gamePadIcon", "input-gamepad-rt" }, { "psIcon", "input-gamepad-playstation-r2" }, { "cecIcon", "input-tvremote-back" } })); 0042 m_displayMap.append(QVariantMap({{ "key", KEY_HOME }, { "text", i18n("Home") }, { "genericIcon", "go-home" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "input-tvremote-home" } })); 0043 m_displayMap.append(QVariantMap({{ "key", KEY_HOMEPAGE }, { "text", i18n("Home") }, { "genericIcon", "go-home" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "input-tvremote-home" } })); 0044 m_displayMap.append(QVariantMap({{ "key", KEY_MENU }, { "text", i18n("Menu") }, { "genericIcon", "menu" }, { "gamePadIcon", "input-gamepad-xbox-series-menu" }, { "psIcon", "input-gamepad-playstation-dualsense-options" }, { "cecIcon", "input-tvremote-menu" } })); 0045 m_displayMap.append(QVariantMap({{ "key", KEY_INFO }, { "text", i18n("Info") }, { "genericIcon", "dialog-information" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0046 m_displayMap.append(QVariantMap({{ "key", KEY_SUBTITLE }, { "text", i18n("Subtitle") }, { "genericIcon", "media-standard-track" }, { "gamePadIcon", "" }, { "psIcon", "" }, { "cecIcon", "" } })); 0047 m_displayMap.append(QVariantMap({{ "key", KEY_LEFTMETA }, { "text", i18n("Left Meta") }, { "genericIcon", "code-function" }, { "gamePadIcon", "input-gamepad-xbox-series-view" }, { "psIcon", "input-gamepad-playstation-dualsense-create" }, { "cecIcon", "" } })); 0048 m_displayMap.append(QVariantMap({{ "key", KEY_GAMES }, { "text", i18n("Games") }, { "genericIcon", "applications-games" }, { "gamePadIcon", "input-gamepad-xbox-360-start" }, { "psIcon", "input-gamepad-playstation-dualshock-3-start" }, { "cecIcon", "" } })); 0049 m_displayMap.append(QVariantMap({{ "key", KEY_CANCEL }, { "text", i18n("Cancel") }, { "genericIcon", "dialog-cancel" }, { "gamePadIcon", "input-gamepad-b" }, { "psIcon", "input-gamepad-circle" }, { "cecIcon", "" } })); 0050 0051 m_displayMap.append(QVariantMap({{ "key", BTN_MODE }, { "text", i18n("Mode") }, { "genericIcon", "input-mouse" }, { "gamePadIcon", "input-gamepad-xbox-series-view" }, { "psIcon", "input-gamepad-playstation-dualsense-create" }, { "cecIcon", "" } })); 0052 m_displayMap.append(QVariantMap({{ "key", BTN_START }, { "text", i18n("Start") }, { "genericIcon", "media-playback-start" }, { "gamePadIcon", "input-gamepad-xbox-360-start" }, { "psIcon", "input-gamepad-playstation-dualshock-3-start" }, { "cecIcon", "" } })); 0053 m_displayMap.append(QVariantMap({{ "key", BTN_NORTH }, { "text", i18n("Gamepad X / Gamepad Square") }, { "genericIcon", "input-gamepad-x" }, { "gamePadIcon", "input-gamepad-x" }, { "psIcon", "input-gamepad-playstation-square" }, { "cecIcon", "" } })); 0054 m_displayMap.append(QVariantMap({{ "key", BTN_SOUTH }, { "text", i18n("Gamepad A / Gamepad Cross") }, { "genericIcon", "input-gamepad-a" }, { "gamePadIcon", "input-gamepad-a" }, { "psIcon", "input-gamepad-playstation-cross" }, { "cecIcon", "" } })); 0055 m_displayMap.append(QVariantMap({{ "key", BTN_EAST }, { "text", i18n("Gamepad B / Gamepad Circle") }, { "genericIcon", "input-gamepad-b" }, { "gamePadIcon", "input-gamepad-b" }, { "psIcon", "input-gamepad-playstation-circle" }, { "cecIcon", "" } })); 0056 m_displayMap.append(QVariantMap({{ "key", BTN_WEST }, { "text", i18n("Gamepad Y / Gamepad Triangle") }, { "genericIcon", "input-gamepad-y" }, { "gamePadIcon", "input-gamepad-y" }, { "psIcon", "input-gamepad-playstation-triangle" }, { "cecIcon", "" } })); 0057 m_displayMap.append(QVariantMap({{ "key", BTN_TL }, { "text", i18n("Trigger Left-1") }, { "genericIcon", "input-gamepad-lb" }, { "gamePadIcon", "input-gamepad-lb" }, { "psIcon", "input-gamepad-playstation-l1" }, { "cecIcon", "" } })); 0058 m_displayMap.append(QVariantMap({{ "key", BTN_TR }, { "text", i18n("Trigger Right-1") }, { "genericIcon", "input-gamepad-rb" }, { "gamePadIcon", "input-gamepad-rb" }, { "psIcon", "input-gamepad-playstation-r1" }, { "cecIcon", "" } })); 0059 m_displayMap.append(QVariantMap({{ "key", BTN_TL2 }, { "text", i18n("Trigger Left-2") }, { "genericIcon", "input-gamepad-lt" }, { "gamePadIcon", "input-gamepad-lt" }, { "psIcon", "input-gamepad-playstation-l2" }, { "cecIcon", "" } })); 0060 m_displayMap.append(QVariantMap({{ "key", BTN_TR2 }, { "text", i18n("Trigger Right-2") }, { "genericIcon", "input-gamepad-rt" }, { "gamePadIcon", "input-gamepad-rt" }, { "psIcon", "input-gamepad-playstation-r2" }, { "cecIcon", "" } })); 0061 m_displayMap.append(QVariantMap({{ "key", BTN_DPAD_UP }, { "text", i18n("DPad Up") }, { "genericIcon", "input-gamepad-dpad-up" }, { "gamePadIcon", "input-gamepad-dpad-up" }, { "psIcon", "input-gamepad-playstation-dpad-up" }, { "cecIcon", "" } })); 0062 m_displayMap.append(QVariantMap({{ "key", BTN_DPAD_DOWN }, { "text", i18n("DPad Down") }, { "genericIcon", "input-gamepad-dpad-down" }, { "gamePadIcon", "input-gamepad-dpad-down" }, { "psIcon", "input-gamepad-playstation-dpad-down" }, { "cecIcon", "" } })); 0063 m_displayMap.append(QVariantMap({{ "key", BTN_DPAD_LEFT }, { "text", i18n("DPad Left") }, { "genericIcon", "input-gamepad-dpad-left" }, { "gamePadIcon", "input-gamepad-dpad-left" }, { "psIcon", "input-gamepad-playstation-dpad-left" }, { "cecIcon", "" } })); 0064 m_displayMap.append(QVariantMap({{ "key", BTN_DPAD_RIGHT }, { "text", i18n("DPad Right") }, { "genericIcon", "input-gamepad-dpad-right" }, { "gamePadIcon", "input-gamepad-dpad-right" }, { "psIcon", "input-gamepad-playstation-dpad-right" }, { "cecIcon", "" } })); 0065 m_displayMap.append(QVariantMap({{ "key", BTN_SELECT }, { "text", i18n("Select") }, { "genericIcon", "input-gamepad-xbox-series-menu" }, { "gamePadIcon", "input-gamepad-xbox-series-menu" }, { "psIcon", "input-gamepad-playstation-dualsense-options" }, { "cecIcon", "" } })); 0066 } 0067 0068 KeyDisplayProvider::~KeyDisplayProvider() 0069 { 0070 0071 } 0072 0073 QString KeyDisplayProvider::keyDisplay(const int &key) const 0074 { 0075 for (const QVariantMap &map : m_displayMap) { 0076 if (map.value("key") == key) { 0077 return map.value("text").toString(); 0078 } 0079 } 0080 return QString(); 0081 } 0082 0083 QString KeyDisplayProvider::keyIcon(const int &key, const QString &deviceType) const 0084 { 0085 for (const QVariantMap &map : m_displayMap) { 0086 if (map.value("key") == key) { 0087 if(deviceType == "Gamepad" || deviceType == "Xbox" || deviceType == "Wii") { 0088 if(!map.value("gamePadIcon").toString().isEmpty()) { 0089 return map.value("gamePadIcon").toString(); 0090 } else { 0091 return map.value("genericIcon").toString(); 0092 } 0093 } else if(deviceType == "playstation") { 0094 if(!map.value("psIcon").toString().isEmpty()) { 0095 return map.value("psIcon").toString(); 0096 } else { 0097 return map.value("genericIcon").toString(); 0098 } 0099 } else if(deviceType == "CEC") { 0100 if(!map.value("cecIcon").toString().isEmpty()) { 0101 return map.value("cecIcon").toString(); 0102 } else { 0103 return map.value("genericIcon").toString(); 0104 } 0105 } else { 0106 return map.value("genericIcon").toString(); 0107 } 0108 } 0109 } 0110 return QString(); 0111 }