Last active
November 25, 2017 11:09
-
-
Save StefanoBelli/c12965643c86044719c75fcaaa7d0178 to your computer and use it in GitHub Desktop.
Linux keypress control utils
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Based on @Andrea993 / github.com/andrea993 's work | |
* gcc -c -std=c99 -D_GNU_SOURCE | |
* or | |
* gcc -c -std=gnu99 | |
*/ | |
#include <linux/limits.h> | |
#include <linux/input.h> | |
#include <dirent.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <stdlib.h> | |
#include "linux-keys.h" | |
#define EVENT_BYPATH "/dev/input/by-path/" | |
#define NEED_MATCH "-event-kbd" | |
#define NEED_MATCH_COUNT 10 | |
#define COPY_INPUT_EVENT(from_stream,dest) \ | |
for(unsigned i=0;i<sizeof(struct input_event);i++) \ | |
((char*)&dest)[i] = fgetc(from_stream) | |
int get_keyboard_evpath_s(char* target) | |
{ | |
DIR* evbp_dir = opendir(EVENT_BYPATH); | |
if(evbp_dir == NULL) | |
return CANNOT_OPENDIR; | |
struct dirent *entry; | |
while((entry=readdir(evbp_dir))) { | |
if(entry->d_type == DT_LNK) { | |
if(!strncmp(entry->d_name + (strlen(entry->d_name) - NEED_MATCH_COUNT),NEED_MATCH,NEED_MATCH_COUNT)) | |
break; | |
} | |
} | |
char local_target[PATH_MAX]; | |
int evbpfd = dirfd(evbp_dir); | |
if(readlinkat(evbpfd,entry->d_name,local_target,sizeof(entry->d_name)) < 0) | |
return CANNOT_READLINK; | |
char current_workdir[PATH_MAX]; | |
if(getcwd(current_workdir,PATH_MAX) == NULL) | |
return CANNOT_GETCWD; | |
if(fchdir(evbpfd) < 0) | |
return CANNOT_FCHDIR; | |
if(realpath(local_target,target) == NULL) | |
return CANNOT_GETREALPATH; | |
if(closedir(evbp_dir) < 0) | |
return CANNOT_CLOSEDIR; | |
if(chdir(current_workdir) < 0) | |
return CANNOT_CHDIR; | |
return 0; | |
} | |
key wait_for_keypress(FILE* stream) | |
{ | |
struct input_event current; | |
while(1) { | |
COPY_INPUT_EVENT(stream,current); | |
if(current.type == EV_KEY && current.value == 1) | |
return current.code; | |
} | |
return -1; | |
} | |
void keycode_to_stream(key code, FILE* _outptr) | |
{ | |
switch(code) | |
{ | |
case(KEY_RESERVED): fputs("RESERVED",_outptr); break; | |
case(KEY_ESC): fputs("ESC",_outptr); break; | |
case(KEY_1): fputs("1",_outptr); break; | |
case(KEY_2): fputs("2",_outptr); break; | |
case(KEY_3): fputs("3",_outptr); break; | |
case(KEY_4): fputs("4",_outptr); break; | |
case(KEY_5): fputs("5",_outptr); break; | |
case(KEY_6): fputs("6",_outptr); break; | |
case(KEY_7): fputs("7",_outptr); break; | |
case(KEY_8): fputs("8",_outptr); break; | |
case(KEY_9): fputs("9",_outptr); break; | |
case(KEY_0): fputs("0",_outptr); break; | |
case(KEY_MINUS): fputs("MINUS",_outptr); break; | |
case(KEY_EQUAL): fputs("EQUAL",_outptr); break; | |
case(KEY_BACKSPACE): fputs("BACKSPACE",_outptr); break; | |
case(KEY_TAB): fputs("TAB",_outptr); break; | |
case(KEY_Q): fputs("Q",_outptr); break; | |
case(KEY_W): fputs("W",_outptr); break; | |
case(KEY_E): fputs("E",_outptr); break; | |
case(KEY_R): fputs("R",_outptr); break; | |
case(KEY_T): fputs("T",_outptr); break; | |
case(KEY_Y): fputs("Y",_outptr); break; | |
case(KEY_U): fputs("U",_outptr); break; | |
case(KEY_I): fputs("I",_outptr); break; | |
case(KEY_O): fputs("O",_outptr); break; | |
case(KEY_P): fputs("P",_outptr); break; | |
case(KEY_LEFTBRACE): fputs("LEFTBRACE",_outptr); break; | |
case(KEY_RIGHTBRACE): fputs("RIGHTBRACE",_outptr); break; | |
case(KEY_ENTER): fputs("ENTER",_outptr); break; | |
case(KEY_LEFTCTRL): fputs("LEFTCTRL",_outptr); break; | |
case(KEY_A): fputs("A",_outptr); break; | |
case(KEY_S): fputs("S",_outptr); break; | |
case(KEY_D): fputs("D",_outptr); break; | |
case(KEY_F): fputs("F",_outptr); break; | |
case(KEY_G): fputs("G",_outptr); break; | |
case(KEY_H): fputs("H",_outptr); break; | |
case(KEY_J): fputs("J",_outptr); break; | |
case(KEY_K): fputs("K",_outptr); break; | |
case(KEY_L): fputs("L",_outptr); break; | |
case(KEY_SEMICOLON): fputs("SEMICOLON",_outptr); break; | |
case(KEY_APOSTROPHE): fputs("APOSTROPHE",_outptr); break; | |
case(KEY_GRAVE): fputs("GRAVE",_outptr); break; | |
case(KEY_LEFTSHIFT): fputs("LEFTSHIFT",_outptr); break; | |
case(KEY_BACKSLASH): fputs("BACKSLASH",_outptr); break; | |
case(KEY_Z): fputs("Z",_outptr); break; | |
case(KEY_X): fputs("X",_outptr); break; | |
case(KEY_C): fputs("C",_outptr); break; | |
case(KEY_V): fputs("V",_outptr); break; | |
case(KEY_B): fputs("B",_outptr); break; | |
case(KEY_N): fputs("N",_outptr); break; | |
case(KEY_M): fputs("M",_outptr); break; | |
case(KEY_COMMA): fputs("COMMA",_outptr); break; | |
case(KEY_DOT): fputs("DOT",_outptr); break; | |
case(KEY_SLASH): fputs("SLASH",_outptr); break; | |
case(KEY_RIGHTSHIFT): fputs("RIGHTSHIFT",_outptr); break; | |
case(KEY_KPASTERISK): fputs("KPASTERISK",_outptr); break; | |
case(KEY_LEFTALT): fputs("LEFTALT",_outptr); break; | |
case(KEY_SPACE): fputs("SPACE",_outptr); break; | |
case(KEY_CAPSLOCK): fputs("CAPSLOCK",_outptr); break; | |
case(KEY_F1): fputs("F1",_outptr); break; | |
case(KEY_F2): fputs("F2",_outptr); break; | |
case(KEY_F3): fputs("F3",_outptr); break; | |
case(KEY_F4): fputs("F4",_outptr); break; | |
case(KEY_F5): fputs("F5",_outptr); break; | |
case(KEY_F6): fputs("F6",_outptr); break; | |
case(KEY_F7): fputs("F7",_outptr); break; | |
case(KEY_F8): fputs("F8",_outptr); break; | |
case(KEY_F9): fputs("F9",_outptr); break; | |
case(KEY_F10): fputs("F10",_outptr); break; | |
case(KEY_NUMLOCK): fputs("NUMLOCK",_outptr); break; | |
case(KEY_SCROLLLOCK): fputs("SCROLLLOCK",_outptr); break; | |
case(KEY_KP7): fputs("KP7",_outptr); break; | |
case(KEY_KP8): fputs("KP8",_outptr); break; | |
case(KEY_KP9): fputs("KP9",_outptr); break; | |
case(KEY_KPMINUS): fputs("KPMINUS",_outptr); break; | |
case(KEY_KP4): fputs("KP4",_outptr); break; | |
case(KEY_KP5): fputs("KP5",_outptr); break; | |
case(KEY_KP6): fputs("KP6",_outptr); break; | |
case(KEY_KPPLUS): fputs("KPPLUS",_outptr); break; | |
case(KEY_KP1): fputs("KP1",_outptr); break; | |
case(KEY_KP2): fputs("KP2",_outptr); break; | |
case(KEY_KP3): fputs("KP3",_outptr); break; | |
case(KEY_KP0): fputs("KP0",_outptr); break; | |
case(KEY_KPDOT): fputs("KPDOT",_outptr); break; | |
case(KEY_ZENKAKUHANKAKU): fputs("ZENKAKUHANKAKU",_outptr); break; | |
case(KEY_102ND): fputs("102ND",_outptr); break; | |
case(KEY_F11): fputs("F11",_outptr); break; | |
case(KEY_F12): fputs("F12",_outptr); break; | |
case(KEY_RO): fputs("RO",_outptr); break; | |
case(KEY_KATAKANA): fputs("KATAKANA",_outptr); break; | |
case(KEY_HIRAGANA): fputs("HIRAGANA",_outptr); break; | |
case(KEY_HENKAN): fputs("HENKAN",_outptr); break; | |
case(KEY_KATAKANAHIRAGANA): fputs("KATAKANAHIRAGANA",_outptr); break; | |
case(KEY_MUHENKAN): fputs("MUHENKAN",_outptr); break; | |
case(KEY_KPJPCOMMA): fputs("KPJPCOMMA",_outptr); break; | |
case(KEY_KPENTER): fputs("KPENTER",_outptr); break; | |
case(KEY_RIGHTCTRL): fputs("RIGHTCTRL",_outptr); break; | |
case(KEY_KPSLASH): fputs("KPSLASH",_outptr); break; | |
case(KEY_SYSRQ): fputs("SYSRQ",_outptr); break; | |
case(KEY_RIGHTALT): fputs("RIGHTALT",_outptr); break; | |
case(KEY_LINEFEED): fputs("LINEFEED",_outptr); break; | |
case(KEY_HOME): fputs("HOME",_outptr); break; | |
case(KEY_UP): fputs("UP",_outptr); break; | |
case(KEY_PAGEUP): fputs("PAGEUP",_outptr); break; | |
case(KEY_LEFT): fputs("LEFT",_outptr); break; | |
case(KEY_RIGHT): fputs("RIGHT",_outptr); break; | |
case(KEY_END): fputs("END",_outptr); break; | |
case(KEY_DOWN): fputs("DOWN",_outptr); break; | |
case(KEY_PAGEDOWN): fputs("PAGEDOWN",_outptr); break; | |
case(KEY_INSERT): fputs("INSERT",_outptr); break; | |
case(KEY_DELETE): fputs("DELETE",_outptr); break; | |
case(KEY_MACRO): fputs("MACRO",_outptr); break; | |
case(KEY_MUTE): fputs("MUTE",_outptr); break; | |
case(KEY_VOLUMEDOWN): fputs("VOLUMEDOWN",_outptr); break; | |
case(KEY_VOLUMEUP): fputs("VOLUMEUP",_outptr); break; | |
case(KEY_POWER): fputs("POWER",_outptr); break; | |
case(KEY_KPEQUAL): fputs("KPEQUAL",_outptr); break; | |
case(KEY_KPPLUSMINUS): fputs("KPPLUSMINUS",_outptr); break; | |
case(KEY_PAUSE): fputs("PAUSE",_outptr); break; | |
case(KEY_SCALE): fputs("SCALE",_outptr); break; | |
case(KEY_KPCOMMA): fputs("KPCOMMA",_outptr); break; | |
case(KEY_HANGEUL): fputs("HANGEUL",_outptr); break; | |
case(KEY_HANJA): fputs("HANJA",_outptr); break; | |
case(KEY_YEN): fputs("YEN",_outptr); break; | |
case(KEY_LEFTMETA): fputs("LEFTMETA",_outptr); break; | |
case(KEY_RIGHTMETA): fputs("RIGHTMETA",_outptr); break; | |
case(KEY_COMPOSE): fputs("COMPOSE",_outptr); break; | |
case(KEY_STOP): fputs("STOP",_outptr); break; | |
case(KEY_AGAIN): fputs("AGAIN",_outptr); break; | |
case(KEY_PROPS): fputs("PROPS",_outptr); break; | |
case(KEY_UNDO): fputs("UNDO",_outptr); break; | |
case(KEY_FRONT): fputs("FRONT",_outptr); break; | |
case(KEY_COPY): fputs("COPY",_outptr); break; | |
case(KEY_OPEN): fputs("OPEN",_outptr); break; | |
case(KEY_PASTE): fputs("PASTE",_outptr); break; | |
case(KEY_FIND): fputs("FIND",_outptr); break; | |
case(KEY_CUT): fputs("CUT",_outptr); break; | |
case(KEY_HELP): fputs("HELP",_outptr); break; | |
case(KEY_MENU): fputs("MENU",_outptr); break; | |
case(KEY_CALC): fputs("CALC",_outptr); break; | |
case(KEY_SETUP): fputs("SETUP",_outptr); break; | |
case(KEY_SLEEP): fputs("SLEEP",_outptr); break; | |
case(KEY_WAKEUP): fputs("WAKEUP",_outptr); break; | |
case(KEY_FILE): fputs("FILE",_outptr); break; | |
case(KEY_SENDFILE): fputs("SENDFILE",_outptr); break; | |
case(KEY_DELETEFILE): fputs("DELETEFILE",_outptr); break; | |
case(KEY_XFER): fputs("XFER",_outptr); break; | |
case(KEY_PROG1): fputs("PROG1",_outptr); break; | |
case(KEY_PROG2): fputs("PROG2",_outptr); break; | |
case(KEY_WWW): fputs("WWW",_outptr); break; | |
case(KEY_MSDOS): fputs("MSDOS",_outptr); break; | |
case(KEY_SCREENLOCK): fputs("SCREENLOCK",_outptr); break; | |
case(KEY_DIRECTION): fputs("DIRECTION",_outptr); break; | |
case(KEY_CYCLEWINDOWS): fputs("CYCLEWINDOWS",_outptr); break; | |
case(KEY_MAIL): fputs("MAIL",_outptr); break; | |
case(KEY_BOOKMARKS): fputs("BOOKMARKS",_outptr); break; | |
case(KEY_COMPUTER): fputs("COMPUTER",_outptr); break; | |
case(KEY_BACK): fputs("BACK",_outptr); break; | |
case(KEY_FORWARD): fputs("FORWARD",_outptr); break; | |
case(KEY_CLOSECD): fputs("CLOSECD",_outptr); break; | |
case(KEY_EJECTCD): fputs("EJECTCD",_outptr); break; | |
case(KEY_EJECTCLOSECD): fputs("EJECTCLOSECD",_outptr); break; | |
case(KEY_NEXTSONG): fputs("NEXTSONG",_outptr); break; | |
case(KEY_PLAYPAUSE): fputs("PLAYPAUSE",_outptr); break; | |
case(KEY_PREVIOUSSONG): fputs("PREVIOUSSONG",_outptr); break; | |
case(KEY_STOPCD): fputs("STOPCD",_outptr); break; | |
case(KEY_RECORD): fputs("RECORD",_outptr); break; | |
case(KEY_REWIND): fputs("REWIND",_outptr); break; | |
case(KEY_PHONE): fputs("PHONE",_outptr); break; | |
case(KEY_ISO): fputs("ISO",_outptr); break; | |
case(KEY_CONFIG): fputs("CONFIG",_outptr); break; | |
case(KEY_HOMEPAGE): fputs("HOMEPAGE",_outptr); break; | |
case(KEY_REFRESH): fputs("REFRESH",_outptr); break; | |
case(KEY_EXIT): fputs("EXIT",_outptr); break; | |
case(KEY_MOVE): fputs("MOVE",_outptr); break; | |
case(KEY_EDIT): fputs("EDIT",_outptr); break; | |
case(KEY_SCROLLUP): fputs("SCROLLUP",_outptr); break; | |
case(KEY_SCROLLDOWN): fputs("SCROLLDOWN",_outptr); break; | |
case(KEY_KPLEFTPAREN): fputs("KPLEFTPAREN",_outptr); break; | |
case(KEY_KPRIGHTPAREN): fputs("KPRIGHTPAREN",_outptr); break; | |
case(KEY_NEW): fputs("NEW",_outptr); break; | |
case(KEY_REDO): fputs("REDO",_outptr); break; | |
case(KEY_F13): fputs("F13",_outptr); break; | |
case(KEY_F14): fputs("F14",_outptr); break; | |
case(KEY_F15): fputs("F15",_outptr); break; | |
case(KEY_F16): fputs("F16",_outptr); break; | |
case(KEY_F17): fputs("F17",_outptr); break; | |
case(KEY_F18): fputs("F18",_outptr); break; | |
case(KEY_F19): fputs("F19",_outptr); break; | |
case(KEY_F20): fputs("F20",_outptr); break; | |
case(KEY_F21): fputs("F21",_outptr); break; | |
case(KEY_F22): fputs("F22",_outptr); break; | |
case(KEY_F23): fputs("F23",_outptr); break; | |
case(KEY_F24): fputs("F24",_outptr); break; | |
case(KEY_PLAYCD): fputs("PLAYCD",_outptr); break; | |
case(KEY_PAUSECD): fputs("PAUSECD",_outptr); break; | |
case(KEY_PROG3): fputs("PROG3",_outptr); break; | |
case(KEY_PROG4): fputs("PROG4",_outptr); break; | |
case(KEY_DASHBOARD): fputs("DASHBOARD",_outptr); break; | |
case(KEY_SUSPEND): fputs("SUSPEND",_outptr); break; | |
case(KEY_CLOSE): fputs("CLOSE",_outptr); break; | |
case(KEY_PLAY): fputs("PLAY",_outptr); break; | |
case(KEY_FASTFORWARD): fputs("FASTFORWARD",_outptr); break; | |
case(KEY_BASSBOOST): fputs("BASSBOOST",_outptr); break; | |
case(KEY_PRINT): fputs("PRINT",_outptr); break; | |
case(KEY_HP): fputs("HP",_outptr); break; | |
case(KEY_CAMERA): fputs("CAMERA",_outptr); break; | |
case(KEY_SOUND): fputs("SOUND",_outptr); break; | |
case(KEY_QUESTION): fputs("QUESTION",_outptr); break; | |
case(KEY_EMAIL): fputs("EMAIL",_outptr); break; | |
case(KEY_CHAT): fputs("CHAT",_outptr); break; | |
case(KEY_SEARCH): fputs("SEARCH",_outptr); break; | |
case(KEY_CONNECT): fputs("CONNECT",_outptr); break; | |
case(KEY_FINANCE): fputs("FINANCE",_outptr); break; | |
case(KEY_SPORT): fputs("SPORT",_outptr); break; | |
case(KEY_SHOP): fputs("SHOP",_outptr); break; | |
case(KEY_ALTERASE): fputs("ALTERASE",_outptr); break; | |
case(KEY_CANCEL): fputs("CANCEL",_outptr); break; | |
case(KEY_BRIGHTNESSDOWN): fputs("BRIGHTNESSDOWN",_outptr); break; | |
case(KEY_BRIGHTNESSUP): fputs("BRIGHTNESSUP",_outptr); break; | |
case(KEY_MEDIA): fputs("MEDIA",_outptr); break; | |
case(KEY_SWITCHVIDEOMODE): fputs("SWITCHVIDEOMODE",_outptr); break; | |
case(KEY_KBDILLUMTOGGLE): fputs("KBDILLUMTOGGLE",_outptr); break; | |
case(KEY_KBDILLUMDOWN): fputs("KBDILLUMDOWN",_outptr); break; | |
case(KEY_KBDILLUMUP): fputs("KBDILLUMUP",_outptr); break; | |
case(KEY_SEND): fputs("SEND",_outptr); break; | |
case(KEY_REPLY): fputs("REPLY",_outptr); break; | |
case(KEY_FORWARDMAIL): fputs("FORWARDMAIL",_outptr); break; | |
case(KEY_SAVE): fputs("SAVE",_outptr); break; | |
case(KEY_DOCUMENTS): fputs("DOCUMENTS",_outptr); break; | |
case(KEY_BATTERY): fputs("BATTERY",_outptr); break; | |
case(KEY_BLUETOOTH): fputs("BLUETOOTH",_outptr); break; | |
case(KEY_WLAN): fputs("WLAN",_outptr); break; | |
case(KEY_UWB): fputs("UWB",_outptr); break; | |
case(KEY_UNKNOWN): fputs("UNKNOWN",_outptr); break; | |
case(KEY_VIDEO_NEXT): fputs("VIDEO_NEXT",_outptr); break; | |
case(KEY_VIDEO_PREV): fputs("VIDEO_PREV",_outptr); break; | |
case(KEY_BRIGHTNESS_CYCLE): fputs("BRIGHTNESS_CYCLE",_outptr); break; | |
case(KEY_BRIGHTNESS_ZERO): fputs("BRIGHTNESS_ZERO",_outptr); break; | |
case(KEY_DISPLAY_OFF): fputs("DISPLAY_OFF",_outptr); break; | |
case(KEY_WWAN): fputs("WWAN",_outptr); break; | |
case(KEY_RFKILL): fputs("RFKILL",_outptr); break; | |
case(KEY_MICMUTE): fputs("MICMUTE",_outptr); break; | |
default: fputs(__KEY_UNKNOWN,_outptr); break; | |
} | |
fputs(" ",_outptr); | |
} | |
char* keycode_to_string(key code) | |
{ | |
switch(code) | |
{ | |
case(KEY_RESERVED): return "RESERVED"; | |
case(KEY_ESC): return "ESC"; | |
case(KEY_1): return "1"; | |
case(KEY_2): return "2"; | |
case(KEY_3): return "3"; | |
case(KEY_4): return "4"; | |
case(KEY_5): return "5"; | |
case(KEY_6): return "6"; | |
case(KEY_7): return "7"; | |
case(KEY_8): return "8"; | |
case(KEY_9): return "9"; | |
case(KEY_0): return "0"; | |
case(KEY_MINUS): return "MINUS"; | |
case(KEY_EQUAL): return "EQUAL"; | |
case(KEY_BACKSPACE): return "BACKSPACE"; | |
case(KEY_TAB): return "TAB"; | |
case(KEY_Q): return "Q"; | |
case(KEY_W): return "W"; | |
case(KEY_E): return "E"; | |
case(KEY_R): return "R"; | |
case(KEY_T): return "T"; | |
case(KEY_Y): return "Y"; | |
case(KEY_U): return "U"; | |
case(KEY_I): return "I"; | |
case(KEY_O): return "O"; | |
case(KEY_P): return "P"; | |
case(KEY_LEFTBRACE): return "LEFTBRACE"; | |
case(KEY_RIGHTBRACE): return "RIGHTBRACE"; | |
case(KEY_ENTER): return "ENTER"; | |
case(KEY_LEFTCTRL): return "LEFTCTRL"; | |
case(KEY_A): return "A"; | |
case(KEY_S): return "S"; | |
case(KEY_D): return "D"; | |
case(KEY_F): return "F"; | |
case(KEY_G): return "G"; | |
case(KEY_H): return "H"; | |
case(KEY_J): return "J"; | |
case(KEY_K): return "K"; | |
case(KEY_L): return "L"; | |
case(KEY_SEMICOLON): return "SEMICOLON"; | |
case(KEY_APOSTROPHE): return "APOSTROPHE"; | |
case(KEY_GRAVE): return "GRAVE"; | |
case(KEY_LEFTSHIFT): return "LEFTSHIFT"; | |
case(KEY_BACKSLASH): return "BACKSLASH"; | |
case(KEY_Z): return "Z"; | |
case(KEY_X): return "X"; | |
case(KEY_C): return "C"; | |
case(KEY_V): return "V"; | |
case(KEY_B): return "B"; | |
case(KEY_N): return "N"; | |
case(KEY_M): return "M"; | |
case(KEY_COMMA): return "COMMA"; | |
case(KEY_DOT): return "DOT"; | |
case(KEY_SLASH): return "SLASH"; | |
case(KEY_RIGHTSHIFT): return "RIGHTSHIFT"; | |
case(KEY_KPASTERISK): return "KPASTERISK"; | |
case(KEY_LEFTALT): return "LEFTALT"; | |
case(KEY_SPACE): return "SPACE"; | |
case(KEY_CAPSLOCK): return "CAPSLOCK"; | |
case(KEY_F1): return "F1"; | |
case(KEY_F2): return "F2"; | |
case(KEY_F3): return "F3"; | |
case(KEY_F4): return "F4"; | |
case(KEY_F5): return "F5"; | |
case(KEY_F6): return "F6"; | |
case(KEY_F7): return "F7"; | |
case(KEY_F8): return "F8"; | |
case(KEY_F9): return "F9"; | |
case(KEY_F10): return "F10"; | |
case(KEY_NUMLOCK): return "NUMLOCK"; | |
case(KEY_SCROLLLOCK): return "SCROLLLOCK"; | |
case(KEY_KP7): return "KP7"; | |
case(KEY_KP8): return "KP8"; | |
case(KEY_KP9): return "KP9"; | |
case(KEY_KPMINUS): return "KPMINUS"; | |
case(KEY_KP4): return "KP4"; | |
case(KEY_KP5): return "KP5"; | |
case(KEY_KP6): return "KP6"; | |
case(KEY_KPPLUS): return "KPPLUS"; | |
case(KEY_KP1): return "KP1"; | |
case(KEY_KP2): return "KP2"; | |
case(KEY_KP3): return "KP3"; | |
case(KEY_KP0): return "KP0"; | |
case(KEY_KPDOT): return "KPDOT"; | |
case(KEY_ZENKAKUHANKAKU): return "ZENKAKUHANKAKU"; | |
case(KEY_102ND): return "102ND"; | |
case(KEY_F11): return "F11"; | |
case(KEY_F12): return "F12"; | |
case(KEY_RO): return "RO"; | |
case(KEY_KATAKANA): return "KATAKANA"; | |
case(KEY_HIRAGANA): return "HIRAGANA"; | |
case(KEY_HENKAN): return "HENKAN"; | |
case(KEY_KATAKANAHIRAGANA): return "KATAKANAHIRAGANA"; | |
case(KEY_MUHENKAN): return "MUHENKAN"; | |
case(KEY_KPJPCOMMA): return "KPJPCOMMA"; | |
case(KEY_KPENTER): return "KPENTER"; | |
case(KEY_RIGHTCTRL): return "RIGHTCTRL"; | |
case(KEY_KPSLASH): return "KPSLASH"; | |
case(KEY_SYSRQ): return "SYSRQ"; | |
case(KEY_RIGHTALT): return "RIGHTALT"; | |
case(KEY_LINEFEED): return "LINEFEED"; | |
case(KEY_HOME): return "HOME"; | |
case(KEY_UP): return "UP"; | |
case(KEY_PAGEUP): return "PAGEUP"; | |
case(KEY_LEFT): return "LEFT"; | |
case(KEY_RIGHT): return "RIGHT"; | |
case(KEY_END): return "END"; | |
case(KEY_DOWN): return "DOWN"; | |
case(KEY_PAGEDOWN): return "PAGEDOWN"; | |
case(KEY_INSERT): return "INSERT"; | |
case(KEY_DELETE): return "DELETE"; | |
case(KEY_MACRO): return "MACRO"; | |
case(KEY_MUTE): return "MUTE"; | |
case(KEY_VOLUMEDOWN): return "VOLUMEDOWN"; | |
case(KEY_VOLUMEUP): return "VOLUMEUP"; | |
case(KEY_POWER): return "POWER"; | |
case(KEY_KPEQUAL): return "KPEQUAL"; | |
case(KEY_KPPLUSMINUS): return "KPPLUSMINUS"; | |
case(KEY_PAUSE): return "PAUSE"; | |
case(KEY_SCALE): return "SCALE"; | |
case(KEY_KPCOMMA): return "KPCOMMA"; | |
case(KEY_HANGEUL): return "HANGEUL"; | |
case(KEY_HANJA): return "HANJA"; | |
case(KEY_YEN): return "YEN"; | |
case(KEY_LEFTMETA): return "LEFTMETA"; | |
case(KEY_RIGHTMETA): return "RIGHTMETA"; | |
case(KEY_COMPOSE): return "COMPOSE"; | |
case(KEY_STOP): return "STOP"; | |
case(KEY_AGAIN): return "AGAIN"; | |
case(KEY_PROPS): return "PROPS"; | |
case(KEY_UNDO): return "UNDO"; | |
case(KEY_FRONT): return "FRONT"; | |
case(KEY_COPY): return "COPY"; | |
case(KEY_OPEN): return "OPEN"; | |
case(KEY_PASTE): return "PASTE"; | |
case(KEY_FIND): return "FIND"; | |
case(KEY_CUT): return "CUT"; | |
case(KEY_HELP): return "HELP"; | |
case(KEY_MENU): return "MENU"; | |
case(KEY_CALC): return "CALC"; | |
case(KEY_SETUP): return "SETUP"; | |
case(KEY_SLEEP): return "SLEEP"; | |
case(KEY_WAKEUP): return "WAKEUP"; | |
case(KEY_FILE): return "FILE"; | |
case(KEY_SENDFILE): return "SENDFILE"; | |
case(KEY_DELETEFILE): return "DELETEFILE"; | |
case(KEY_XFER): return "XFER"; | |
case(KEY_PROG1): return "PROG1"; | |
case(KEY_PROG2): return "PROG2"; | |
case(KEY_WWW): return "WWW"; | |
case(KEY_MSDOS): return "MSDOS"; | |
case(KEY_SCREENLOCK): return "SCREENLOCK"; | |
case(KEY_DIRECTION): return "DIRECTION"; | |
case(KEY_CYCLEWINDOWS): return "CYCLEWINDOWS"; | |
case(KEY_MAIL): return "MAIL"; | |
case(KEY_BOOKMARKS): return "BOOKMARKS"; | |
case(KEY_COMPUTER): return "COMPUTER"; | |
case(KEY_BACK): return "BACK"; | |
case(KEY_FORWARD): return "FORWARD"; | |
case(KEY_CLOSECD): return "CLOSECD"; | |
case(KEY_EJECTCD): return "EJECTCD"; | |
case(KEY_EJECTCLOSECD): return "EJECTCLOSECD"; | |
case(KEY_NEXTSONG): return "NEXTSONG"; | |
case(KEY_PLAYPAUSE): return "PLAYPAUSE"; | |
case(KEY_PREVIOUSSONG): return "PREVIOUSSONG"; | |
case(KEY_STOPCD): return "STOPCD"; | |
case(KEY_RECORD): return "RECORD"; | |
case(KEY_REWIND): return "REWIND"; | |
case(KEY_PHONE): return "PHONE"; | |
case(KEY_ISO): return "ISO"; | |
case(KEY_CONFIG): return "CONFIG"; | |
case(KEY_HOMEPAGE): return "HOMEPAGE"; | |
case(KEY_REFRESH): return "REFRESH"; | |
case(KEY_EXIT): return "EXIT"; | |
case(KEY_MOVE): return "MOVE"; | |
case(KEY_EDIT): return "EDIT"; | |
case(KEY_SCROLLUP): return "SCROLLUP"; | |
case(KEY_SCROLLDOWN): return "SCROLLDOWN"; | |
case(KEY_KPLEFTPAREN): return "KPLEFTPAREN"; | |
case(KEY_KPRIGHTPAREN): return "KPRIGHTPAREN"; | |
case(KEY_NEW): return "NEW"; | |
case(KEY_REDO): return "REDO"; | |
case(KEY_F13): return "F13"; | |
case(KEY_F14): return "F14"; | |
case(KEY_F15): return "F15"; | |
case(KEY_F16): return "F16"; | |
case(KEY_F17): return "F17"; | |
case(KEY_F18): return "F18"; | |
case(KEY_F19): return "F19"; | |
case(KEY_F20): return "F20"; | |
case(KEY_F21): return "F21"; | |
case(KEY_F22): return "F22"; | |
case(KEY_F23): return "F23"; | |
case(KEY_F24): return "F24"; | |
case(KEY_PLAYCD): return "PLAYCD"; | |
case(KEY_PAUSECD): return "PAUSECD"; | |
case(KEY_PROG3): return "PROG3"; | |
case(KEY_PROG4): return "PROG4"; | |
case(KEY_DASHBOARD): return "DASHBOARD"; | |
case(KEY_SUSPEND): return "SUSPEND"; | |
case(KEY_CLOSE): return "CLOSE"; | |
case(KEY_PLAY): return "PLAY"; | |
case(KEY_FASTFORWARD): return "FASTFORWARD"; | |
case(KEY_BASSBOOST): return "BASSBOOST"; | |
case(KEY_PRINT): return "PRINT"; | |
case(KEY_HP): return "HP"; | |
case(KEY_CAMERA): return "CAMERA"; | |
case(KEY_SOUND): return "SOUND"; | |
case(KEY_QUESTION): return "QUESTION"; | |
case(KEY_EMAIL): return "EMAIL"; | |
case(KEY_CHAT): return "CHAT"; | |
case(KEY_SEARCH): return "SEARCH"; | |
case(KEY_CONNECT): return "CONNECT"; | |
case(KEY_FINANCE): return "FINANCE"; | |
case(KEY_SPORT): return "SPORT"; | |
case(KEY_SHOP): return "SHOP"; | |
case(KEY_ALTERASE): return "ALTERASE"; | |
case(KEY_CANCEL): return "CANCEL"; | |
case(KEY_BRIGHTNESSDOWN): return "BRIGHTNESSDOWN"; | |
case(KEY_BRIGHTNESSUP): return "BRIGHTNESSUP"; | |
case(KEY_MEDIA): return "MEDIA"; | |
case(KEY_SWITCHVIDEOMODE): return "SWITCHVIDEOMODE"; | |
case(KEY_KBDILLUMTOGGLE): return "KBDILLUMTOGGLE"; | |
case(KEY_KBDILLUMDOWN): return "KBDILLUMDOWN"; | |
case(KEY_KBDILLUMUP): return "KBDILLUMUP"; | |
case(KEY_SEND): return "SEND"; | |
case(KEY_REPLY): return "REPLY"; | |
case(KEY_FORWARDMAIL): return "FORWARDMAIL"; | |
case(KEY_SAVE): return "SAVE"; | |
case(KEY_DOCUMENTS): return "DOCUMENTS"; | |
case(KEY_BATTERY): return "BATTERY"; | |
case(KEY_BLUETOOTH): return "BLUETOOTH"; | |
case(KEY_WLAN): return "WLAN"; | |
case(KEY_UWB): return "UWB"; | |
case(KEY_UNKNOWN): return "UNKNOWN"; | |
case(KEY_VIDEO_NEXT): return "VIDEO_NEXT"; | |
case(KEY_VIDEO_PREV): return "VIDEO_PREV"; | |
case(KEY_BRIGHTNESS_CYCLE): return "BRIGHTNESS_CYCLE"; | |
case(KEY_BRIGHTNESS_ZERO): return "BRIGHTNESS_ZERO"; | |
case(KEY_DISPLAY_OFF): return "DISPLAY_OFF"; | |
case(KEY_WWAN): return "WWAN"; | |
case(KEY_RFKILL): return "RFKILL"; | |
case(KEY_MICMUTE): return "MICMUTE"; | |
} | |
return __KEY_UNKNOWN; | |
} | |
void keycode_to_string_s(key code, char* target, size_t max_size) | |
{ | |
switch(code) | |
{ | |
case(KEY_RESERVED): snprintf(target,max_size, "RESERVED");break; | |
case(KEY_ESC): snprintf(target,max_size, "ESC");break; | |
case(KEY_1): snprintf(target,max_size, "1");break; | |
case(KEY_2): snprintf(target,max_size, "2");break; | |
case(KEY_3): snprintf(target,max_size, "3");break; | |
case(KEY_4): snprintf(target,max_size, "4");break; | |
case(KEY_5): snprintf(target,max_size, "5");break; | |
case(KEY_6): snprintf(target,max_size, "6");break; | |
case(KEY_7): snprintf(target,max_size, "7");break; | |
case(KEY_8): snprintf(target,max_size, "8");break; | |
case(KEY_9): snprintf(target,max_size, "9");break; | |
case(KEY_0): snprintf(target,max_size, "0");break; | |
case(KEY_MINUS): snprintf(target,max_size, "MINUS");break; | |
case(KEY_EQUAL): snprintf(target,max_size, "EQUAL");break; | |
case(KEY_BACKSPACE): snprintf(target,max_size, "BACKSPACE");break; | |
case(KEY_TAB): snprintf(target,max_size, "TAB");break; | |
case(KEY_Q): snprintf(target,max_size, "Q");break; | |
case(KEY_W): snprintf(target,max_size, "W");break; | |
case(KEY_E): snprintf(target,max_size, "E");break; | |
case(KEY_R): snprintf(target,max_size, "R");break; | |
case(KEY_T): snprintf(target,max_size, "T");break; | |
case(KEY_Y): snprintf(target,max_size, "Y");break; | |
case(KEY_U): snprintf(target,max_size, "U");break; | |
case(KEY_I): snprintf(target,max_size, "I");break; | |
case(KEY_O): snprintf(target,max_size, "O");break; | |
case(KEY_P): snprintf(target,max_size, "P");break; | |
case(KEY_LEFTBRACE): snprintf(target,max_size, "LEFTBRACE");break; | |
case(KEY_RIGHTBRACE): snprintf(target,max_size, "RIGHTBRACE");break; | |
case(KEY_ENTER): snprintf(target,max_size, "ENTER");break; | |
case(KEY_LEFTCTRL): snprintf(target,max_size, "LEFTCTRL");break; | |
case(KEY_A): snprintf(target,max_size, "A");break; | |
case(KEY_S): snprintf(target,max_size, "S");break; | |
case(KEY_D): snprintf(target,max_size, "D");break; | |
case(KEY_F): snprintf(target,max_size, "F");break; | |
case(KEY_G): snprintf(target,max_size, "G");break; | |
case(KEY_H): snprintf(target,max_size, "H");break; | |
case(KEY_J): snprintf(target,max_size, "J");break; | |
case(KEY_K): snprintf(target,max_size, "K");break; | |
case(KEY_L): snprintf(target,max_size, "L");break; | |
case(KEY_SEMICOLON): snprintf(target,max_size, "SEMICOLON");break; | |
case(KEY_APOSTROPHE): snprintf(target,max_size, "APOSTROPHE");break; | |
case(KEY_GRAVE): snprintf(target,max_size, "GRAVE");break; | |
case(KEY_LEFTSHIFT): snprintf(target,max_size, "LEFTSHIFT");break; | |
case(KEY_BACKSLASH): snprintf(target,max_size, "BACKSLASH");break; | |
case(KEY_Z): snprintf(target,max_size, "Z");break; | |
case(KEY_X): snprintf(target,max_size, "X");break; | |
case(KEY_C): snprintf(target,max_size, "C");break; | |
case(KEY_V): snprintf(target,max_size, "V");break; | |
case(KEY_B): snprintf(target,max_size, "B");break; | |
case(KEY_N): snprintf(target,max_size, "N");break; | |
case(KEY_M): snprintf(target,max_size, "M");break; | |
case(KEY_COMMA): snprintf(target,max_size, "COMMA");break; | |
case(KEY_DOT): snprintf(target,max_size, "DOT");break; | |
case(KEY_SLASH): snprintf(target,max_size, "SLASH");break; | |
case(KEY_RIGHTSHIFT): snprintf(target,max_size, "RIGHTSHIFT");break; | |
case(KEY_KPASTERISK): snprintf(target,max_size, "KPASTERISK");break; | |
case(KEY_LEFTALT): snprintf(target,max_size, "LEFTALT");break; | |
case(KEY_SPACE): snprintf(target,max_size, "SPACE");break; | |
case(KEY_CAPSLOCK): snprintf(target,max_size, "CAPSLOCK");break; | |
case(KEY_F1): snprintf(target,max_size, "F1");break; | |
case(KEY_F2): snprintf(target,max_size, "F2");break; | |
case(KEY_F3): snprintf(target,max_size, "F3");break; | |
case(KEY_F4): snprintf(target,max_size, "F4");break; | |
case(KEY_F5): snprintf(target,max_size, "F5");break; | |
case(KEY_F6): snprintf(target,max_size, "F6");break; | |
case(KEY_F7): snprintf(target,max_size, "F7");break; | |
case(KEY_F8): snprintf(target,max_size, "F8");break; | |
case(KEY_F9): snprintf(target,max_size, "F9");break; | |
case(KEY_F10): snprintf(target,max_size, "F10");break; | |
case(KEY_NUMLOCK): snprintf(target,max_size, "NUMLOCK");break; | |
case(KEY_SCROLLLOCK): snprintf(target,max_size, "SCROLLLOCK");break; | |
case(KEY_KP7): snprintf(target,max_size, "KP7");break; | |
case(KEY_KP8): snprintf(target,max_size, "KP8");break; | |
case(KEY_KP9): snprintf(target,max_size, "KP9");break; | |
case(KEY_KPMINUS): snprintf(target,max_size, "KPMINUS");break; | |
case(KEY_KP4): snprintf(target,max_size, "KP4");break; | |
case(KEY_KP5): snprintf(target,max_size, "KP5");break; | |
case(KEY_KP6): snprintf(target,max_size, "KP6");break; | |
case(KEY_KPPLUS): snprintf(target,max_size, "KPPLUS");break; | |
case(KEY_KP1): snprintf(target,max_size, "KP1");break; | |
case(KEY_KP2): snprintf(target,max_size, "KP2");break; | |
case(KEY_KP3): snprintf(target,max_size, "KP3");break; | |
case(KEY_KP0): snprintf(target,max_size, "KP0");break; | |
case(KEY_KPDOT): snprintf(target,max_size, "KPDOT");break; | |
case(KEY_ZENKAKUHANKAKU): snprintf(target,max_size, "ZENKAKUHANKAKU");break; | |
case(KEY_102ND): snprintf(target,max_size, "102ND");break; | |
case(KEY_F11): snprintf(target,max_size, "F11");break; | |
case(KEY_F12): snprintf(target,max_size, "F12");break; | |
case(KEY_RO): snprintf(target,max_size, "RO");break; | |
case(KEY_KATAKANA): snprintf(target,max_size, "KATAKANA");break; | |
case(KEY_HIRAGANA): snprintf(target,max_size, "HIRAGANA");break; | |
case(KEY_HENKAN): snprintf(target,max_size, "HENKAN");break; | |
case(KEY_KATAKANAHIRAGANA): snprintf(target,max_size, "KATAKANAHIRAGANA");break; | |
case(KEY_MUHENKAN): snprintf(target,max_size, "MUHENKAN");break; | |
case(KEY_KPJPCOMMA): snprintf(target,max_size, "KPJPCOMMA");break; | |
case(KEY_KPENTER): snprintf(target,max_size, "KPENTER");break; | |
case(KEY_RIGHTCTRL): snprintf(target,max_size, "RIGHTCTRL");break; | |
case(KEY_KPSLASH): snprintf(target,max_size, "KPSLASH");break; | |
case(KEY_SYSRQ): snprintf(target,max_size, "SYSRQ");break; | |
case(KEY_RIGHTALT): snprintf(target,max_size, "RIGHTALT");break; | |
case(KEY_LINEFEED): snprintf(target,max_size, "LINEFEED");break; | |
case(KEY_HOME): snprintf(target,max_size, "HOME");break; | |
case(KEY_UP): snprintf(target,max_size, "UP");break; | |
case(KEY_PAGEUP): snprintf(target,max_size, "PAGEUP");break; | |
case(KEY_LEFT): snprintf(target,max_size, "LEFT");break; | |
case(KEY_RIGHT): snprintf(target,max_size, "RIGHT");break; | |
case(KEY_END): snprintf(target,max_size, "END");break; | |
case(KEY_DOWN): snprintf(target,max_size, "DOWN");break; | |
case(KEY_PAGEDOWN): snprintf(target,max_size, "PAGEDOWN");break; | |
case(KEY_INSERT): snprintf(target,max_size, "INSERT");break; | |
case(KEY_DELETE): snprintf(target,max_size, "DELETE");break; | |
case(KEY_MACRO): snprintf(target,max_size, "MACRO");break; | |
case(KEY_MUTE): snprintf(target,max_size, "MUTE");break; | |
case(KEY_VOLUMEDOWN): snprintf(target,max_size, "VOLUMEDOWN");break; | |
case(KEY_VOLUMEUP): snprintf(target,max_size, "VOLUMEUP");break; | |
case(KEY_POWER): snprintf(target,max_size, "POWER");break; | |
case(KEY_KPEQUAL): snprintf(target,max_size, "KPEQUAL");break; | |
case(KEY_KPPLUSMINUS): snprintf(target,max_size, "KPPLUSMINUS");break; | |
case(KEY_PAUSE): snprintf(target,max_size, "PAUSE");break; | |
case(KEY_SCALE): snprintf(target,max_size, "SCALE");break; | |
case(KEY_KPCOMMA): snprintf(target,max_size, "KPCOMMA");break; | |
case(KEY_HANGEUL): snprintf(target,max_size, "HANGEUL");break; | |
case(KEY_HANJA): snprintf(target,max_size, "HANJA");break; | |
case(KEY_YEN): snprintf(target,max_size, "YEN");break; | |
case(KEY_LEFTMETA): snprintf(target,max_size, "LEFTMETA");break; | |
case(KEY_RIGHTMETA): snprintf(target,max_size, "RIGHTMETA");break; | |
case(KEY_COMPOSE): snprintf(target,max_size, "COMPOSE");break; | |
case(KEY_STOP): snprintf(target,max_size, "STOP");break; | |
case(KEY_AGAIN): snprintf(target,max_size, "AGAIN");break; | |
case(KEY_PROPS): snprintf(target,max_size, "PROPS");break; | |
case(KEY_UNDO): snprintf(target,max_size, "UNDO");break; | |
case(KEY_FRONT): snprintf(target,max_size, "FRONT");break; | |
case(KEY_COPY): snprintf(target,max_size, "COPY");break; | |
case(KEY_OPEN): snprintf(target,max_size, "OPEN");break; | |
case(KEY_PASTE): snprintf(target,max_size, "PASTE");break; | |
case(KEY_FIND): snprintf(target,max_size, "FIND");break; | |
case(KEY_CUT): snprintf(target,max_size, "CUT");break; | |
case(KEY_HELP): snprintf(target,max_size, "HELP");break; | |
case(KEY_MENU): snprintf(target,max_size, "MENU");break; | |
case(KEY_CALC): snprintf(target,max_size, "CALC");break; | |
case(KEY_SETUP): snprintf(target,max_size, "SETUP");break; | |
case(KEY_SLEEP): snprintf(target,max_size, "SLEEP");break; | |
case(KEY_WAKEUP): snprintf(target,max_size, "WAKEUP");break; | |
case(KEY_FILE): snprintf(target,max_size, "FILE");break; | |
case(KEY_SENDFILE): snprintf(target,max_size, "SENDFILE");break; | |
case(KEY_DELETEFILE): snprintf(target,max_size, "DELETEFILE");break; | |
case(KEY_XFER): snprintf(target,max_size, "XFER");break; | |
case(KEY_PROG1): snprintf(target,max_size, "PROG1");break; | |
case(KEY_PROG2): snprintf(target,max_size, "PROG2");break; | |
case(KEY_WWW): snprintf(target,max_size, "WWW");break; | |
case(KEY_MSDOS): snprintf(target,max_size, "MSDOS");break; | |
case(KEY_SCREENLOCK): snprintf(target,max_size, "SCREENLOCK");break; | |
case(KEY_DIRECTION): snprintf(target,max_size, "DIRECTION");break; | |
case(KEY_CYCLEWINDOWS): snprintf(target,max_size, "CYCLEWINDOWS");break; | |
case(KEY_MAIL): snprintf(target,max_size, "MAIL");break; | |
case(KEY_BOOKMARKS): snprintf(target,max_size, "BOOKMARKS");break; | |
case(KEY_COMPUTER): snprintf(target,max_size, "COMPUTER");break; | |
case(KEY_BACK): snprintf(target,max_size, "BACK");break; | |
case(KEY_FORWARD): snprintf(target,max_size, "FORWARD");break; | |
case(KEY_CLOSECD): snprintf(target,max_size, "CLOSECD");break; | |
case(KEY_EJECTCD): snprintf(target,max_size, "EJECTCD");break; | |
case(KEY_EJECTCLOSECD): snprintf(target,max_size, "EJECTCLOSECD");break; | |
case(KEY_NEXTSONG): snprintf(target,max_size, "NEXTSONG");break; | |
case(KEY_PLAYPAUSE): snprintf(target,max_size, "PLAYPAUSE");break; | |
case(KEY_PREVIOUSSONG): snprintf(target,max_size, "PREVIOUSSONG");break; | |
case(KEY_STOPCD): snprintf(target,max_size, "STOPCD");break; | |
case(KEY_RECORD): snprintf(target,max_size, "RECORD");break; | |
case(KEY_REWIND): snprintf(target,max_size, "REWIND");break; | |
case(KEY_PHONE): snprintf(target,max_size, "PHONE");break; | |
case(KEY_ISO): snprintf(target,max_size, "ISO");break; | |
case(KEY_CONFIG): snprintf(target,max_size, "CONFIG");break; | |
case(KEY_HOMEPAGE): snprintf(target,max_size, "HOMEPAGE");break; | |
case(KEY_REFRESH): snprintf(target,max_size, "REFRESH");break; | |
case(KEY_EXIT): snprintf(target,max_size, "EXIT");break; | |
case(KEY_MOVE): snprintf(target,max_size, "MOVE");break; | |
case(KEY_EDIT): snprintf(target,max_size, "EDIT");break; | |
case(KEY_SCROLLUP): snprintf(target,max_size, "SCROLLUP");break; | |
case(KEY_SCROLLDOWN): snprintf(target,max_size, "SCROLLDOWN");break; | |
case(KEY_KPLEFTPAREN): snprintf(target,max_size, "KPLEFTPAREN");break; | |
case(KEY_KPRIGHTPAREN): snprintf(target,max_size, "KPRIGHTPAREN");break; | |
case(KEY_NEW): snprintf(target,max_size, "NEW");break; | |
case(KEY_REDO): snprintf(target,max_size, "REDO");break; | |
case(KEY_F13): snprintf(target,max_size, "F13");break; | |
case(KEY_F14): snprintf(target,max_size, "F14");break; | |
case(KEY_F15): snprintf(target,max_size, "F15");break; | |
case(KEY_F16): snprintf(target,max_size, "F16");break; | |
case(KEY_F17): snprintf(target,max_size, "F17");break; | |
case(KEY_F18): snprintf(target,max_size, "F18");break; | |
case(KEY_F19): snprintf(target,max_size, "F19");break; | |
case(KEY_F20): snprintf(target,max_size, "F20");break; | |
case(KEY_F21): snprintf(target,max_size, "F21");break; | |
case(KEY_F22): snprintf(target,max_size, "F22");break; | |
case(KEY_F23): snprintf(target,max_size, "F23");break; | |
case(KEY_F24): snprintf(target,max_size, "F24");break; | |
case(KEY_PLAYCD): snprintf(target,max_size, "PLAYCD");break; | |
case(KEY_PAUSECD): snprintf(target,max_size, "PAUSECD");break; | |
case(KEY_PROG3): snprintf(target,max_size, "PROG3");break; | |
case(KEY_PROG4): snprintf(target,max_size, "PROG4");break; | |
case(KEY_DASHBOARD): snprintf(target,max_size, "DASHBOARD");break; | |
case(KEY_SUSPEND): snprintf(target,max_size, "SUSPEND");break; | |
case(KEY_CLOSE): snprintf(target,max_size, "CLOSE");break; | |
case(KEY_PLAY): snprintf(target,max_size, "PLAY");break; | |
case(KEY_FASTFORWARD): snprintf(target,max_size, "FASTFORWARD");break; | |
case(KEY_BASSBOOST): snprintf(target,max_size, "BASSBOOST");break; | |
case(KEY_PRINT): snprintf(target,max_size, "PRINT");break; | |
case(KEY_HP): snprintf(target,max_size, "HP");break; | |
case(KEY_CAMERA): snprintf(target,max_size, "CAMERA");break; | |
case(KEY_SOUND): snprintf(target,max_size, "SOUND");break; | |
case(KEY_QUESTION): snprintf(target,max_size, "QUESTION");break; | |
case(KEY_EMAIL): snprintf(target,max_size, "EMAIL");break; | |
case(KEY_CHAT): snprintf(target,max_size, "CHAT");break; | |
case(KEY_SEARCH): snprintf(target,max_size, "SEARCH");break; | |
case(KEY_CONNECT): snprintf(target,max_size, "CONNECT");break; | |
case(KEY_FINANCE): snprintf(target,max_size, "FINANCE");break; | |
case(KEY_SPORT): snprintf(target,max_size, "SPORT");break; | |
case(KEY_SHOP): snprintf(target,max_size, "SHOP");break; | |
case(KEY_ALTERASE): snprintf(target,max_size, "ALTERASE");break; | |
case(KEY_CANCEL): snprintf(target,max_size, "CANCEL");break; | |
case(KEY_BRIGHTNESSDOWN): snprintf(target,max_size, "BRIGHTNESSDOWN");break; | |
case(KEY_BRIGHTNESSUP): snprintf(target,max_size, "BRIGHTNESSUP");break; | |
case(KEY_MEDIA): snprintf(target,max_size, "MEDIA");break; | |
case(KEY_SWITCHVIDEOMODE): snprintf(target,max_size, "SWITCHVIDEOMODE");break; | |
case(KEY_KBDILLUMTOGGLE): snprintf(target,max_size, "KBDILLUMTOGGLE");break; | |
case(KEY_KBDILLUMDOWN): snprintf(target,max_size, "KBDILLUMDOWN");break; | |
case(KEY_KBDILLUMUP): snprintf(target,max_size, "KBDILLUMUP");break; | |
case(KEY_SEND): snprintf(target,max_size, "SEND");break; | |
case(KEY_REPLY): snprintf(target,max_size, "REPLY");break; | |
case(KEY_FORWARDMAIL): snprintf(target,max_size, "FORWARDMAIL");break; | |
case(KEY_SAVE): snprintf(target,max_size, "SAVE");break; | |
case(KEY_DOCUMENTS): snprintf(target,max_size, "DOCUMENTS");break; | |
case(KEY_BATTERY): snprintf(target,max_size, "BATTERY");break; | |
case(KEY_BLUETOOTH): snprintf(target,max_size, "BLUETOOTH");break; | |
case(KEY_WLAN): snprintf(target,max_size, "WLAN");break; | |
case(KEY_UWB): snprintf(target,max_size, "UWB");break; | |
case(KEY_UNKNOWN): snprintf(target,max_size, "UNKNOWN");break; | |
case(KEY_VIDEO_NEXT): snprintf(target,max_size, "VIDEO_NEXT");break; | |
case(KEY_VIDEO_PREV): snprintf(target,max_size, "VIDEO_PREV");break; | |
case(KEY_BRIGHTNESS_CYCLE): snprintf(target,max_size, "BRIGHTNESS_CYCLE");break; | |
case(KEY_BRIGHTNESS_ZERO): snprintf(target,max_size, "BRIGHTNESS_ZERO");break; | |
case(KEY_DISPLAY_OFF): snprintf(target,max_size, "DISPLAY_OFF");break; | |
case(KEY_WWAN): snprintf(target,max_size, "WWAN");break; | |
case(KEY_RFKILL): snprintf(target,max_size, "RFKILL");break; | |
case(KEY_MICMUTE): snprintf(target,max_size, "MICMUTE");break; | |
default: snprintf(target,max_size, __KEY_UNKNOWN); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef __LINUX_KEYS_H | |
#define __LINUX_KEYS_H | |
#include <stdio.h> | |
#include <linux/input-event-codes.h> | |
#define PRINT_KEY(keyid) keycode_to_stream(keyid,stdout); | |
#define EPRINT_KEY(keyid) keycode_to_stream(keyid,stderr); | |
#define __KEY_UNKNOWN "_UNKNOWN" | |
#define CANNOT_OPENDIR -1 | |
#define CANNOT_READLINK -2 | |
#define CANNOT_GETREALPATH -3 | |
#define CANNOT_GETCWD -4 | |
#define CANNOT_FCHDIR -5 | |
#define CANNOT_CLOSEDIR -6 | |
#define CANNOT_CHDIR -7 | |
typedef int key; | |
void keycode_to_stream(key,FILE*); | |
char* keycode_to_string(key); | |
void keycode_to_string_s(key,char*,size_t); | |
int get_keyboard_evpath_s(char*); | |
key wait_for_keypress(FILE*); | |
#endif //__LINUX_KEYS_H |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Example usage