Changeset 245849 in webkit


Ignore:
Timestamp:
May 29, 2019 6:07:02 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

PlatformEventKeyboardGtk still uses old key aliases
https://bugs.webkit.org/show_bug.cgi?id=198326

Patch by Ludovico de Nittis <ludovico.denittis@collabora.com> on 2019-05-29
Reviewed by Carlos Garcia Campos.

No behavior change.

Use the new key names convention prepending "KEY_".

  • platform/gtk/PlatformKeyboardEventGtk.cpp:

(WebCore::PlatformKeyboardEvent::keyIdentifierForGdkKeyCode):
(WebCore::PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode):
(WebCore::PlatformKeyboardEvent::singleCharacterString):
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r245848 r245849  
     12019-05-29  Ludovico de Nittis  <ludovico.denittis@collabora.com>
     2
     3        PlatformEventKeyboardGtk still uses old key aliases
     4        https://bugs.webkit.org/show_bug.cgi?id=198326
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        No behavior change.
     9
     10        Use the new key names convention prepending "KEY_".
     11
     12        * platform/gtk/PlatformKeyboardEventGtk.cpp:
     13        (WebCore::PlatformKeyboardEvent::keyIdentifierForGdkKeyCode):
     14        (WebCore::PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode):
     15        (WebCore::PlatformKeyboardEvent::singleCharacterString):
     16        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
     17
    1182019-05-28  Yacine Bandou  <yacine.bandou@softathome.com>
    219
  • trunk/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp

    r241751 r245849  
    777777{
    778778    switch (keyCode) {
    779         case GDK_Menu:
    780         case GDK_Alt_L:
    781         case GDK_Alt_R:
    782             return "Alt";
    783         case GDK_Clear:
    784             return "Clear";
    785         case GDK_Down:
    786             return "Down";
    787             // "End"
    788         case GDK_End:
    789             return "End";
    790             // "Enter"
    791         case GDK_ISO_Enter:
    792         case GDK_KP_Enter:
    793         case GDK_Return:
    794             return "Enter";
    795         case GDK_Execute:
    796             return "Execute";
    797         case GDK_F1:
    798             return "F1";
    799         case GDK_F2:
    800             return "F2";
    801         case GDK_F3:
    802             return "F3";
    803         case GDK_F4:
    804             return "F4";
    805         case GDK_F5:
    806             return "F5";
    807         case GDK_F6:
    808             return "F6";
    809         case GDK_F7:
    810             return "F7";
    811         case GDK_F8:
    812             return "F8";
    813         case GDK_F9:
    814             return "F9";
    815         case GDK_F10:
    816             return "F10";
    817         case GDK_F11:
    818             return "F11";
    819         case GDK_F12:
    820             return "F12";
    821         case GDK_F13:
    822             return "F13";
    823         case GDK_F14:
    824             return "F14";
    825         case GDK_F15:
    826             return "F15";
    827         case GDK_F16:
    828             return "F16";
    829         case GDK_F17:
    830             return "F17";
    831         case GDK_F18:
    832             return "F18";
    833         case GDK_F19:
    834             return "F19";
    835         case GDK_F20:
    836             return "F20";
    837         case GDK_F21:
    838             return "F21";
    839         case GDK_F22:
    840             return "F22";
    841         case GDK_F23:
    842             return "F23";
    843         case GDK_F24:
    844             return "F24";
    845         case GDK_Help:
    846             return "Help";
    847         case GDK_Home:
    848             return "Home";
    849         case GDK_Insert:
    850             return "Insert";
    851         case GDK_Left:
    852             return "Left";
    853         case GDK_Page_Down:
    854             return "PageDown";
    855         case GDK_Page_Up:
    856             return "PageUp";
    857         case GDK_Pause:
    858             return "Pause";
    859         case GDK_3270_PrintScreen:
    860         case GDK_Print:
    861             return "PrintScreen";
    862         case GDK_Right:
    863             return "Right";
    864         case GDK_Select:
    865             return "Select";
    866         case GDK_Up:
    867             return "Up";
    868             // Standard says that DEL becomes U+007F.
    869         case GDK_Delete:
    870             return "U+007F";
    871         case GDK_BackSpace:
    872             return "U+0008";
    873         case GDK_ISO_Left_Tab:
    874         case GDK_3270_BackTab:
    875         case GDK_Tab:
    876             return "U+0009";
    877         default:
    878             return makeString("U+", hex(gdk_keyval_to_unicode(gdk_keyval_to_upper(keyCode)), 4));
     779    case GDK_KEY_Menu:
     780    case GDK_KEY_Alt_L:
     781    case GDK_KEY_Alt_R:
     782        return "Alt";
     783    case GDK_KEY_Clear:
     784        return "Clear";
     785    case GDK_KEY_Down:
     786        return "Down";
     787        // "End"
     788    case GDK_KEY_End:
     789        return "End";
     790        // "Enter"
     791    case GDK_KEY_ISO_Enter:
     792    case GDK_KEY_KP_Enter:
     793    case GDK_KEY_Return:
     794        return "Enter";
     795    case GDK_KEY_Execute:
     796        return "Execute";
     797    case GDK_KEY_F1:
     798        return "F1";
     799    case GDK_KEY_F2:
     800        return "F2";
     801    case GDK_KEY_F3:
     802        return "F3";
     803    case GDK_KEY_F4:
     804        return "F4";
     805    case GDK_KEY_F5:
     806        return "F5";
     807    case GDK_KEY_F6:
     808        return "F6";
     809    case GDK_KEY_F7:
     810        return "F7";
     811    case GDK_KEY_F8:
     812        return "F8";
     813    case GDK_KEY_F9:
     814        return "F9";
     815    case GDK_KEY_F10:
     816        return "F10";
     817    case GDK_KEY_F11:
     818        return "F11";
     819    case GDK_KEY_F12:
     820        return "F12";
     821    case GDK_KEY_F13:
     822        return "F13";
     823    case GDK_KEY_F14:
     824        return "F14";
     825    case GDK_KEY_F15:
     826        return "F15";
     827    case GDK_KEY_F16:
     828        return "F16";
     829    case GDK_KEY_F17:
     830        return "F17";
     831    case GDK_KEY_F18:
     832        return "F18";
     833    case GDK_KEY_F19:
     834        return "F19";
     835    case GDK_KEY_F20:
     836        return "F20";
     837    case GDK_KEY_F21:
     838        return "F21";
     839    case GDK_KEY_F22:
     840        return "F22";
     841    case GDK_KEY_F23:
     842        return "F23";
     843    case GDK_KEY_F24:
     844        return "F24";
     845    case GDK_KEY_Help:
     846        return "Help";
     847    case GDK_KEY_Home:
     848        return "Home";
     849    case GDK_KEY_Insert:
     850        return "Insert";
     851    case GDK_KEY_Left:
     852        return "Left";
     853    case GDK_KEY_Page_Down:
     854        return "PageDown";
     855    case GDK_KEY_Page_Up:
     856        return "PageUp";
     857    case GDK_KEY_Pause:
     858        return "Pause";
     859    case GDK_KEY_3270_PrintScreen:
     860    case GDK_KEY_Print:
     861        return "PrintScreen";
     862    case GDK_KEY_Right:
     863        return "Right";
     864    case GDK_KEY_Select:
     865        return "Select";
     866    case GDK_KEY_Up:
     867        return "Up";
     868        // Standard says that DEL becomes U+007F.
     869    case GDK_KEY_Delete:
     870        return "U+007F";
     871    case GDK_KEY_BackSpace:
     872        return "U+0008";
     873    case GDK_KEY_ISO_Left_Tab:
     874    case GDK_KEY_3270_BackTab:
     875    case GDK_KEY_Tab:
     876        return "U+0009";
     877    default:
     878        return makeString("U+", hex(gdk_keyval_to_unicode(gdk_keyval_to_upper(keyCode)), 4));
    879879    }
    880880}
     
    883883{
    884884    switch (keycode) {
    885         case GDK_KEY_Cancel:
    886             return 0x03; // (03) The Cancel key
    887         case GDK_KP_0:
    888             return VK_NUMPAD0;// (60) Numeric keypad 0 key
    889         case GDK_KP_1:
    890             return VK_NUMPAD1;// (61) Numeric keypad 1 key
    891         case GDK_KP_2:
    892             return VK_NUMPAD2; // (62) Numeric keypad 2 key
    893         case GDK_KP_3:
    894             return VK_NUMPAD3; // (63) Numeric keypad 3 key
    895         case GDK_KP_4:
    896             return VK_NUMPAD4; // (64) Numeric keypad 4 key
    897         case GDK_KP_5:
    898             return VK_NUMPAD5; //(65) Numeric keypad 5 key
    899         case GDK_KP_6:
    900             return VK_NUMPAD6; // (66) Numeric keypad 6 key
    901         case GDK_KP_7:
    902             return VK_NUMPAD7; // (67) Numeric keypad 7 key
    903         case GDK_KP_8:
    904             return VK_NUMPAD8; // (68) Numeric keypad 8 key
    905         case GDK_KP_9:
    906             return VK_NUMPAD9; // (69) Numeric keypad 9 key
    907         case GDK_KP_Multiply:
    908             return VK_MULTIPLY; // (6A) Multiply key
    909         case GDK_KP_Add:
    910             return VK_ADD; // (6B) Add key
    911         case GDK_KP_Subtract:
    912             return VK_SUBTRACT; // (6D) Subtract key
    913         case GDK_KP_Decimal:
    914             return VK_DECIMAL; // (6E) Decimal key
    915         case GDK_KP_Divide:
    916             return VK_DIVIDE; // (6F) Divide key
    917 
    918         case GDK_KP_Page_Up:
    919             return VK_PRIOR; // (21) PAGE UP key
    920         case GDK_KP_Page_Down:
    921             return VK_NEXT; // (22) PAGE DOWN key
    922         case GDK_KP_End:
    923             return VK_END; // (23) END key
    924         case GDK_KP_Home:
    925             return VK_HOME; // (24) HOME key
    926         case GDK_KP_Left:
    927             return VK_LEFT; // (25) LEFT ARROW key
    928         case GDK_KP_Up:
    929             return VK_UP; // (26) UP ARROW key
    930         case GDK_KP_Right:
    931             return VK_RIGHT; // (27) RIGHT ARROW key
    932         case GDK_KP_Down:
    933             return VK_DOWN; // (28) DOWN ARROW key
    934 
    935         case GDK_BackSpace:
    936             return VK_BACK; // (08) BACKSPACE key
    937         case GDK_ISO_Left_Tab:
    938         case GDK_3270_BackTab:
    939         case GDK_Tab:
    940             return VK_TAB; // (09) TAB key
    941         case GDK_Clear:
    942             return VK_CLEAR; // (0C) CLEAR key
    943         case GDK_ISO_Enter:
    944         case GDK_KP_Enter:
    945         case GDK_Return:
    946             return VK_RETURN; //(0D) Return key
    947 
    948             // VK_SHIFT (10) SHIFT key
    949             // VK_CONTROL (11) CTRL key
    950 
    951         case GDK_Menu:
    952             return VK_APPS; // (5D) Applications key (Natural keyboard)
    953 
    954             // VK_MENU (12) ALT key
    955 
    956         case GDK_Pause:
    957         case GDK_KEY_AudioPause:
    958             return VK_PAUSE; // (13) PAUSE key
    959         case GDK_Caps_Lock:
    960             return VK_CAPITAL; // (14) CAPS LOCK key
    961         case GDK_Kana_Lock:
    962         case GDK_Kana_Shift:
    963             return VK_KANA; // (15) Input Method Editor (IME) Kana mode
    964         case GDK_Hangul:
    965             return VK_HANGUL; // VK_HANGUL (15) IME Hangul mode
    966             // VK_JUNJA (17) IME Junja mode
    967             // VK_FINAL (18) IME final mode
    968         case GDK_Hangul_Hanja:
    969             return VK_HANJA; // (19) IME Hanja mode
    970         case GDK_Kanji:
    971             return VK_KANJI; // (19) IME Kanji mode
    972         case GDK_Escape:
    973             return VK_ESCAPE; // (1B) ESC key
    974             // VK_CONVERT (1C) IME convert
    975             // VK_NONCONVERT (1D) IME nonconvert
    976             // VK_ACCEPT (1E) IME accept
    977             // VK_MODECHANGE (1F) IME mode change request
    978         case GDK_space:
    979             return VK_SPACE; // (20) SPACEBAR
    980         case GDK_Page_Up:
    981             return VK_PRIOR; // (21) PAGE UP key
    982         case GDK_Page_Down:
    983             return VK_NEXT; // (22) PAGE DOWN key
    984         case GDK_End:
    985             return VK_END; // (23) END key
    986         case GDK_Home:
    987             return VK_HOME; // (24) HOME key
    988         case GDK_Left:
    989             return VK_LEFT; // (25) LEFT ARROW key
    990         case GDK_Up:
    991             return VK_UP; // (26) UP ARROW key
    992         case GDK_Right:
    993             return VK_RIGHT; // (27) RIGHT ARROW key
    994         case GDK_Down:
    995             return VK_DOWN; // (28) DOWN ARROW key
    996         case GDK_Select:
    997             return VK_SELECT; // (29) SELECT key
    998         case GDK_Print:
    999             return VK_SNAPSHOT; // (2C) PRINT SCREEN key
    1000         case GDK_Execute:
    1001             return VK_EXECUTE;// (2B) EXECUTE key
    1002         case GDK_Insert:
    1003         case GDK_KP_Insert:
    1004             return VK_INSERT; // (2D) INS key
    1005         case GDK_Delete:
    1006         case GDK_KP_Delete:
    1007             return VK_DELETE; // (2E) DEL key
    1008         case GDK_Help:
    1009             return VK_HELP; // (2F) HELP key
    1010         case GDK_0:
    1011         case GDK_parenright:
    1012             return VK_0;    //  (30) 0) key
    1013         case GDK_1:
    1014         case GDK_exclam:
    1015             return VK_1; //  (31) 1 ! key
    1016         case GDK_2:
    1017         case GDK_at:
    1018             return VK_2; //  (32) 2 & key
    1019         case GDK_3:
    1020         case GDK_numbersign:
    1021             return VK_3; //case '3': case '#';
    1022         case GDK_4:
    1023         case GDK_dollar: //  (34) 4 key '$';
    1024             return VK_4;
    1025         case GDK_5:
    1026         case GDK_percent:
    1027             return VK_5; //  (35) 5 key  '%'
    1028         case GDK_6:
    1029         case GDK_asciicircum:
    1030             return VK_6; //  (36) 6 key  '^'
    1031         case GDK_7:
    1032         case GDK_ampersand:
    1033             return VK_7; //  (37) 7 key  case '&'
    1034         case GDK_8:
    1035         case GDK_asterisk:
    1036             return VK_8; //  (38) 8 key  '*'
    1037         case GDK_9:
    1038         case GDK_parenleft:
    1039             return VK_9; //  (39) 9 key '('
    1040         case GDK_a:
    1041         case GDK_A:
    1042             return VK_A; //  (41) A key case 'a': case 'A': return 0x41;
    1043         case GDK_b:
    1044         case GDK_B:
    1045             return VK_B; //  (42) B key case 'b': case 'B': return 0x42;
    1046         case GDK_c:
    1047         case GDK_C:
    1048             return VK_C; //  (43) C key case 'c': case 'C': return 0x43;
    1049         case GDK_d:
    1050         case GDK_D:
    1051             return VK_D; //  (44) D key case 'd': case 'D': return 0x44;
    1052         case GDK_e:
    1053         case GDK_E:
    1054             return VK_E; //  (45) E key case 'e': case 'E': return 0x45;
    1055         case GDK_f:
    1056         case GDK_F:
    1057             return VK_F; //  (46) F key case 'f': case 'F': return 0x46;
    1058         case GDK_g:
    1059         case GDK_G:
    1060             return VK_G; //  (47) G key case 'g': case 'G': return 0x47;
    1061         case GDK_h:
    1062         case GDK_H:
    1063             return VK_H; //  (48) H key case 'h': case 'H': return 0x48;
    1064         case GDK_i:
    1065         case GDK_I:
    1066             return VK_I; //  (49) I key case 'i': case 'I': return 0x49;
    1067         case GDK_j:
    1068         case GDK_J:
    1069             return VK_J; //  (4A) J key case 'j': case 'J': return 0x4A;
    1070         case GDK_k:
    1071         case GDK_K:
    1072             return VK_K; //  (4B) K key case 'k': case 'K': return 0x4B;
    1073         case GDK_l:
    1074         case GDK_L:
    1075             return VK_L; //  (4C) L key case 'l': case 'L': return 0x4C;
    1076         case GDK_m:
    1077         case GDK_M:
    1078             return VK_M; //  (4D) M key case 'm': case 'M': return 0x4D;
    1079         case GDK_n:
    1080         case GDK_N:
    1081             return VK_N; //  (4E) N key case 'n': case 'N': return 0x4E;
    1082         case GDK_o:
    1083         case GDK_O:
    1084             return VK_O; //  (4F) O key case 'o': case 'O': return 0x4F;
    1085         case GDK_p:
    1086         case GDK_P:
    1087             return VK_P; //  (50) P key case 'p': case 'P': return 0x50;
    1088         case GDK_q:
    1089         case GDK_Q:
    1090             return VK_Q; //  (51) Q key case 'q': case 'Q': return 0x51;
    1091         case GDK_r:
    1092         case GDK_R:
    1093             return VK_R; //  (52) R key case 'r': case 'R': return 0x52;
    1094         case GDK_s:
    1095         case GDK_S:
    1096             return VK_S; //  (53) S key case 's': case 'S': return 0x53;
    1097         case GDK_t:
    1098         case GDK_T:
    1099             return VK_T; //  (54) T key case 't': case 'T': return 0x54;
    1100         case GDK_u:
    1101         case GDK_U:
    1102             return VK_U; //  (55) U key case 'u': case 'U': return 0x55;
    1103         case GDK_v:
    1104         case GDK_V:
    1105             return VK_V; //  (56) V key case 'v': case 'V': return 0x56;
    1106         case GDK_w:
    1107         case GDK_W:
    1108             return VK_W; //  (57) W key case 'w': case 'W': return 0x57;
    1109         case GDK_x:
    1110         case GDK_X:
    1111             return VK_X; //  (58) X key case 'x': case 'X': return 0x58;
    1112         case GDK_y:
    1113         case GDK_Y:
    1114             return VK_Y; //  (59) Y key case 'y': case 'Y': return 0x59;
    1115         case GDK_z:
    1116         case GDK_Z:
    1117             return VK_Z; //  (5A) Z key case 'z': case 'Z': return 0x5A;
    1118         case GDK_Meta_L:
    1119             return VK_LWIN; // (5B) Left Windows key (Microsoft Natural keyboard)
    1120         case GDK_Meta_R:
    1121             return VK_RWIN; // (5C) Right Windows key (Natural keyboard)
    1122         case GDK_KEY_Sleep:
    1123             return VK_SLEEP; // (5F) Computer Sleep key
    1124             // VK_SEPARATOR (6C) Separator key
    1125             // VK_SUBTRACT (6D) Subtract key
    1126             // VK_DECIMAL (6E) Decimal key
    1127             // VK_DIVIDE (6F) Divide key
    1128             // handled by key code above
    1129 
    1130         case GDK_Num_Lock:
    1131             return VK_NUMLOCK; // (90) NUM LOCK key
    1132 
    1133         case GDK_Scroll_Lock:
    1134             return VK_SCROLL; // (91) SCROLL LOCK key
    1135 
    1136         case GDK_Shift_L:
    1137             return VK_LSHIFT; // (A0) Left SHIFT key
    1138         case GDK_Shift_R:
    1139             return VK_RSHIFT; // (A1) Right SHIFT key
    1140         case GDK_Control_L:
    1141             return VK_LCONTROL; // (A2) Left CONTROL key
    1142         case GDK_Control_R:
    1143             return VK_RCONTROL; // (A3) Right CONTROL key
    1144         case GDK_Alt_L:
    1145             return VK_LMENU; // (A4) Left MENU key
    1146         case GDK_Alt_R:
    1147             return VK_RMENU; // (A5) Right MENU key
    1148 
    1149         case GDK_KEY_Back:
    1150             return VK_BROWSER_BACK; // VK_BROWSER_BACK (A6) Windows 2000/XP: Browser Back key
    1151         case GDK_KEY_Forward:
    1152             return VK_BROWSER_FORWARD; // (A7) Windows 2000/XP: Browser Forward key
    1153         case GDK_KEY_Refresh:
    1154             return VK_BROWSER_REFRESH; // (A8) Windows 2000/XP: Browser Refresh key
    1155         case GDK_KEY_Stop:
    1156             return VK_BROWSER_STOP; // (A9) Windows 2000/XP: Browser Stop key
    1157         case GDK_KEY_Search:
    1158             return VK_BROWSER_SEARCH; // (AA) Windows 2000/XP: Browser Search key
    1159         case GDK_KEY_Favorites:
    1160             return VK_BROWSER_FAVORITES; // (AB) Windows 2000/XP: Browser Favorites key
    1161         case GDK_KEY_HomePage:
    1162             return VK_BROWSER_HOME; // (AC) Windows 2000/XP: Browser Start and Home key
    1163         case GDK_KEY_AudioMute:
    1164             return VK_VOLUME_MUTE; // (AD) Windows 2000/XP: Volume Mute key
    1165         case GDK_KEY_AudioLowerVolume:
    1166             return VK_VOLUME_DOWN; // (AE) Windows 2000/XP: Volume Down key
    1167         case GDK_KEY_AudioRaiseVolume:
    1168             return VK_VOLUME_UP; // (AF) Windows 2000/XP: Volume Up key
    1169         case GDK_KEY_AudioNext:
    1170             return VK_MEDIA_NEXT_TRACK; // (B0) Windows 2000/XP: Next Track key
    1171         case GDK_KEY_AudioPrev:
    1172             return VK_MEDIA_PREV_TRACK; // (B1) Windows 2000/XP: Previous Track key
    1173         case GDK_KEY_AudioStop:
    1174             return VK_MEDIA_STOP; // (B2) Windows 2000/XP: Stop Media key
    1175             // VK_MEDIA_PLAY_PAUSE (B3) Windows 2000/XP: Play/Pause Media key
    1176             // VK_LAUNCH_MAIL (B4) Windows 2000/XP: Start Mail key
    1177         case GDK_KEY_AudioMedia:
    1178             return VK_MEDIA_LAUNCH_MEDIA_SELECT; // (B5) Windows 2000/XP: Select Media key
    1179             // VK_LAUNCH_APP1 (B6) Windows 2000/XP: Start Application 1 key
    1180             // VK_LAUNCH_APP2 (B7) Windows 2000/XP: Start Application 2 key
    1181 
    1182             // VK_OEM_1 (BA) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ';:' key
    1183         case GDK_semicolon:
    1184         case GDK_colon:
    1185             return VK_OEM_1; //case ';': case ':': return 0xBA;
    1186             // VK_OEM_PLUS (BB) Windows 2000/XP: For any country/region, the '+' key
    1187         case GDK_plus:
    1188         case GDK_equal:
    1189             return VK_OEM_PLUS; //case '=': case '+': return 0xBB;
    1190             // VK_OEM_COMMA (BC) Windows 2000/XP: For any country/region, the ',' key
    1191         case GDK_comma:
    1192         case GDK_less:
    1193             return VK_OEM_COMMA; //case ',': case '<': return 0xBC;
    1194             // VK_OEM_MINUS (BD) Windows 2000/XP: For any country/region, the '-' key
    1195         case GDK_minus:
    1196         case GDK_underscore:
    1197             return VK_OEM_MINUS; //case '-': case '_': return 0xBD;
    1198             // VK_OEM_PERIOD (BE) Windows 2000/XP: For any country/region, the '.' key
    1199         case GDK_period:
    1200         case GDK_greater:
    1201             return VK_OEM_PERIOD; //case '.': case '>': return 0xBE;
    1202             // VK_OEM_2 (BF) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '/?' key
    1203         case GDK_slash:
    1204         case GDK_question:
    1205             return VK_OEM_2; //case '/': case '?': return 0xBF;
    1206             // VK_OEM_3 (C0) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '`~' key
    1207         case GDK_asciitilde:
    1208         case GDK_quoteleft:
    1209             return VK_OEM_3; //case '`': case '~': return 0xC0;
    1210             // VK_OEM_4 (DB) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '[{' key
    1211         case GDK_bracketleft:
    1212         case GDK_braceleft:
    1213             return VK_OEM_4; //case '[': case '{': return 0xDB;
    1214             // VK_OEM_5 (DC) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '\|' key
    1215         case GDK_backslash:
    1216         case GDK_bar:
    1217             return VK_OEM_5; //case '\\': case '|': return 0xDC;
    1218             // VK_OEM_6 (DD) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ']}' key
    1219         case GDK_bracketright:
    1220         case GDK_braceright:
    1221             return VK_OEM_6; // case ']': case '}': return 0xDD;
    1222             // VK_OEM_7 (DE) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key
    1223         case GDK_quoteright:
    1224         case GDK_quotedbl:
    1225             return VK_OEM_7; // case '\'': case '"': return 0xDE;
    1226             // VK_OEM_8 (DF) Used for miscellaneous characters; it can vary by keyboard.
    1227             // VK_OEM_102 (E2) Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
    1228         case GDK_KEY_AudioRewind:
    1229             return 0xE3; // (E3) Android/GoogleTV: Rewind media key (Windows: VK_ICO_HELP Help key on 1984 Olivetti M24 deluxe keyboard)
    1230         case GDK_KEY_AudioForward:
    1231             return 0xE4; // (E4) Android/GoogleTV: Fast forward media key  (Windows: VK_ICO_00 '00' key on 1984 Olivetti M24 deluxe keyboard)
    1232             // VK_PROCESSKEY (E5) Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
    1233             // VK_PACKET (E7) Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT,SendInput, WM_KEYDOWN, and WM_KEYUP
    1234             // VK_ATTN (F6) Attn key
    1235             // VK_CRSEL (F7) CrSel key
    1236             // VK_EXSEL (F8) ExSel key
    1237             // VK_EREOF (F9) Erase EOF key
    1238         case GDK_KEY_AudioPlay:
    1239             return VK_PLAY; // VK_PLAY (FA) Play key
    1240             // VK_ZOOM (FB) Zoom key
    1241             // VK_NONAME (FC) Reserved for future use
    1242             // VK_PA1 (FD) PA1 key
    1243             // VK_OEM_CLEAR (FE) Clear key
    1244         case GDK_F1:
    1245         case GDK_F2:
    1246         case GDK_F3:
    1247         case GDK_F4:
    1248         case GDK_F5:
    1249         case GDK_F6:
    1250         case GDK_F7:
    1251         case GDK_F8:
    1252         case GDK_F9:
    1253         case GDK_F10:
    1254         case GDK_F11:
    1255         case GDK_F12:
    1256         case GDK_F13:
    1257         case GDK_F14:
    1258         case GDK_F15:
    1259         case GDK_F16:
    1260         case GDK_F17:
    1261         case GDK_F18:
    1262         case GDK_F19:
    1263         case GDK_F20:
    1264         case GDK_F21:
    1265         case GDK_F22:
    1266         case GDK_F23:
    1267         case GDK_F24:
    1268             return VK_F1 + (keycode - GDK_F1);
    1269         case GDK_KEY_VoidSymbol:
    1270             return VK_PROCESSKEY;
    1271 
    1272         // TV keycodes from DASE / OCAP / CE-HTML standards.
    1273         case GDK_KEY_Red:
    1274             return 0x193; // General purpose color-coded media function key, as index 0 (red)
    1275         case GDK_KEY_Green:
    1276             return 0x194; // General purpose color-coded media function key, as index 1 (green)
    1277         case GDK_KEY_Yellow:
    1278             return 0x195; // General purpose color-coded media function key, as index 2 (yellow)
    1279         case GDK_KEY_Blue:
    1280             return 0x196; // General purpose color-coded media function key, as index 3 (blue)
    1281         case GDK_KEY_PowerOff:
    1282             return 0x199; // Toggle power state
    1283         case GDK_KEY_AudioRecord:
    1284             return 0x1A0; // Initiate or resume recording of currently selected media
    1285         case GDK_KEY_Display:
    1286             return 0x1BC; // Swap video sources
    1287         case GDK_KEY_Subtitle:
    1288             return 0x1CC; // Toggle display of subtitles, if available
    1289         case GDK_KEY_Video:
    1290             return 0x26F; // Access on-demand content or programs
    1291         default:
    1292             return 0;
     885    case GDK_KEY_Cancel:
     886        return 0x03; // (03) The Cancel key
     887    case GDK_KEY_KP_0:
     888        return VK_NUMPAD0; // (60) Numeric keypad 0 key
     889    case GDK_KEY_KP_1:
     890        return VK_NUMPAD1; // (61) Numeric keypad 1 key
     891    case GDK_KEY_KP_2:
     892        return VK_NUMPAD2; // (62) Numeric keypad 2 key
     893    case GDK_KEY_KP_3:
     894        return VK_NUMPAD3; // (63) Numeric keypad 3 key
     895    case GDK_KEY_KP_4:
     896        return VK_NUMPAD4; // (64) Numeric keypad 4 key
     897    case GDK_KEY_KP_5:
     898        return VK_NUMPAD5; // (65) Numeric keypad 5 key
     899    case GDK_KEY_KP_6:
     900        return VK_NUMPAD6; // (66) Numeric keypad 6 key
     901    case GDK_KEY_KP_7:
     902        return VK_NUMPAD7; // (67) Numeric keypad 7 key
     903    case GDK_KEY_KP_8:
     904        return VK_NUMPAD8; // (68) Numeric keypad 8 key
     905    case GDK_KEY_KP_9:
     906        return VK_NUMPAD9; // (69) Numeric keypad 9 key
     907    case GDK_KEY_KP_Multiply:
     908        return VK_MULTIPLY; // (6A) Multiply key
     909    case GDK_KEY_KP_Add:
     910        return VK_ADD; // (6B) Add key
     911    case GDK_KEY_KP_Subtract:
     912        return VK_SUBTRACT; // (6D) Subtract key
     913    case GDK_KEY_KP_Decimal:
     914        return VK_DECIMAL; // (6E) Decimal key
     915    case GDK_KEY_KP_Divide:
     916        return VK_DIVIDE; // (6F) Divide key
     917
     918    case GDK_KEY_KP_Page_Up:
     919        return VK_PRIOR; // (21) PAGE UP key
     920    case GDK_KEY_KP_Page_Down:
     921        return VK_NEXT; // (22) PAGE DOWN key
     922    case GDK_KEY_KP_End:
     923        return VK_END; // (23) END key
     924    case GDK_KEY_KP_Home:
     925        return VK_HOME; // (24) HOME key
     926    case GDK_KEY_KP_Left:
     927        return VK_LEFT; // (25) LEFT ARROW key
     928    case GDK_KEY_KP_Up:
     929        return VK_UP; // (26) UP ARROW key
     930    case GDK_KEY_KP_Right:
     931        return VK_RIGHT; // (27) RIGHT ARROW key
     932    case GDK_KEY_KP_Down:
     933        return VK_DOWN; // (28) DOWN ARROW key
     934
     935    case GDK_KEY_BackSpace:
     936        return VK_BACK; // (08) BACKSPACE key
     937    case GDK_KEY_ISO_Left_Tab:
     938    case GDK_KEY_3270_BackTab:
     939    case GDK_KEY_Tab:
     940        return VK_TAB; // (09) TAB key
     941    case GDK_KEY_Clear:
     942        return VK_CLEAR; // (0C) CLEAR key
     943    case GDK_KEY_ISO_Enter:
     944    case GDK_KEY_KP_Enter:
     945    case GDK_KEY_Return:
     946        return VK_RETURN; // (0D) Return key
     947
     948        // VK_SHIFT (10) SHIFT key
     949        // VK_CONTROL (11) CTRL key
     950
     951    case GDK_KEY_Menu:
     952        return VK_APPS; // (5D) Applications key (Natural keyboard)
     953
     954        // VK_MENU (12) ALT key
     955
     956    case GDK_KEY_Pause:
     957    case GDK_KEY_AudioPause:
     958        return VK_PAUSE; // (13) PAUSE key
     959    case GDK_KEY_Caps_Lock:
     960        return VK_CAPITAL; // (14) CAPS LOCK key
     961    case GDK_KEY_Kana_Lock:
     962    case GDK_KEY_Kana_Shift:
     963        return VK_KANA; // (15) Input Method Editor (IME) Kana mode
     964    case GDK_KEY_Hangul:
     965        return VK_HANGUL; // VK_HANGUL (15) IME Hangul mode
     966        // VK_JUNJA (17) IME Junja mode
     967        // VK_FINAL (18) IME final mode
     968    case GDK_KEY_Hangul_Hanja:
     969        return VK_HANJA; // (19) IME Hanja mode
     970    case GDK_KEY_Kanji:
     971        return VK_KANJI; // (19) IME Kanji mode
     972    case GDK_KEY_Escape:
     973        return VK_ESCAPE; // (1B) ESC key
     974        // VK_CONVERT (1C) IME convert
     975        // VK_NONCONVERT (1D) IME nonconvert
     976        // VK_ACCEPT (1E) IME accept
     977        // VK_MODECHANGE (1F) IME mode change request
     978    case GDK_KEY_space:
     979        return VK_SPACE; // (20) SPACEBAR
     980    case GDK_KEY_Page_Up:
     981        return VK_PRIOR; // (21) PAGE UP key
     982    case GDK_KEY_Page_Down:
     983        return VK_NEXT; // (22) PAGE DOWN key
     984    case GDK_KEY_End:
     985        return VK_END; // (23) END key
     986    case GDK_KEY_Home:
     987        return VK_HOME; // (24) HOME key
     988    case GDK_KEY_Left:
     989        return VK_LEFT; // (25) LEFT ARROW key
     990    case GDK_KEY_Up:
     991        return VK_UP; // (26) UP ARROW key
     992    case GDK_KEY_Right:
     993        return VK_RIGHT; // (27) RIGHT ARROW key
     994    case GDK_KEY_Down:
     995        return VK_DOWN; // (28) DOWN ARROW key
     996    case GDK_KEY_Select:
     997        return VK_SELECT; // (29) SELECT key
     998    case GDK_KEY_Print:
     999        return VK_SNAPSHOT; // (2C) PRINT SCREEN key
     1000    case GDK_KEY_Execute:
     1001        return VK_EXECUTE; // (2B) EXECUTE key
     1002    case GDK_KEY_Insert:
     1003    case GDK_KEY_KP_Insert:
     1004        return VK_INSERT; // (2D) INS key
     1005    case GDK_KEY_Delete:
     1006    case GDK_KEY_KP_Delete:
     1007        return VK_DELETE; // (2E) DEL key
     1008    case GDK_KEY_Help:
     1009        return VK_HELP; // (2F) HELP key
     1010    case GDK_KEY_0:
     1011    case GDK_KEY_parenright:
     1012        return VK_0; //  (30) 0) key
     1013    case GDK_KEY_1:
     1014    case GDK_KEY_exclam:
     1015        return VK_1; //  (31) 1 ! key
     1016    case GDK_KEY_2:
     1017    case GDK_KEY_at:
     1018        return VK_2; //  (32) 2 & key
     1019    case GDK_KEY_3:
     1020    case GDK_KEY_numbersign:
     1021        return VK_3; // case '3': case '#';
     1022    case GDK_KEY_4:
     1023    case GDK_KEY_dollar: //  (34) 4 key '$';
     1024        return VK_4;
     1025    case GDK_KEY_5:
     1026    case GDK_KEY_percent:
     1027        return VK_5; //  (35) 5 key  '%'
     1028    case GDK_KEY_6:
     1029    case GDK_KEY_asciicircum:
     1030        return VK_6; //  (36) 6 key  '^'
     1031    case GDK_KEY_7:
     1032    case GDK_KEY_ampersand:
     1033        return VK_7; //  (37) 7 key  case '&'
     1034    case GDK_KEY_8:
     1035    case GDK_KEY_asterisk:
     1036        return VK_8; //  (38) 8 key  '*'
     1037    case GDK_KEY_9:
     1038    case GDK_KEY_parenleft:
     1039        return VK_9; //  (39) 9 key '('
     1040    case GDK_KEY_a:
     1041    case GDK_KEY_A:
     1042        return VK_A; //  (41) A key case 'a': case 'A': return 0x41;
     1043    case GDK_KEY_b:
     1044    case GDK_KEY_B:
     1045        return VK_B; //  (42) B key case 'b': case 'B': return 0x42;
     1046    case GDK_KEY_c:
     1047    case GDK_KEY_C:
     1048        return VK_C; //  (43) C key case 'c': case 'C': return 0x43;
     1049    case GDK_KEY_d:
     1050    case GDK_KEY_D:
     1051        return VK_D; //  (44) D key case 'd': case 'D': return 0x44;
     1052    case GDK_KEY_e:
     1053    case GDK_KEY_E:
     1054        return VK_E; //  (45) E key case 'e': case 'E': return 0x45;
     1055    case GDK_KEY_f:
     1056    case GDK_KEY_F:
     1057        return VK_F; //  (46) F key case 'f': case 'F': return 0x46;
     1058    case GDK_KEY_g:
     1059    case GDK_KEY_G:
     1060        return VK_G; //  (47) G key case 'g': case 'G': return 0x47;
     1061    case GDK_KEY_h:
     1062    case GDK_KEY_H:
     1063        return VK_H; //  (48) H key case 'h': case 'H': return 0x48;
     1064    case GDK_KEY_i:
     1065    case GDK_KEY_I:
     1066        return VK_I; //  (49) I key case 'i': case 'I': return 0x49;
     1067    case GDK_KEY_j:
     1068    case GDK_KEY_J:
     1069        return VK_J; //  (4A) J key case 'j': case 'J': return 0x4A;
     1070    case GDK_KEY_k:
     1071    case GDK_KEY_K:
     1072        return VK_K; //  (4B) K key case 'k': case 'K': return 0x4B;
     1073    case GDK_KEY_l:
     1074    case GDK_KEY_L:
     1075        return VK_L; //  (4C) L key case 'l': case 'L': return 0x4C;
     1076    case GDK_KEY_m:
     1077    case GDK_KEY_M:
     1078        return VK_M; //  (4D) M key case 'm': case 'M': return 0x4D;
     1079    case GDK_KEY_n:
     1080    case GDK_KEY_N:
     1081        return VK_N; //  (4E) N key case 'n': case 'N': return 0x4E;
     1082    case GDK_KEY_o:
     1083    case GDK_KEY_O:
     1084        return VK_O; //  (4F) O key case 'o': case 'O': return 0x4F;
     1085    case GDK_KEY_p:
     1086    case GDK_KEY_P:
     1087        return VK_P; //  (50) P key case 'p': case 'P': return 0x50;
     1088    case GDK_KEY_q:
     1089    case GDK_KEY_Q:
     1090        return VK_Q; //  (51) Q key case 'q': case 'Q': return 0x51;
     1091    case GDK_KEY_r:
     1092    case GDK_KEY_R:
     1093        return VK_R; //  (52) R key case 'r': case 'R': return 0x52;
     1094    case GDK_KEY_s:
     1095    case GDK_KEY_S:
     1096        return VK_S; //  (53) S key case 's': case 'S': return 0x53;
     1097    case GDK_KEY_t:
     1098    case GDK_KEY_T:
     1099        return VK_T; //  (54) T key case 't': case 'T': return 0x54;
     1100    case GDK_KEY_u:
     1101    case GDK_KEY_U:
     1102        return VK_U; //  (55) U key case 'u': case 'U': return 0x55;
     1103    case GDK_KEY_v:
     1104    case GDK_KEY_V:
     1105        return VK_V; //  (56) V key case 'v': case 'V': return 0x56;
     1106    case GDK_KEY_w:
     1107    case GDK_KEY_W:
     1108        return VK_W; //  (57) W key case 'w': case 'W': return 0x57;
     1109    case GDK_KEY_x:
     1110    case GDK_KEY_X:
     1111        return VK_X; //  (58) X key case 'x': case 'X': return 0x58;
     1112    case GDK_KEY_y:
     1113    case GDK_KEY_Y:
     1114        return VK_Y; //  (59) Y key case 'y': case 'Y': return 0x59;
     1115    case GDK_KEY_z:
     1116    case GDK_KEY_Z:
     1117        return VK_Z; //  (5A) Z key case 'z': case 'Z': return 0x5A;
     1118    case GDK_KEY_Meta_L:
     1119        return VK_LWIN; // (5B) Left Windows key (Microsoft Natural keyboard)
     1120    case GDK_KEY_Meta_R:
     1121        return VK_RWIN; // (5C) Right Windows key (Natural keyboard)
     1122    case GDK_KEY_Sleep:
     1123        return VK_SLEEP; // (5F) Computer Sleep key
     1124        // VK_SEPARATOR (6C) Separator key
     1125        // VK_SUBTRACT (6D) Subtract key
     1126        // VK_DECIMAL (6E) Decimal key
     1127        // VK_DIVIDE (6F) Divide key
     1128        // handled by key code above
     1129
     1130    case GDK_KEY_Num_Lock:
     1131        return VK_NUMLOCK; // (90) NUM LOCK key
     1132
     1133    case GDK_KEY_Scroll_Lock:
     1134        return VK_SCROLL; // (91) SCROLL LOCK key
     1135
     1136    case GDK_KEY_Shift_L:
     1137        return VK_LSHIFT; // (A0) Left SHIFT key
     1138    case GDK_KEY_Shift_R:
     1139        return VK_RSHIFT; // (A1) Right SHIFT key
     1140    case GDK_KEY_Control_L:
     1141        return VK_LCONTROL; // (A2) Left CONTROL key
     1142    case GDK_KEY_Control_R:
     1143        return VK_RCONTROL; // (A3) Right CONTROL key
     1144    case GDK_KEY_Alt_L:
     1145        return VK_LMENU; // (A4) Left MENU key
     1146    case GDK_KEY_Alt_R:
     1147        return VK_RMENU; // (A5) Right MENU key
     1148
     1149    case GDK_KEY_Back:
     1150        return VK_BROWSER_BACK; // VK_BROWSER_BACK (A6) Windows 2000/XP: Browser Back key
     1151    case GDK_KEY_Forward:
     1152        return VK_BROWSER_FORWARD; // (A7) Windows 2000/XP: Browser Forward key
     1153    case GDK_KEY_Refresh:
     1154        return VK_BROWSER_REFRESH; // (A8) Windows 2000/XP: Browser Refresh key
     1155    case GDK_KEY_Stop:
     1156        return VK_BROWSER_STOP; // (A9) Windows 2000/XP: Browser Stop key
     1157    case GDK_KEY_Search:
     1158        return VK_BROWSER_SEARCH; // (AA) Windows 2000/XP: Browser Search key
     1159    case GDK_KEY_Favorites:
     1160        return VK_BROWSER_FAVORITES; // (AB) Windows 2000/XP: Browser Favorites key
     1161    case GDK_KEY_HomePage:
     1162        return VK_BROWSER_HOME; // (AC) Windows 2000/XP: Browser Start and Home key
     1163    case GDK_KEY_AudioMute:
     1164        return VK_VOLUME_MUTE; // (AD) Windows 2000/XP: Volume Mute key
     1165    case GDK_KEY_AudioLowerVolume:
     1166        return VK_VOLUME_DOWN; // (AE) Windows 2000/XP: Volume Down key
     1167    case GDK_KEY_AudioRaiseVolume:
     1168        return VK_VOLUME_UP; // (AF) Windows 2000/XP: Volume Up key
     1169    case GDK_KEY_AudioNext:
     1170        return VK_MEDIA_NEXT_TRACK; // (B0) Windows 2000/XP: Next Track key
     1171    case GDK_KEY_AudioPrev:
     1172        return VK_MEDIA_PREV_TRACK; // (B1) Windows 2000/XP: Previous Track key
     1173    case GDK_KEY_AudioStop:
     1174        return VK_MEDIA_STOP; // (B2) Windows 2000/XP: Stop Media key
     1175        // VK_MEDIA_PLAY_PAUSE (B3) Windows 2000/XP: Play/Pause Media key
     1176        // VK_LAUNCH_MAIL (B4) Windows 2000/XP: Start Mail key
     1177    case GDK_KEY_AudioMedia:
     1178        return VK_MEDIA_LAUNCH_MEDIA_SELECT; // (B5) Windows 2000/XP: Select Media key
     1179        // VK_LAUNCH_APP1 (B6) Windows 2000/XP: Start Application 1 key
     1180        // VK_LAUNCH_APP2 (B7) Windows 2000/XP: Start Application 2 key
     1181
     1182        // VK_OEM_1 (BA) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ';:' key
     1183    case GDK_KEY_semicolon:
     1184    case GDK_KEY_colon:
     1185        return VK_OEM_1; // case ';': case ':': return 0xBA;
     1186        // VK_OEM_PLUS (BB) Windows 2000/XP: For any country/region, the '+' key
     1187    case GDK_KEY_plus:
     1188    case GDK_KEY_equal:
     1189        return VK_OEM_PLUS; // case '=': case '+': return 0xBB;
     1190        // VK_OEM_COMMA (BC) Windows 2000/XP: For any country/region, the ',' key
     1191    case GDK_KEY_comma:
     1192    case GDK_KEY_less:
     1193        return VK_OEM_COMMA; // case ',': case '<': return 0xBC;
     1194        // VK_OEM_MINUS (BD) Windows 2000/XP: For any country/region, the '-' key
     1195    case GDK_KEY_minus:
     1196    case GDK_KEY_underscore:
     1197        return VK_OEM_MINUS; // case '-': case '_': return 0xBD;
     1198        // VK_OEM_PERIOD (BE) Windows 2000/XP: For any country/region, the '.' key
     1199    case GDK_KEY_period:
     1200    case GDK_KEY_greater:
     1201        return VK_OEM_PERIOD; // case '.': case '>': return 0xBE;
     1202        // VK_OEM_2 (BF) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '/?' key
     1203    case GDK_KEY_slash:
     1204    case GDK_KEY_question:
     1205        return VK_OEM_2; // case '/': case '?': return 0xBF;
     1206        // VK_OEM_3 (C0) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '`~' key
     1207    case GDK_KEY_asciitilde:
     1208    case GDK_KEY_quoteleft:
     1209        return VK_OEM_3; // case '`': case '~': return 0xC0;
     1210        // VK_OEM_4 (DB) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '[{' key
     1211    case GDK_KEY_bracketleft:
     1212    case GDK_KEY_braceleft:
     1213        return VK_OEM_4; // case '[': case '{': return 0xDB;
     1214        // VK_OEM_5 (DC) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '\|' key
     1215    case GDK_KEY_backslash:
     1216    case GDK_KEY_bar:
     1217        return VK_OEM_5; // case '\\': case '|': return 0xDC;
     1218        // VK_OEM_6 (DD) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ']}' key
     1219    case GDK_KEY_bracketright:
     1220    case GDK_KEY_braceright:
     1221        return VK_OEM_6; // case ']': case '}': return 0xDD;
     1222        // VK_OEM_7 (DE) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key
     1223    case GDK_KEY_quoteright:
     1224    case GDK_KEY_quotedbl:
     1225        return VK_OEM_7; // case '\'': case '"': return 0xDE;
     1226        // VK_OEM_8 (DF) Used for miscellaneous characters; it can vary by keyboard.
     1227        // VK_OEM_102 (E2) Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
     1228    case GDK_KEY_AudioRewind:
     1229        return 0xE3; // (E3) Android/GoogleTV: Rewind media key (Windows: VK_ICO_HELP Help key on 1984 Olivetti M24 deluxe keyboard)
     1230    case GDK_KEY_AudioForward:
     1231        return 0xE4; // (E4) Android/GoogleTV: Fast forward media key  (Windows: VK_ICO_00 '00' key on 1984 Olivetti M24 deluxe keyboard)
     1232        // VK_PROCESSKEY (E5) Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
     1233        // VK_PACKET (E7) Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT,SendInput, WM_KEYDOWN, and WM_KEYUP
     1234        // VK_ATTN (F6) Attn key
     1235        // VK_CRSEL (F7) CrSel key
     1236        // VK_EXSEL (F8) ExSel key
     1237        // VK_EREOF (F9) Erase EOF key
     1238    case GDK_KEY_AudioPlay:
     1239        return VK_PLAY; // VK_PLAY (FA) Play key
     1240        // VK_ZOOM (FB) Zoom key
     1241        // VK_NONAME (FC) Reserved for future use
     1242        // VK_PA1 (FD) PA1 key
     1243        // VK_OEM_CLEAR (FE) Clear key
     1244    case GDK_KEY_F1:
     1245    case GDK_KEY_F2:
     1246    case GDK_KEY_F3:
     1247    case GDK_KEY_F4:
     1248    case GDK_KEY_F5:
     1249    case GDK_KEY_F6:
     1250    case GDK_KEY_F7:
     1251    case GDK_KEY_F8:
     1252    case GDK_KEY_F9:
     1253    case GDK_KEY_F10:
     1254    case GDK_KEY_F11:
     1255    case GDK_KEY_F12:
     1256    case GDK_KEY_F13:
     1257    case GDK_KEY_F14:
     1258    case GDK_KEY_F15:
     1259    case GDK_KEY_F16:
     1260    case GDK_KEY_F17:
     1261    case GDK_KEY_F18:
     1262    case GDK_KEY_F19:
     1263    case GDK_KEY_F20:
     1264    case GDK_KEY_F21:
     1265    case GDK_KEY_F22:
     1266    case GDK_KEY_F23:
     1267    case GDK_KEY_F24:
     1268        return VK_F1 + (keycode - GDK_KEY_F1);
     1269    case GDK_KEY_VoidSymbol:
     1270        return VK_PROCESSKEY;
     1271
     1272    // TV keycodes from DASE / OCAP / CE-HTML standards.
     1273    case GDK_KEY_Red:
     1274        return 0x193; // General purpose color-coded media function key, as index 0 (red)
     1275    case GDK_KEY_Green:
     1276        return 0x194; // General purpose color-coded media function key, as index 1 (green)
     1277    case GDK_KEY_Yellow:
     1278        return 0x195; // General purpose color-coded media function key, as index 2 (yellow)
     1279    case GDK_KEY_Blue:
     1280        return 0x196; // General purpose color-coded media function key, as index 3 (blue)
     1281    case GDK_KEY_PowerOff:
     1282        return 0x199; // Toggle power state
     1283    case GDK_KEY_AudioRecord:
     1284        return 0x1A0; // Initiate or resume recording of currently selected media
     1285    case GDK_KEY_Display:
     1286        return 0x1BC; // Swap video sources
     1287    case GDK_KEY_Subtitle:
     1288        return 0x1CC; // Toggle display of subtitles, if available
     1289    case GDK_KEY_Video:
     1290        return 0x26F; // Access on-demand content or programs
     1291    default:
     1292        return 0;
    12931293    }
    12941294
     
    12981298{
    12991299    switch (val) {
    1300         case GDK_ISO_Enter:
    1301         case GDK_KP_Enter:
    1302         case GDK_Return:
    1303             return String("\r");
    1304         case GDK_BackSpace:
    1305             return String("\x8");
    1306         case GDK_Tab:
    1307             return String("\t");
    1308         default:
    1309             gunichar c = gdk_keyval_to_unicode(val);
    1310             glong nwc;
    1311             gunichar2* uchar16 = g_ucs4_to_utf16(&c, 1, 0, &nwc, 0);
    1312 
    1313             String retVal;
    1314             if (uchar16)
    1315                 retVal = String((UChar*)uchar16, nwc);
    1316             else
    1317                 retVal = String();
    1318 
    1319             g_free(uchar16);
    1320 
    1321             return retVal;
     1300    case GDK_KEY_ISO_Enter:
     1301    case GDK_KEY_KP_Enter:
     1302    case GDK_KEY_Return:
     1303        return String("\r");
     1304    case GDK_KEY_BackSpace:
     1305        return String("\x8");
     1306    case GDK_KEY_Tab:
     1307        return String("\t");
     1308    default:
     1309        gunichar c = gdk_keyval_to_unicode(val);
     1310        glong nwc;
     1311        gunichar2* uchar16 = g_ucs4_to_utf16(&c, 1, 0, &nwc, 0);
     1312
     1313        String retVal;
     1314        if (uchar16)
     1315            retVal = String((UChar*)uchar16, nwc);
     1316        else
     1317            retVal = String();
     1318
     1319        g_free(uchar16);
     1320
     1321        return retVal;
    13221322    }
    13231323}
     
    13551355    , m_handledByInputMethod(false)
    13561356    , m_autoRepeat(false)
    1357     , m_isKeypad(event->keyval >= GDK_KP_Space && event->keyval <= GDK_KP_9)
     1357    , m_isKeypad(event->keyval >= GDK_KEY_KP_Space && event->keyval <= GDK_KEY_KP_9)
    13581358    , m_isSystemKey(false)
    13591359    , m_gdkEventKey(event)
Note: See TracChangeset for help on using the changeset viewer.