mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-05-29 16:21:09 -04:00
279 lines
21 KiB
C++
279 lines
21 KiB
C++
#pragma once
|
|
#include "common/string.h"
|
|
#include "common/types.h"
|
|
#include <array>
|
|
#include <cstring>
|
|
#include <linux/input-event-codes.h>
|
|
#include <map>
|
|
#include <optional>
|
|
#include <string_view>
|
|
|
|
namespace EvDevKeyNames {
|
|
|
|
static const std::map<int, const char*> s_evdev_key_names = {{KEY_ESC, "Escape"},
|
|
{KEY_1, "1"},
|
|
{KEY_2, "2"},
|
|
{KEY_3, "3"},
|
|
{KEY_4, "4"},
|
|
{KEY_5, "5"},
|
|
{KEY_6, "6"},
|
|
{KEY_7, "7"},
|
|
{KEY_8, "8"},
|
|
{KEY_9, "9"},
|
|
{KEY_0, "0"},
|
|
{KEY_MINUS, "Minus"},
|
|
{KEY_EQUAL, "Equal"},
|
|
{KEY_BACKSPACE, "Backspace"},
|
|
{KEY_TAB, "Tab"},
|
|
{KEY_Q, "Q"},
|
|
{KEY_W, "W"},
|
|
{KEY_E, "E"},
|
|
{KEY_R, "R"},
|
|
{KEY_T, "T"},
|
|
{KEY_Y, "Y"},
|
|
{KEY_U, "U"},
|
|
{KEY_I, "I"},
|
|
{KEY_O, "O"},
|
|
{KEY_P, "P"},
|
|
{KEY_LEFTBRACE, "Leftbrace"},
|
|
{KEY_RIGHTBRACE, "Rightbrace"},
|
|
{KEY_ENTER, "Return"},
|
|
{KEY_LEFTCTRL, "Leftctrl"},
|
|
{KEY_A, "A"},
|
|
{KEY_S, "S"},
|
|
{KEY_D, "D"},
|
|
{KEY_F, "F"},
|
|
{KEY_G, "G"},
|
|
{KEY_H, "H"},
|
|
{KEY_J, "J"},
|
|
{KEY_K, "K"},
|
|
{KEY_L, "L"},
|
|
{KEY_SEMICOLON, "Semicolon"},
|
|
{KEY_APOSTROPHE, "Apostrophe"},
|
|
{KEY_GRAVE, "Grave"},
|
|
{KEY_LEFTSHIFT, "Leftshift"},
|
|
{KEY_BACKSLASH, "Backslash"},
|
|
{KEY_Z, "Z"},
|
|
{KEY_X, "X"},
|
|
{KEY_C, "C"},
|
|
{KEY_V, "V"},
|
|
{KEY_B, "B"},
|
|
{KEY_N, "N"},
|
|
{KEY_M, "M"},
|
|
{KEY_COMMA, "Comma"},
|
|
{KEY_DOT, "Dot"},
|
|
{KEY_SLASH, "Slash"},
|
|
{KEY_RIGHTSHIFT, "Rightshift"},
|
|
{KEY_KPASTERISK, "Kpasterisk"},
|
|
{KEY_LEFTALT, "Leftalt"},
|
|
{KEY_SPACE, "Space"},
|
|
{KEY_CAPSLOCK, "Capslock"},
|
|
{KEY_F1, "F1"},
|
|
{KEY_F2, "F2"},
|
|
{KEY_F3, "F3"},
|
|
{KEY_F4, "F4"},
|
|
{KEY_F5, "F5"},
|
|
{KEY_F6, "F6"},
|
|
{KEY_F7, "F7"},
|
|
{KEY_F8, "F8"},
|
|
{KEY_F9, "F9"},
|
|
{KEY_F10, "F10"},
|
|
{KEY_NUMLOCK, "Numlock"},
|
|
{KEY_SCROLLLOCK, "Scrolllock"},
|
|
{KEY_KP7, "Kp7"},
|
|
{KEY_KP8, "Kp8"},
|
|
{KEY_KP9, "Kp9"},
|
|
{KEY_KPMINUS, "Kpminus"},
|
|
{KEY_KP4, "Kp4"},
|
|
{KEY_KP5, "Kp5"},
|
|
{KEY_KP6, "Kp6"},
|
|
{KEY_KPPLUS, "Kpplus"},
|
|
{KEY_KP1, "Kp1"},
|
|
{KEY_KP2, "Kp2"},
|
|
{KEY_KP3, "Kp3"},
|
|
{KEY_KP0, "Kp0"},
|
|
{KEY_KPDOT, "Kpdot"},
|
|
{KEY_ZENKAKUHANKAKU, "Zenkakuhankaku"},
|
|
{KEY_102ND, "102nd"},
|
|
{KEY_F11, "F11"},
|
|
{KEY_F12, "F12"},
|
|
{KEY_RO, "Ro"},
|
|
{KEY_KATAKANA, "Katakana"},
|
|
{KEY_HIRAGANA, "Hiragana"},
|
|
{KEY_HENKAN, "Henkan"},
|
|
{KEY_KATAKANAHIRAGANA, "Katakanahiragana"},
|
|
{KEY_MUHENKAN, "Muhenkan"},
|
|
{KEY_KPJPCOMMA, "Kpjpcomma"},
|
|
{KEY_KPENTER, "Kpenter"},
|
|
{KEY_RIGHTCTRL, "Rightctrl"},
|
|
{KEY_KPSLASH, "Kpslash"},
|
|
{KEY_SYSRQ, "Sysrq"},
|
|
{KEY_RIGHTALT, "RightAlt"},
|
|
{KEY_LINEFEED, "Linefeed"},
|
|
{KEY_HOME, "Home"},
|
|
{KEY_UP, "Up"},
|
|
{KEY_PAGEUP, "PageUp"},
|
|
{KEY_LEFT, "Left"},
|
|
{KEY_RIGHT, "Right"},
|
|
{KEY_END, "End"},
|
|
{KEY_DOWN, "Down"},
|
|
{KEY_PAGEDOWN, "PageDown"},
|
|
{KEY_INSERT, "Insert"},
|
|
{KEY_DELETE, "Delete"},
|
|
{KEY_MACRO, "Macro"},
|
|
{KEY_MUTE, "Mute"},
|
|
{KEY_VOLUMEDOWN, "VolumeDown"},
|
|
{KEY_VOLUMEUP, "VolumeUp"},
|
|
{KEY_POWER, "Power"},
|
|
{KEY_KPEQUAL, "Kpequal"},
|
|
{KEY_KPPLUSMINUS, "Kpplusminus"},
|
|
{KEY_PAUSE, "Pause"},
|
|
{KEY_SCALE, "Scale"},
|
|
{KEY_KPCOMMA, "Kpcomma"},
|
|
{KEY_HANGEUL, "Hangeul"},
|
|
{KEY_HANGUEL, "Hanguel"},
|
|
{KEY_HANJA, "Hanja"},
|
|
{KEY_YEN, "Yen"},
|
|
{KEY_LEFTMETA, "Leftmeta"},
|
|
{KEY_RIGHTMETA, "Rightmeta"},
|
|
{KEY_COMPOSE, "Compose"},
|
|
{KEY_STOP, "Stop"},
|
|
{KEY_AGAIN, "Again"},
|
|
{KEY_PROPS, "Props"},
|
|
{KEY_UNDO, "Undo"},
|
|
{KEY_FRONT, "Front"},
|
|
{KEY_COPY, "Copy"},
|
|
{KEY_OPEN, "Open"},
|
|
{KEY_PASTE, "Paste"},
|
|
{KEY_FIND, "Find"},
|
|
{KEY_CUT, "Cut"},
|
|
{KEY_HELP, "Help"},
|
|
{KEY_MENU, "Menu"},
|
|
{KEY_CALC, "Calc"},
|
|
{KEY_SETUP, "Setup"},
|
|
{KEY_SLEEP, "Sleep"},
|
|
{KEY_WAKEUP, "Wakeup"},
|
|
{KEY_FILE, "File"},
|
|
{KEY_SENDFILE, "Sendfile"},
|
|
{KEY_DELETEFILE, "Deletefile"},
|
|
{KEY_XFER, "Xfer"},
|
|
{KEY_PROG1, "Prog1"},
|
|
{KEY_PROG2, "Prog2"},
|
|
{KEY_WWW, "Www"},
|
|
{KEY_MSDOS, "Msdos"},
|
|
{KEY_COFFEE, "Coffee"},
|
|
{KEY_SCREENLOCK, "Screenlock"},
|
|
{KEY_ROTATE_DISPLAY, "Rotate_display"},
|
|
{KEY_DIRECTION, "Direction"},
|
|
{KEY_CYCLEWINDOWS, "Cyclewindows"},
|
|
{KEY_MAIL, "Mail"},
|
|
{KEY_BOOKMARKS, "Bookmarks"},
|
|
{KEY_COMPUTER, "Computer"},
|
|
{KEY_BACK, "Back"},
|
|
{KEY_FORWARD, "Forward"},
|
|
{KEY_CLOSECD, "Closecd"},
|
|
{KEY_EJECTCD, "Ejectcd"},
|
|
{KEY_EJECTCLOSECD, "Ejectclosecd"},
|
|
{KEY_NEXTSONG, "Nextsong"},
|
|
{KEY_PLAYPAUSE, "Playpause"},
|
|
{KEY_PREVIOUSSONG, "Previoussong"},
|
|
{KEY_STOPCD, "Stopcd"},
|
|
{KEY_RECORD, "Record"},
|
|
{KEY_REWIND, "Rewind"},
|
|
{KEY_PHONE, "Phone"},
|
|
{KEY_ISO, "Iso"},
|
|
{KEY_CONFIG, "Config"},
|
|
{KEY_HOMEPAGE, "Homepage"},
|
|
{KEY_REFRESH, "Refresh"},
|
|
{KEY_EXIT, "Exit"},
|
|
{KEY_MOVE, "Move"},
|
|
{KEY_EDIT, "Edit"},
|
|
{KEY_SCROLLUP, "Scrollup"},
|
|
{KEY_SCROLLDOWN, "Scrolldown"},
|
|
{KEY_KPLEFTPAREN, "Kpleftparen"},
|
|
{KEY_KPRIGHTPAREN, "Kprightparen"},
|
|
{KEY_NEW, "New"},
|
|
{KEY_REDO, "Redo"},
|
|
{KEY_F13, "F13"},
|
|
{KEY_F14, "F14"},
|
|
{KEY_F15, "F15"},
|
|
{KEY_F16, "F16"},
|
|
{KEY_F17, "F17"},
|
|
{KEY_F18, "F18"},
|
|
{KEY_F19, "F19"},
|
|
{KEY_F20, "F20"},
|
|
{KEY_F21, "F21"},
|
|
{KEY_F22, "F22"},
|
|
{KEY_F23, "F23"},
|
|
{KEY_F24, "F24"},
|
|
{KEY_PLAYCD, "Playcd"},
|
|
{KEY_PAUSECD, "Pausecd"},
|
|
{KEY_PROG3, "Prog3"},
|
|
{KEY_PROG4, "Prog4"},
|
|
{KEY_DASHBOARD, "Dashboard"},
|
|
{KEY_SUSPEND, "Suspend"},
|
|
{KEY_CLOSE, "Close"},
|
|
{KEY_PLAY, "Play"},
|
|
{KEY_FASTFORWARD, "Fastforward"},
|
|
{KEY_BASSBOOST, "Bassboost"},
|
|
{KEY_PRINT, "Print"},
|
|
{KEY_HP, "Hp"},
|
|
{KEY_CAMERA, "Camera"},
|
|
{KEY_SOUND, "Sound"},
|
|
{KEY_QUESTION, "Question"},
|
|
{KEY_EMAIL, "Email"},
|
|
{KEY_CHAT, "Chat"},
|
|
{KEY_SEARCH, "Search"},
|
|
{KEY_CONNECT, "Connect"},
|
|
{KEY_FINANCE, "Finance"},
|
|
{KEY_SPORT, "Sport"},
|
|
{KEY_SHOP, "Shop"},
|
|
{KEY_ALTERASE, "Alterase"},
|
|
{KEY_CANCEL, "Cancel"},
|
|
{KEY_BRIGHTNESSDOWN, "Brightnessdown"},
|
|
{KEY_BRIGHTNESSUP, "Brightnessup"},
|
|
{KEY_MEDIA, "Media"},
|
|
{KEY_SWITCHVIDEOMODE, "Switchvideomode"},
|
|
{KEY_KBDILLUMTOGGLE, "Kbdillumtoggle"},
|
|
{KEY_KBDILLUMDOWN, "Kbdillumdown"},
|
|
{KEY_KBDILLUMUP, "Kbdillumup"},
|
|
{KEY_SEND, "Send"},
|
|
{KEY_REPLY, "Reply"},
|
|
{KEY_FORWARDMAIL, "Forwardmail"},
|
|
{KEY_SAVE, "Save"},
|
|
{KEY_DOCUMENTS, "Documents"},
|
|
{KEY_BATTERY, "Battery"},
|
|
{KEY_BLUETOOTH, "Bluetooth"},
|
|
{KEY_WLAN, "Wlan"},
|
|
{KEY_UWB, "Uwb"},
|
|
{KEY_UNKNOWN, "Unknown"},
|
|
{KEY_VIDEO_NEXT, "Video_next"},
|
|
{KEY_VIDEO_PREV, "Video_prev"},
|
|
{KEY_BRIGHTNESS_CYCLE, "Brightness_cycle"},
|
|
{KEY_BRIGHTNESS_AUTO, "Brightness_auto"},
|
|
{KEY_BRIGHTNESS_ZERO, "Brightness_zero"},
|
|
{KEY_DISPLAY_OFF, "Display_off"},
|
|
{KEY_WWAN, "Wwan"},
|
|
{KEY_WIMAX, "Wimax"},
|
|
{KEY_RFKILL, "Rfkill"},
|
|
{KEY_MICMUTE, "Micmute"}};
|
|
|
|
const char* GetKeyName(int key)
|
|
{
|
|
const auto it = s_evdev_key_names.find(key);
|
|
return it == s_evdev_key_names.end() ? nullptr : it->second;
|
|
}
|
|
|
|
std::optional<int> GetKeyCodeForName(const std::string_view key_name)
|
|
{
|
|
for (const auto& it : s_evdev_key_names)
|
|
{
|
|
if (key_name == it.second)
|
|
return it.first;
|
|
}
|
|
|
|
return std::nullopt;
|
|
}
|
|
|
|
} // namespace EvDevKeyNames
|