rendered paste body186a187
> static BOOL useEvdevKeymap = FALSE;
1153a1155,1160
> #ifdef RT_OS_LINUX
> else if (strcmp(argv[curArg], "-evdevkeymap") == 0)
> {
> useEvdevKeymap = TRUE;
> }
> #endif /* RT_OS_LINUX */
2842,2856c2849,2851
< if (keycode < 9)
< {
< keycode = 0;
< }
< else if (keycode < 97)
< {
< // just an offset (Xorg MIN_KEYCODE)
< keycode -= 8;
< }
< else if (keycode < 158)
< {
< // apply conversion table
< keycode = x_keycode_to_pc_keycode[keycode - 97];
< }
< else if (keycode == 208)
---
> // workaround for SDL keyboard translation issues on EVDEV
> // keycodes > 0x100 are sent as 0xe0 keycode
> static const uint16_t evdev_keycode_to_pc_keycode[61] =
2858,2861c2853,2919
< // Japanese Hiragana to Katakana
< keycode = 0x70;
< }
< else if (keycode == 211)
---
> 0x0, /* 97 EVDEV - RO */
> //Japanese Keys
> 0x0, /* 98 EVDEV - KATA */
> 0x0, /* 99 EVDEV - HIRA */
> 0x0, /* 100 EVDEV - HENK */
> 0x0, /* 101 EVDEV - HKTG */
> 0x0, /* 102 EVDEV - MUHE */
> 0x0, /* 103 EVDEV - JPCM */
> //"Normal" Keys
> 0x1c|0x100, /* 104 EVDEV - KPEN */
> 0x1d|0x100, /* 105 EVDEV - RCTL */
> 0x35|0x100, /* 106 EVDEV - KPDV */
> 0x37|0x100, /* 107 EVDEV - PRSC */
> 0x38|0x100, /* 108 EVDEV - RALT */
> 0x0, /* 109 EVDEV - LNFD */
> 0x47|0x100, /* 110 EVDEV - HOME */
> 0x48|0x100, /* 111 EVDEV - UP */
> 0x49|0x100, /* 112 EVDEV - PGUP */
> 0x4b|0x100, /* 113 EVDEV - LEFT */
> 0x4d|0x100, /* 114 EVDEV - RGHT */
> 0x4f|0x100, /* 115 EVDEV - END */
> 0x50|0x100, /* 116 EVDEV - DOWN */
> 0x51|0x100, /* 117 EVDEV - PGDN */
> 0x52|0x100, /* 118 EVDEV - INS */
> 0x53|0x100, /* 119 EVDEV - DELE */
> 0x0, /* 120 EVDEV - I120 */
> 0x0, /* 121 EVDEV - MUTE */
> 0x0, /* 122 EVDEV - VOL- */
> 0x0, /* 123 EVDEV - VOL+ */
> 0x0, /* 124 EVDEV - POWR */
> 0x0, /* 125 EVDEV - KPEQ */
> 0x0, /* 126 EVDEV - I126 */
> 0x0, /* 127 EVDEV - PAUS */
> 0x0, /* 128 EVDEV - ???? */
> 0x0, /* 129 EVDEV - I129 */
> 0x0, /* 130 EVDEV - HNGL */
> 0x0, /* 131 EVDEV - HJCV */
> 0x0, /* 132 EVDEV - AE13 */
> 0x5b|0x100, /* 133 EVDEV - LWIN */
> 0x5c|0x100, /* 134 EVDEV - RWIN */
> 0x5d|0x100, /* 135 EVDEV - MENU */
> //Solaris Stuff
> 0x0, /* 136 EVDEV - STOP */
> 0x0, /* 137 EVDEV - AGAI */
> 0x0, /* 138 EVDEV - PROP */
> 0x0, /* 139 EVDEV - UNDO */
> 0x0, /* 140 EVDEV - FRNT */
> 0x0, /* 141 EVDEV - COPY */
> 0x0, /* 142 EVDEV - OPEN */
> 0x0, /* 143 EVDEV - PAST */
> 0x0, /* 144 EVDEV - FIND */
> 0x0, /* 145 EVDEV - CUT */
> 0x0, /* 146 EVDEV - HELP */
> //Extended Keys
> 0x0, /* 147 EVDEV - I147 */
> 0x0, /* 148 EVDEV - I148 */
> 0x0, /* 149 EVDEV - I149 */
> 0x0, /* 150 EVDEV - I150 */
> 0x0, /* 151 EVDEV - I151 */
> 0x0, /* 152 EVDEV - I152 */
> 0x0, /* 153 EVDEV - I153 */
> 0x0, /* 154 EVDEV - I154 */
> 0x0, /* 155 EVDEV - I156 */
> 0x0, /* 156 EVDEV - I157 */
> 0x0, /* 157 EVDEV - I158 */
> };
> if(useEvdevKeymap)
2863,2864c2921,2948
< // Japanese backslash/underscore and Brazilian backslash/question mark
< keycode = 0x73;
---
> if (keycode < 9)
> {
> keycode = 0;
> }
> else if (keycode < 97)
> {
> // just an offset (Xorg MIN_KEYCODE)
> keycode -= 8;
> }
> else if (keycode < 158)
> {
> // apply EVDEV conversion table
> keycode = evdev_keycode_to_pc_keycode[keycode - 97];
> }
> else if (keycode == 208)
> {
> // Japanese Hiragana to Katakana
> keycode = 0x70;
> }
> else if (keycode == 211)
> {
> // Japanese backslash/underscore and Brazilian backslash/question mark
> keycode = 0x73;
> }
> else
> {
> keycode = 0;
> }
2868c2952,2979
< keycode = 0;
---
> if (keycode < 9)
> {
> keycode = 0;
> }
> else if (keycode < 97)
> {
> // just an offset (Xorg MIN_KEYCODE)
> keycode -= 8;
> }
> else if (keycode < 158)
> {
> // apply conversion table
> keycode = x_keycode_to_pc_keycode[keycode - 97];
> }
> else if (keycode == 208)
> {
> // Japanese Hiragana to Katakana
> keycode = 0x70;
> }
> else if (keycode == 211)
> {
> // Japanese backslash/underscore and Brazilian backslash/question mark
> keycode = 0x73;
> }
> else
> {
> keycode = 0;
> }
2870d2980
<