#include "remoting/host/linux/keyboard_layout_monitor_utils.h"
namespace remoting {
const char* DeadKeyToUtf8String(guint keyval) {
switch (keyval) {
case GDK_KEY_dead_grave:
return " \xcc\x80";
case GDK_KEY_dead_acute:
return " \xcc\x81";
case GDK_KEY_dead_circumflex:
return " \xcc\x82";
case GDK_KEY_dead_tilde:
return " \xcc\x83";
case GDK_KEY_dead_macron:
return " \xcc\x84";
case GDK_KEY_dead_breve:
return " \xcc\x86";
case GDK_KEY_dead_abovedot:
return " \xcc\x87";
case GDK_KEY_dead_diaeresis:
return " \xcc\x88";
case GDK_KEY_dead_abovering:
return " \xcc\x8a";
case GDK_KEY_dead_doubleacute:
return " \xcc\x8b";
case GDK_KEY_dead_caron:
return " \xcc\x8c";
case GDK_KEY_dead_cedilla:
return " \xcc\xa7";
case GDK_KEY_dead_ogonek:
return " \xcc\xa8";
case GDK_KEY_dead_iota:
return " \xcd\x85";
case GDK_KEY_dead_voiced_sound:
return " \xe3\x82\x99";
case GDK_KEY_dead_semivoiced_sound:
return " \xe3\x82\x9a";
case GDK_KEY_dead_belowdot:
return " \xcc\xa3";
case GDK_KEY_dead_hook:
return " \xcc\x89";
case GDK_KEY_dead_horn:
return " \xcc\x9b";
case GDK_KEY_dead_stroke:
return " \xcc\xb7";
case GDK_KEY_dead_abovecomma:
return " \xcc\x93";
case GDK_KEY_dead_abovereversedcomma:
return " \xcc\x94";
case GDK_KEY_dead_doublegrave:
return " \xcc\x8f";
case GDK_KEY_dead_belowring:
return " \xcc\xa5";
case GDK_KEY_dead_belowmacron:
return " \xcc\xb1";
case GDK_KEY_dead_belowcircumflex:
return " \xcc\xad";
case GDK_KEY_dead_belowtilde:
return " \xcc\xb0";
case GDK_KEY_dead_belowbreve:
return " \xcc\xae";
case GDK_KEY_dead_belowdiaeresis:
return " \xcc\xa4";
case GDK_KEY_dead_invertedbreve:
return " \xcc\x91";
case GDK_KEY_dead_belowcomma:
return " \xcc\xa6";
case GDK_KEY_dead_currency:
return "\xc2\xa4";
case GDK_KEY_dead_greek:
return "\xce\xbc";
default:
return nullptr;
}
}
protocol::LayoutKeyFunction KeyvalToFunction(guint keyval) {
switch (keyval) {
case GDK_KEY_Control_L:
case GDK_KEY_Control_R:
return protocol::LayoutKeyFunction::CONTROL;
case GDK_KEY_Alt_L:
case GDK_KEY_Alt_R:
return protocol::LayoutKeyFunction::ALT;
case GDK_KEY_Shift_L:
case GDK_KEY_Shift_R:
return protocol::LayoutKeyFunction::SHIFT;
case GDK_KEY_Super_L:
case GDK_KEY_Super_R:
return protocol::LayoutKeyFunction::META;
case GDK_KEY_ISO_Level3_Shift:
return protocol::LayoutKeyFunction::ALT_GR;
case GDK_KEY_ISO_Level5_Shift:
return protocol::LayoutKeyFunction::MOD5;
case GDK_KEY_Multi_key:
return protocol::LayoutKeyFunction::COMPOSE;
case GDK_KEY_Num_Lock:
return protocol::LayoutKeyFunction::NUM_LOCK;
case GDK_KEY_Caps_Lock:
return protocol::LayoutKeyFunction::CAPS_LOCK;
case GDK_KEY_Scroll_Lock:
return protocol::LayoutKeyFunction::SCROLL_LOCK;
case GDK_KEY_BackSpace:
return protocol::LayoutKeyFunction::BACKSPACE;
case GDK_KEY_Return:
case GDK_KEY_KP_Enter:
return protocol::LayoutKeyFunction::ENTER;
case GDK_KEY_Tab:
case GDK_KEY_ISO_Left_Tab:
case GDK_KEY_KP_Tab:
return protocol::LayoutKeyFunction::TAB;
case GDK_KEY_Insert:
case GDK_KEY_KP_Insert:
return protocol::LayoutKeyFunction::INSERT;
case GDK_KEY_Delete:
case GDK_KEY_KP_Delete:
return protocol::LayoutKeyFunction::DELETE_;
case GDK_KEY_Home:
case GDK_KEY_KP_Home:
return protocol::LayoutKeyFunction::HOME;
case GDK_KEY_End:
case GDK_KEY_KP_End:
return protocol::LayoutKeyFunction::END;
case GDK_KEY_Page_Up:
case GDK_KEY_KP_Page_Up:
return protocol::LayoutKeyFunction::PAGE_UP;
case GDK_KEY_Page_Down:
case GDK_KEY_KP_Page_Down:
return protocol::LayoutKeyFunction::PAGE_DOWN;
case GDK_KEY_Clear:
return protocol::LayoutKeyFunction::CLEAR;
case GDK_KEY_Up:
case GDK_KEY_KP_Up:
return protocol::LayoutKeyFunction::ARROW_UP;
case GDK_KEY_Down:
case GDK_KEY_KP_Down:
return protocol::LayoutKeyFunction::ARROW_DOWN;
case GDK_KEY_Left:
case GDK_KEY_KP_Left:
return protocol::LayoutKeyFunction::ARROW_LEFT;
case GDK_KEY_Right:
case GDK_KEY_KP_Right:
return protocol::LayoutKeyFunction::ARROW_RIGHT;
case GDK_KEY_F1:
case GDK_KEY_KP_F1:
return protocol::LayoutKeyFunction::F1;
case GDK_KEY_F2:
case GDK_KEY_KP_F2:
return protocol::LayoutKeyFunction::F2;
case GDK_KEY_F3:
case GDK_KEY_KP_F3:
return protocol::LayoutKeyFunction::F3;
case GDK_KEY_F4:
case GDK_KEY_KP_F4:
return protocol::LayoutKeyFunction::F4;
case GDK_KEY_F5:
return protocol::LayoutKeyFunction::F5;
case GDK_KEY_F6:
return protocol::LayoutKeyFunction::F6;
case GDK_KEY_F7:
return protocol::LayoutKeyFunction::F7;
case GDK_KEY_F8:
return protocol::LayoutKeyFunction::F8;
case GDK_KEY_F9:
return protocol::LayoutKeyFunction::F9;
case GDK_KEY_F10:
return protocol::LayoutKeyFunction::F10;
case GDK_KEY_F11:
return protocol::LayoutKeyFunction::F11;
case GDK_KEY_F12:
return protocol::LayoutKeyFunction::F12;
case GDK_KEY_F13:
return protocol::LayoutKeyFunction::F13;
case GDK_KEY_F14:
return protocol::LayoutKeyFunction::F14;
case GDK_KEY_F15:
return protocol::LayoutKeyFunction::F15;
case GDK_KEY_F16:
return protocol::LayoutKeyFunction::F16;
case GDK_KEY_F17:
return protocol::LayoutKeyFunction::F17;
case GDK_KEY_F18:
return protocol::LayoutKeyFunction::F18;
case GDK_KEY_F19:
return protocol::LayoutKeyFunction::F19;
case GDK_KEY_F20:
return protocol::LayoutKeyFunction::F20;
case GDK_KEY_F21:
return protocol::LayoutKeyFunction::F21;
case GDK_KEY_F22:
return protocol::LayoutKeyFunction::F22;
case GDK_KEY_F23:
return protocol::LayoutKeyFunction::F23;
case GDK_KEY_F24:
return protocol::LayoutKeyFunction::F24;
case GDK_KEY_Escape:
return protocol::LayoutKeyFunction::ESCAPE;
case GDK_KEY_Menu:
return protocol::LayoutKeyFunction::CONTEXT_MENU;
case GDK_KEY_Pause:
return protocol::LayoutKeyFunction::PAUSE;
case GDK_KEY_Print:
case GDK_KEY_Sys_Req:
return protocol::LayoutKeyFunction::PRINT_SCREEN;
case GDK_KEY_Zenkaku_Hankaku:
case GDK_KEY_Kanji:
return protocol::LayoutKeyFunction::HANKAKU_ZENKAKU_KANJI;
case GDK_KEY_Henkan:
return protocol::LayoutKeyFunction::HENKAN;
case GDK_KEY_Muhenkan:
return protocol::LayoutKeyFunction::MUHENKAN;
case GDK_KEY_Hiragana_Katakana:
case GDK_KEY_Romaji:
return protocol::KATAKANA_HIRAGANA_ROMAJI;
case GDK_KEY_Eisu_toggle:
return protocol::LayoutKeyFunction::EISU;
case GDK_KEY_Hangul:
return protocol::LayoutKeyFunction::HAN_YEONG;
case GDK_KEY_Hangul_Hanja:
return protocol::LayoutKeyFunction::HANJA;
default:
return protocol::LayoutKeyFunction::UNKNOWN;
}
}
}