|
@@ -35,195 +35,201 @@
|
|
|
#include "../../events/SDL_events_c.h"
|
|
|
|
|
|
#ifdef __NetBSD__
|
|
|
-#define KS_GROUP_Ascii KS_GROUP_Plain
|
|
|
+#define KS_GROUP_Ascii KS_GROUP_Plain
|
|
|
#define KS_Cmd_ScrollBack KS_Cmd_ScrollFastUp
|
|
|
-#define KS_Cmd_ScrollFwd KS_Cmd_ScrollFastDown
|
|
|
+#define KS_Cmd_ScrollFwd KS_Cmd_ScrollFastDown
|
|
|
#endif
|
|
|
|
|
|
-#define RETIFIOCTLERR(x) if (x == -1) { free(input); input = NULL; return NULL;}
|
|
|
+#define RETIFIOCTLERR(x) \
|
|
|
+ if (x == -1) { \
|
|
|
+ free(input); \
|
|
|
+ input = NULL; \
|
|
|
+ return NULL; \
|
|
|
+ }
|
|
|
|
|
|
typedef struct SDL_WSCONS_mouse_input_data SDL_WSCONS_mouse_input_data;
|
|
|
-extern SDL_WSCONS_mouse_input_data* SDL_WSCONS_Init_Mouse();
|
|
|
-extern void updateMouse(SDL_WSCONS_mouse_input_data* input);
|
|
|
-extern void SDL_WSCONS_Quit_Mouse(SDL_WSCONS_mouse_input_data* input);
|
|
|
+extern SDL_WSCONS_mouse_input_data *SDL_WSCONS_Init_Mouse();
|
|
|
+extern void updateMouse(SDL_WSCONS_mouse_input_data *input);
|
|
|
+extern void SDL_WSCONS_Quit_Mouse(SDL_WSCONS_mouse_input_data *input);
|
|
|
|
|
|
/* Conversion table courtesy of /usr/src/sys/dev/wscons/wskbdutil.c */
|
|
|
static const unsigned char latin1_to_upper[256] = {
|
|
|
/* 0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 1 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 1 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 2 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 2 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 3 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 3 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 4 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 4 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */
|
|
|
- 0x00, 'A', 'B', 'C', 'D', 'E', 'F', 'G', /* 6 */
|
|
|
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', /* 6 */
|
|
|
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', /* 7 */
|
|
|
- 'X', 'Y', 'Z', 0x00, 0x00, 0x00, 0x00, 0x00, /* 7 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 9 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 9 */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* a */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* a */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* b */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* b */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* c */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* c */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* d */
|
|
|
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* d */
|
|
|
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* e */
|
|
|
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* e */
|
|
|
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* f */
|
|
|
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x00, /* f */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 1 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 1 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 2 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 2 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 3 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 3 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 4 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 4 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */
|
|
|
+ 0x00, 'A', 'B', 'C', 'D', 'E', 'F', 'G', /* 6 */
|
|
|
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', /* 6 */
|
|
|
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', /* 7 */
|
|
|
+ 'X', 'Y', 'Z', 0x00, 0x00, 0x00, 0x00, 0x00, /* 7 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 9 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 9 */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* a */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* a */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* b */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* b */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* c */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* c */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* d */
|
|
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* d */
|
|
|
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* e */
|
|
|
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* e */
|
|
|
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* f */
|
|
|
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x00, /* f */
|
|
|
};
|
|
|
|
|
|
/* Compose table courtesy of /usr/src/sys/dev/wscons/wskbdutil.c */
|
|
|
-static struct SDL_wscons_compose_tab_s {
|
|
|
+static struct SDL_wscons_compose_tab_s
|
|
|
+{
|
|
|
keysym_t elem[2];
|
|
|
keysym_t result;
|
|
|
} compose_tab[] = {
|
|
|
- { { KS_plus, KS_plus }, KS_numbersign },
|
|
|
- { { KS_a, KS_a }, KS_at },
|
|
|
- { { KS_parenleft, KS_parenleft }, KS_bracketleft },
|
|
|
- { { KS_slash, KS_slash }, KS_backslash },
|
|
|
- { { KS_parenright, KS_parenright }, KS_bracketright },
|
|
|
- { { KS_parenleft, KS_minus }, KS_braceleft },
|
|
|
- { { KS_slash, KS_minus }, KS_bar },
|
|
|
- { { KS_parenright, KS_minus }, KS_braceright },
|
|
|
- { { KS_exclam, KS_exclam }, KS_exclamdown },
|
|
|
- { { KS_c, KS_slash }, KS_cent },
|
|
|
- { { KS_l, KS_minus }, KS_sterling },
|
|
|
- { { KS_y, KS_minus }, KS_yen },
|
|
|
- { { KS_s, KS_o }, KS_section },
|
|
|
- { { KS_x, KS_o }, KS_currency },
|
|
|
- { { KS_c, KS_o }, KS_copyright },
|
|
|
- { { KS_less, KS_less }, KS_guillemotleft },
|
|
|
- { { KS_greater, KS_greater }, KS_guillemotright },
|
|
|
- { { KS_question, KS_question }, KS_questiondown },
|
|
|
- { { KS_dead_acute, KS_space }, KS_apostrophe },
|
|
|
- { { KS_dead_grave, KS_space }, KS_grave },
|
|
|
- { { KS_dead_tilde, KS_space }, KS_asciitilde },
|
|
|
- { { KS_dead_circumflex, KS_space }, KS_asciicircum },
|
|
|
- { { KS_dead_diaeresis, KS_space }, KS_quotedbl },
|
|
|
- { { KS_dead_cedilla, KS_space }, KS_comma },
|
|
|
- { { KS_dead_circumflex, KS_A }, KS_Acircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_A }, KS_Adiaeresis },
|
|
|
- { { KS_dead_grave, KS_A }, KS_Agrave },
|
|
|
- { { KS_dead_abovering, KS_A }, KS_Aring },
|
|
|
- { { KS_dead_tilde, KS_A }, KS_Atilde },
|
|
|
- { { KS_dead_cedilla, KS_C }, KS_Ccedilla },
|
|
|
- { { KS_dead_acute, KS_E }, KS_Eacute },
|
|
|
- { { KS_dead_circumflex, KS_E }, KS_Ecircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_E }, KS_Ediaeresis },
|
|
|
- { { KS_dead_grave, KS_E }, KS_Egrave },
|
|
|
- { { KS_dead_acute, KS_I }, KS_Iacute },
|
|
|
- { { KS_dead_circumflex, KS_I }, KS_Icircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_I }, KS_Idiaeresis },
|
|
|
- { { KS_dead_grave, KS_I }, KS_Igrave },
|
|
|
- { { KS_dead_tilde, KS_N }, KS_Ntilde },
|
|
|
- { { KS_dead_acute, KS_O }, KS_Oacute },
|
|
|
- { { KS_dead_circumflex, KS_O }, KS_Ocircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_O }, KS_Odiaeresis },
|
|
|
- { { KS_dead_grave, KS_O }, KS_Ograve },
|
|
|
- { { KS_dead_tilde, KS_O }, KS_Otilde },
|
|
|
- { { KS_dead_acute, KS_U }, KS_Uacute },
|
|
|
- { { KS_dead_circumflex, KS_U }, KS_Ucircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_U }, KS_Udiaeresis },
|
|
|
- { { KS_dead_grave, KS_U }, KS_Ugrave },
|
|
|
- { { KS_dead_acute, KS_Y }, KS_Yacute },
|
|
|
- { { KS_dead_acute, KS_a }, KS_aacute },
|
|
|
- { { KS_dead_circumflex, KS_a }, KS_acircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_a }, KS_adiaeresis },
|
|
|
- { { KS_dead_grave, KS_a }, KS_agrave },
|
|
|
- { { KS_dead_abovering, KS_a }, KS_aring },
|
|
|
- { { KS_dead_tilde, KS_a }, KS_atilde },
|
|
|
- { { KS_dead_cedilla, KS_c }, KS_ccedilla },
|
|
|
- { { KS_dead_acute, KS_e }, KS_eacute },
|
|
|
- { { KS_dead_circumflex, KS_e }, KS_ecircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_e }, KS_ediaeresis },
|
|
|
- { { KS_dead_grave, KS_e }, KS_egrave },
|
|
|
- { { KS_dead_acute, KS_i }, KS_iacute },
|
|
|
- { { KS_dead_circumflex, KS_i }, KS_icircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_i }, KS_idiaeresis },
|
|
|
- { { KS_dead_grave, KS_i }, KS_igrave },
|
|
|
- { { KS_dead_tilde, KS_n }, KS_ntilde },
|
|
|
- { { KS_dead_acute, KS_o }, KS_oacute },
|
|
|
- { { KS_dead_circumflex, KS_o }, KS_ocircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_o }, KS_odiaeresis },
|
|
|
- { { KS_dead_grave, KS_o }, KS_ograve },
|
|
|
- { { KS_dead_tilde, KS_o }, KS_otilde },
|
|
|
- { { KS_dead_acute, KS_u }, KS_uacute },
|
|
|
- { { KS_dead_circumflex, KS_u }, KS_ucircumflex },
|
|
|
- { { KS_dead_diaeresis, KS_u }, KS_udiaeresis },
|
|
|
- { { KS_dead_grave, KS_u }, KS_ugrave },
|
|
|
- { { KS_dead_acute, KS_y }, KS_yacute },
|
|
|
- { { KS_dead_diaeresis, KS_y }, KS_ydiaeresis },
|
|
|
- { { KS_quotedbl, KS_A }, KS_Adiaeresis },
|
|
|
- { { KS_quotedbl, KS_E }, KS_Ediaeresis },
|
|
|
- { { KS_quotedbl, KS_I }, KS_Idiaeresis },
|
|
|
- { { KS_quotedbl, KS_O }, KS_Odiaeresis },
|
|
|
- { { KS_quotedbl, KS_U }, KS_Udiaeresis },
|
|
|
- { { KS_quotedbl, KS_a }, KS_adiaeresis },
|
|
|
- { { KS_quotedbl, KS_e }, KS_ediaeresis },
|
|
|
- { { KS_quotedbl, KS_i }, KS_idiaeresis },
|
|
|
- { { KS_quotedbl, KS_o }, KS_odiaeresis },
|
|
|
- { { KS_quotedbl, KS_u }, KS_udiaeresis },
|
|
|
- { { KS_quotedbl, KS_y }, KS_ydiaeresis },
|
|
|
- { { KS_acute, KS_A }, KS_Aacute },
|
|
|
- { { KS_asciicircum, KS_A }, KS_Acircumflex },
|
|
|
- { { KS_grave, KS_A }, KS_Agrave },
|
|
|
- { { KS_asterisk, KS_A }, KS_Aring },
|
|
|
- { { KS_asciitilde, KS_A }, KS_Atilde },
|
|
|
- { { KS_cedilla, KS_C }, KS_Ccedilla },
|
|
|
- { { KS_acute, KS_E }, KS_Eacute },
|
|
|
- { { KS_asciicircum, KS_E }, KS_Ecircumflex },
|
|
|
- { { KS_grave, KS_E }, KS_Egrave },
|
|
|
- { { KS_acute, KS_I }, KS_Iacute },
|
|
|
- { { KS_asciicircum, KS_I }, KS_Icircumflex },
|
|
|
- { { KS_grave, KS_I }, KS_Igrave },
|
|
|
- { { KS_asciitilde, KS_N }, KS_Ntilde },
|
|
|
- { { KS_acute, KS_O }, KS_Oacute },
|
|
|
- { { KS_asciicircum, KS_O }, KS_Ocircumflex },
|
|
|
- { { KS_grave, KS_O }, KS_Ograve },
|
|
|
- { { KS_asciitilde, KS_O }, KS_Otilde },
|
|
|
- { { KS_acute, KS_U }, KS_Uacute },
|
|
|
- { { KS_asciicircum, KS_U }, KS_Ucircumflex },
|
|
|
- { { KS_grave, KS_U }, KS_Ugrave },
|
|
|
- { { KS_acute, KS_Y }, KS_Yacute },
|
|
|
- { { KS_acute, KS_a }, KS_aacute },
|
|
|
- { { KS_asciicircum, KS_a }, KS_acircumflex },
|
|
|
- { { KS_grave, KS_a }, KS_agrave },
|
|
|
- { { KS_asterisk, KS_a }, KS_aring },
|
|
|
- { { KS_asciitilde, KS_a }, KS_atilde },
|
|
|
- { { KS_cedilla, KS_c }, KS_ccedilla },
|
|
|
- { { KS_acute, KS_e }, KS_eacute },
|
|
|
- { { KS_asciicircum, KS_e }, KS_ecircumflex },
|
|
|
- { { KS_grave, KS_e }, KS_egrave },
|
|
|
- { { KS_acute, KS_i }, KS_iacute },
|
|
|
- { { KS_asciicircum, KS_i }, KS_icircumflex },
|
|
|
- { { KS_grave, KS_i }, KS_igrave },
|
|
|
- { { KS_asciitilde, KS_n }, KS_ntilde },
|
|
|
- { { KS_acute, KS_o }, KS_oacute },
|
|
|
- { { KS_asciicircum, KS_o }, KS_ocircumflex },
|
|
|
- { { KS_grave, KS_o }, KS_ograve },
|
|
|
- { { KS_asciitilde, KS_o }, KS_otilde },
|
|
|
- { { KS_acute, KS_u }, KS_uacute },
|
|
|
- { { KS_asciicircum, KS_u }, KS_ucircumflex },
|
|
|
- { { KS_grave, KS_u }, KS_ugrave },
|
|
|
- { { KS_acute, KS_y }, KS_yacute },
|
|
|
+ { { KS_plus, KS_plus }, KS_numbersign },
|
|
|
+ { { KS_a, KS_a }, KS_at },
|
|
|
+ { { KS_parenleft, KS_parenleft }, KS_bracketleft },
|
|
|
+ { { KS_slash, KS_slash }, KS_backslash },
|
|
|
+ { { KS_parenright, KS_parenright }, KS_bracketright },
|
|
|
+ { { KS_parenleft, KS_minus }, KS_braceleft },
|
|
|
+ { { KS_slash, KS_minus }, KS_bar },
|
|
|
+ { { KS_parenright, KS_minus }, KS_braceright },
|
|
|
+ { { KS_exclam, KS_exclam }, KS_exclamdown },
|
|
|
+ { { KS_c, KS_slash }, KS_cent },
|
|
|
+ { { KS_l, KS_minus }, KS_sterling },
|
|
|
+ { { KS_y, KS_minus }, KS_yen },
|
|
|
+ { { KS_s, KS_o }, KS_section },
|
|
|
+ { { KS_x, KS_o }, KS_currency },
|
|
|
+ { { KS_c, KS_o }, KS_copyright },
|
|
|
+ { { KS_less, KS_less }, KS_guillemotleft },
|
|
|
+ { { KS_greater, KS_greater }, KS_guillemotright },
|
|
|
+ { { KS_question, KS_question }, KS_questiondown },
|
|
|
+ { { KS_dead_acute, KS_space }, KS_apostrophe },
|
|
|
+ { { KS_dead_grave, KS_space }, KS_grave },
|
|
|
+ { { KS_dead_tilde, KS_space }, KS_asciitilde },
|
|
|
+ { { KS_dead_circumflex, KS_space }, KS_asciicircum },
|
|
|
+ { { KS_dead_diaeresis, KS_space }, KS_quotedbl },
|
|
|
+ { { KS_dead_cedilla, KS_space }, KS_comma },
|
|
|
+ { { KS_dead_circumflex, KS_A }, KS_Acircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_A }, KS_Adiaeresis },
|
|
|
+ { { KS_dead_grave, KS_A }, KS_Agrave },
|
|
|
+ { { KS_dead_abovering, KS_A }, KS_Aring },
|
|
|
+ { { KS_dead_tilde, KS_A }, KS_Atilde },
|
|
|
+ { { KS_dead_cedilla, KS_C }, KS_Ccedilla },
|
|
|
+ { { KS_dead_acute, KS_E }, KS_Eacute },
|
|
|
+ { { KS_dead_circumflex, KS_E }, KS_Ecircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_E }, KS_Ediaeresis },
|
|
|
+ { { KS_dead_grave, KS_E }, KS_Egrave },
|
|
|
+ { { KS_dead_acute, KS_I }, KS_Iacute },
|
|
|
+ { { KS_dead_circumflex, KS_I }, KS_Icircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_I }, KS_Idiaeresis },
|
|
|
+ { { KS_dead_grave, KS_I }, KS_Igrave },
|
|
|
+ { { KS_dead_tilde, KS_N }, KS_Ntilde },
|
|
|
+ { { KS_dead_acute, KS_O }, KS_Oacute },
|
|
|
+ { { KS_dead_circumflex, KS_O }, KS_Ocircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_O }, KS_Odiaeresis },
|
|
|
+ { { KS_dead_grave, KS_O }, KS_Ograve },
|
|
|
+ { { KS_dead_tilde, KS_O }, KS_Otilde },
|
|
|
+ { { KS_dead_acute, KS_U }, KS_Uacute },
|
|
|
+ { { KS_dead_circumflex, KS_U }, KS_Ucircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_U }, KS_Udiaeresis },
|
|
|
+ { { KS_dead_grave, KS_U }, KS_Ugrave },
|
|
|
+ { { KS_dead_acute, KS_Y }, KS_Yacute },
|
|
|
+ { { KS_dead_acute, KS_a }, KS_aacute },
|
|
|
+ { { KS_dead_circumflex, KS_a }, KS_acircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_a }, KS_adiaeresis },
|
|
|
+ { { KS_dead_grave, KS_a }, KS_agrave },
|
|
|
+ { { KS_dead_abovering, KS_a }, KS_aring },
|
|
|
+ { { KS_dead_tilde, KS_a }, KS_atilde },
|
|
|
+ { { KS_dead_cedilla, KS_c }, KS_ccedilla },
|
|
|
+ { { KS_dead_acute, KS_e }, KS_eacute },
|
|
|
+ { { KS_dead_circumflex, KS_e }, KS_ecircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_e }, KS_ediaeresis },
|
|
|
+ { { KS_dead_grave, KS_e }, KS_egrave },
|
|
|
+ { { KS_dead_acute, KS_i }, KS_iacute },
|
|
|
+ { { KS_dead_circumflex, KS_i }, KS_icircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_i }, KS_idiaeresis },
|
|
|
+ { { KS_dead_grave, KS_i }, KS_igrave },
|
|
|
+ { { KS_dead_tilde, KS_n }, KS_ntilde },
|
|
|
+ { { KS_dead_acute, KS_o }, KS_oacute },
|
|
|
+ { { KS_dead_circumflex, KS_o }, KS_ocircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_o }, KS_odiaeresis },
|
|
|
+ { { KS_dead_grave, KS_o }, KS_ograve },
|
|
|
+ { { KS_dead_tilde, KS_o }, KS_otilde },
|
|
|
+ { { KS_dead_acute, KS_u }, KS_uacute },
|
|
|
+ { { KS_dead_circumflex, KS_u }, KS_ucircumflex },
|
|
|
+ { { KS_dead_diaeresis, KS_u }, KS_udiaeresis },
|
|
|
+ { { KS_dead_grave, KS_u }, KS_ugrave },
|
|
|
+ { { KS_dead_acute, KS_y }, KS_yacute },
|
|
|
+ { { KS_dead_diaeresis, KS_y }, KS_ydiaeresis },
|
|
|
+ { { KS_quotedbl, KS_A }, KS_Adiaeresis },
|
|
|
+ { { KS_quotedbl, KS_E }, KS_Ediaeresis },
|
|
|
+ { { KS_quotedbl, KS_I }, KS_Idiaeresis },
|
|
|
+ { { KS_quotedbl, KS_O }, KS_Odiaeresis },
|
|
|
+ { { KS_quotedbl, KS_U }, KS_Udiaeresis },
|
|
|
+ { { KS_quotedbl, KS_a }, KS_adiaeresis },
|
|
|
+ { { KS_quotedbl, KS_e }, KS_ediaeresis },
|
|
|
+ { { KS_quotedbl, KS_i }, KS_idiaeresis },
|
|
|
+ { { KS_quotedbl, KS_o }, KS_odiaeresis },
|
|
|
+ { { KS_quotedbl, KS_u }, KS_udiaeresis },
|
|
|
+ { { KS_quotedbl, KS_y }, KS_ydiaeresis },
|
|
|
+ { { KS_acute, KS_A }, KS_Aacute },
|
|
|
+ { { KS_asciicircum, KS_A }, KS_Acircumflex },
|
|
|
+ { { KS_grave, KS_A }, KS_Agrave },
|
|
|
+ { { KS_asterisk, KS_A }, KS_Aring },
|
|
|
+ { { KS_asciitilde, KS_A }, KS_Atilde },
|
|
|
+ { { KS_cedilla, KS_C }, KS_Ccedilla },
|
|
|
+ { { KS_acute, KS_E }, KS_Eacute },
|
|
|
+ { { KS_asciicircum, KS_E }, KS_Ecircumflex },
|
|
|
+ { { KS_grave, KS_E }, KS_Egrave },
|
|
|
+ { { KS_acute, KS_I }, KS_Iacute },
|
|
|
+ { { KS_asciicircum, KS_I }, KS_Icircumflex },
|
|
|
+ { { KS_grave, KS_I }, KS_Igrave },
|
|
|
+ { { KS_asciitilde, KS_N }, KS_Ntilde },
|
|
|
+ { { KS_acute, KS_O }, KS_Oacute },
|
|
|
+ { { KS_asciicircum, KS_O }, KS_Ocircumflex },
|
|
|
+ { { KS_grave, KS_O }, KS_Ograve },
|
|
|
+ { { KS_asciitilde, KS_O }, KS_Otilde },
|
|
|
+ { { KS_acute, KS_U }, KS_Uacute },
|
|
|
+ { { KS_asciicircum, KS_U }, KS_Ucircumflex },
|
|
|
+ { { KS_grave, KS_U }, KS_Ugrave },
|
|
|
+ { { KS_acute, KS_Y }, KS_Yacute },
|
|
|
+ { { KS_acute, KS_a }, KS_aacute },
|
|
|
+ { { KS_asciicircum, KS_a }, KS_acircumflex },
|
|
|
+ { { KS_grave, KS_a }, KS_agrave },
|
|
|
+ { { KS_asterisk, KS_a }, KS_aring },
|
|
|
+ { { KS_asciitilde, KS_a }, KS_atilde },
|
|
|
+ { { KS_cedilla, KS_c }, KS_ccedilla },
|
|
|
+ { { KS_acute, KS_e }, KS_eacute },
|
|
|
+ { { KS_asciicircum, KS_e }, KS_ecircumflex },
|
|
|
+ { { KS_grave, KS_e }, KS_egrave },
|
|
|
+ { { KS_acute, KS_i }, KS_iacute },
|
|
|
+ { { KS_asciicircum, KS_i }, KS_icircumflex },
|
|
|
+ { { KS_grave, KS_i }, KS_igrave },
|
|
|
+ { { KS_asciitilde, KS_n }, KS_ntilde },
|
|
|
+ { { KS_acute, KS_o }, KS_oacute },
|
|
|
+ { { KS_asciicircum, KS_o }, KS_ocircumflex },
|
|
|
+ { { KS_grave, KS_o }, KS_ograve },
|
|
|
+ { { KS_asciitilde, KS_o }, KS_otilde },
|
|
|
+ { { KS_acute, KS_u }, KS_uacute },
|
|
|
+ { { KS_asciicircum, KS_u }, KS_ucircumflex },
|
|
|
+ { { KS_grave, KS_u }, KS_ugrave },
|
|
|
+ { { KS_acute, KS_y }, KS_yacute },
|
|
|
#ifndef __NetBSD__
|
|
|
- { { KS_dead_caron, KS_space }, KS_L2_caron },
|
|
|
- { { KS_dead_caron, KS_S }, KS_L2_Scaron },
|
|
|
- { { KS_dead_caron, KS_Z }, KS_L2_Zcaron },
|
|
|
- { { KS_dead_caron, KS_s }, KS_L2_scaron },
|
|
|
- { { KS_dead_caron, KS_z }, KS_L2_zcaron }
|
|
|
+ { { KS_dead_caron, KS_space }, KS_L2_caron },
|
|
|
+ { { KS_dead_caron, KS_S }, KS_L2_Scaron },
|
|
|
+ { { KS_dead_caron, KS_Z }, KS_L2_Zcaron },
|
|
|
+ { { KS_dead_caron, KS_s }, KS_L2_scaron },
|
|
|
+ { { KS_dead_caron, KS_z }, KS_L2_zcaron }
|
|
|
#endif
|
|
|
};
|
|
|
|
|
@@ -239,146 +245,148 @@ static keysym_t ksym_upcase(keysym_t ksym)
|
|
|
|
|
|
return ksym;
|
|
|
}
|
|
|
-static struct wscons_keycode_to_SDL {
|
|
|
+static struct wscons_keycode_to_SDL
|
|
|
+{
|
|
|
keysym_t sourcekey;
|
|
|
SDL_Scancode targetKey;
|
|
|
} conversion_table[] = {
|
|
|
- {KS_Menu, SDL_SCANCODE_APPLICATION},
|
|
|
- {KS_Up, SDL_SCANCODE_UP},
|
|
|
- {KS_Down, SDL_SCANCODE_DOWN},
|
|
|
- {KS_Left, SDL_SCANCODE_LEFT},
|
|
|
- {KS_Right, SDL_SCANCODE_RIGHT},
|
|
|
- {KS_Hold_Screen, SDL_SCANCODE_SCROLLLOCK},
|
|
|
- {KS_Num_Lock, SDL_SCANCODE_NUMLOCKCLEAR},
|
|
|
- {KS_Caps_Lock, SDL_SCANCODE_CAPSLOCK},
|
|
|
- {KS_BackSpace, SDL_SCANCODE_BACKSPACE},
|
|
|
- {KS_space, SDL_SCANCODE_SPACE},
|
|
|
- {KS_Delete, SDL_SCANCODE_BACKSPACE},
|
|
|
- {KS_Home, SDL_SCANCODE_HOME},
|
|
|
- {KS_End, SDL_SCANCODE_END},
|
|
|
- {KS_Pause, SDL_SCANCODE_PAUSE},
|
|
|
- {KS_Print_Screen, SDL_SCANCODE_PRINTSCREEN},
|
|
|
- {KS_Insert, SDL_SCANCODE_INSERT},
|
|
|
- {KS_Escape, SDL_SCANCODE_ESCAPE},
|
|
|
- {KS_Return, SDL_SCANCODE_RETURN},
|
|
|
- {KS_Linefeed, SDL_SCANCODE_RETURN},
|
|
|
- {KS_KP_Delete, SDL_SCANCODE_DELETE},
|
|
|
- {KS_KP_Insert, SDL_SCANCODE_INSERT},
|
|
|
- {KS_Control_L, SDL_SCANCODE_LCTRL},
|
|
|
- {KS_Control_R, SDL_SCANCODE_RCTRL},
|
|
|
- {KS_Shift_L, SDL_SCANCODE_LSHIFT},
|
|
|
- {KS_Shift_R, SDL_SCANCODE_RSHIFT},
|
|
|
- {KS_Alt_L, SDL_SCANCODE_LALT},
|
|
|
- {KS_Alt_R, SDL_SCANCODE_RALT},
|
|
|
- {KS_grave, SDL_SCANCODE_GRAVE},
|
|
|
-
|
|
|
- {KS_KP_0, SDL_SCANCODE_KP_0},
|
|
|
- {KS_KP_1, SDL_SCANCODE_KP_1},
|
|
|
- {KS_KP_2, SDL_SCANCODE_KP_2},
|
|
|
- {KS_KP_3, SDL_SCANCODE_KP_3},
|
|
|
- {KS_KP_4, SDL_SCANCODE_KP_4},
|
|
|
- {KS_KP_5, SDL_SCANCODE_KP_5},
|
|
|
- {KS_KP_6, SDL_SCANCODE_KP_6},
|
|
|
- {KS_KP_7, SDL_SCANCODE_KP_7},
|
|
|
- {KS_KP_8, SDL_SCANCODE_KP_8},
|
|
|
- {KS_KP_9, SDL_SCANCODE_KP_9},
|
|
|
- {KS_KP_Enter, SDL_SCANCODE_KP_ENTER},
|
|
|
- {KS_KP_Multiply, SDL_SCANCODE_KP_MULTIPLY},
|
|
|
- {KS_KP_Add, SDL_SCANCODE_KP_PLUS},
|
|
|
- {KS_KP_Subtract, SDL_SCANCODE_KP_MINUS},
|
|
|
- {KS_KP_Divide, SDL_SCANCODE_KP_DIVIDE},
|
|
|
- {KS_KP_Up, SDL_SCANCODE_UP},
|
|
|
- {KS_KP_Down, SDL_SCANCODE_DOWN},
|
|
|
- {KS_KP_Left, SDL_SCANCODE_LEFT},
|
|
|
- {KS_KP_Right, SDL_SCANCODE_RIGHT},
|
|
|
- {KS_KP_Equal, SDL_SCANCODE_KP_EQUALS},
|
|
|
- {KS_f1, SDL_SCANCODE_F1},
|
|
|
- {KS_f2, SDL_SCANCODE_F2},
|
|
|
- {KS_f3, SDL_SCANCODE_F3},
|
|
|
- {KS_f4, SDL_SCANCODE_F4},
|
|
|
- {KS_f5, SDL_SCANCODE_F5},
|
|
|
- {KS_f6, SDL_SCANCODE_F6},
|
|
|
- {KS_f7, SDL_SCANCODE_F7},
|
|
|
- {KS_f8, SDL_SCANCODE_F8},
|
|
|
- {KS_f9, SDL_SCANCODE_F9},
|
|
|
- {KS_f10, SDL_SCANCODE_F10},
|
|
|
- {KS_f11, SDL_SCANCODE_F11},
|
|
|
- {KS_f12, SDL_SCANCODE_F12},
|
|
|
- {KS_f13, SDL_SCANCODE_F13},
|
|
|
- {KS_f14, SDL_SCANCODE_F14},
|
|
|
- {KS_f15, SDL_SCANCODE_F15},
|
|
|
- {KS_f16, SDL_SCANCODE_F16},
|
|
|
- {KS_f17, SDL_SCANCODE_F17},
|
|
|
- {KS_f18, SDL_SCANCODE_F18},
|
|
|
- {KS_f19, SDL_SCANCODE_F19},
|
|
|
- {KS_f20, SDL_SCANCODE_F20},
|
|
|
+ { KS_Menu, SDL_SCANCODE_APPLICATION },
|
|
|
+ { KS_Up, SDL_SCANCODE_UP },
|
|
|
+ { KS_Down, SDL_SCANCODE_DOWN },
|
|
|
+ { KS_Left, SDL_SCANCODE_LEFT },
|
|
|
+ { KS_Right, SDL_SCANCODE_RIGHT },
|
|
|
+ { KS_Hold_Screen, SDL_SCANCODE_SCROLLLOCK },
|
|
|
+ { KS_Num_Lock, SDL_SCANCODE_NUMLOCKCLEAR },
|
|
|
+ { KS_Caps_Lock, SDL_SCANCODE_CAPSLOCK },
|
|
|
+ { KS_BackSpace, SDL_SCANCODE_BACKSPACE },
|
|
|
+ { KS_space, SDL_SCANCODE_SPACE },
|
|
|
+ { KS_Delete, SDL_SCANCODE_BACKSPACE },
|
|
|
+ { KS_Home, SDL_SCANCODE_HOME },
|
|
|
+ { KS_End, SDL_SCANCODE_END },
|
|
|
+ { KS_Pause, SDL_SCANCODE_PAUSE },
|
|
|
+ { KS_Print_Screen, SDL_SCANCODE_PRINTSCREEN },
|
|
|
+ { KS_Insert, SDL_SCANCODE_INSERT },
|
|
|
+ { KS_Escape, SDL_SCANCODE_ESCAPE },
|
|
|
+ { KS_Return, SDL_SCANCODE_RETURN },
|
|
|
+ { KS_Linefeed, SDL_SCANCODE_RETURN },
|
|
|
+ { KS_KP_Delete, SDL_SCANCODE_DELETE },
|
|
|
+ { KS_KP_Insert, SDL_SCANCODE_INSERT },
|
|
|
+ { KS_Control_L, SDL_SCANCODE_LCTRL },
|
|
|
+ { KS_Control_R, SDL_SCANCODE_RCTRL },
|
|
|
+ { KS_Shift_L, SDL_SCANCODE_LSHIFT },
|
|
|
+ { KS_Shift_R, SDL_SCANCODE_RSHIFT },
|
|
|
+ { KS_Alt_L, SDL_SCANCODE_LALT },
|
|
|
+ { KS_Alt_R, SDL_SCANCODE_RALT },
|
|
|
+ { KS_grave, SDL_SCANCODE_GRAVE },
|
|
|
+
|
|
|
+ { KS_KP_0, SDL_SCANCODE_KP_0 },
|
|
|
+ { KS_KP_1, SDL_SCANCODE_KP_1 },
|
|
|
+ { KS_KP_2, SDL_SCANCODE_KP_2 },
|
|
|
+ { KS_KP_3, SDL_SCANCODE_KP_3 },
|
|
|
+ { KS_KP_4, SDL_SCANCODE_KP_4 },
|
|
|
+ { KS_KP_5, SDL_SCANCODE_KP_5 },
|
|
|
+ { KS_KP_6, SDL_SCANCODE_KP_6 },
|
|
|
+ { KS_KP_7, SDL_SCANCODE_KP_7 },
|
|
|
+ { KS_KP_8, SDL_SCANCODE_KP_8 },
|
|
|
+ { KS_KP_9, SDL_SCANCODE_KP_9 },
|
|
|
+ { KS_KP_Enter, SDL_SCANCODE_KP_ENTER },
|
|
|
+ { KS_KP_Multiply, SDL_SCANCODE_KP_MULTIPLY },
|
|
|
+ { KS_KP_Add, SDL_SCANCODE_KP_PLUS },
|
|
|
+ { KS_KP_Subtract, SDL_SCANCODE_KP_MINUS },
|
|
|
+ { KS_KP_Divide, SDL_SCANCODE_KP_DIVIDE },
|
|
|
+ { KS_KP_Up, SDL_SCANCODE_UP },
|
|
|
+ { KS_KP_Down, SDL_SCANCODE_DOWN },
|
|
|
+ { KS_KP_Left, SDL_SCANCODE_LEFT },
|
|
|
+ { KS_KP_Right, SDL_SCANCODE_RIGHT },
|
|
|
+ { KS_KP_Equal, SDL_SCANCODE_KP_EQUALS },
|
|
|
+ { KS_f1, SDL_SCANCODE_F1 },
|
|
|
+ { KS_f2, SDL_SCANCODE_F2 },
|
|
|
+ { KS_f3, SDL_SCANCODE_F3 },
|
|
|
+ { KS_f4, SDL_SCANCODE_F4 },
|
|
|
+ { KS_f5, SDL_SCANCODE_F5 },
|
|
|
+ { KS_f6, SDL_SCANCODE_F6 },
|
|
|
+ { KS_f7, SDL_SCANCODE_F7 },
|
|
|
+ { KS_f8, SDL_SCANCODE_F8 },
|
|
|
+ { KS_f9, SDL_SCANCODE_F9 },
|
|
|
+ { KS_f10, SDL_SCANCODE_F10 },
|
|
|
+ { KS_f11, SDL_SCANCODE_F11 },
|
|
|
+ { KS_f12, SDL_SCANCODE_F12 },
|
|
|
+ { KS_f13, SDL_SCANCODE_F13 },
|
|
|
+ { KS_f14, SDL_SCANCODE_F14 },
|
|
|
+ { KS_f15, SDL_SCANCODE_F15 },
|
|
|
+ { KS_f16, SDL_SCANCODE_F16 },
|
|
|
+ { KS_f17, SDL_SCANCODE_F17 },
|
|
|
+ { KS_f18, SDL_SCANCODE_F18 },
|
|
|
+ { KS_f19, SDL_SCANCODE_F19 },
|
|
|
+ { KS_f20, SDL_SCANCODE_F20 },
|
|
|
#if !defined(__NetBSD__)
|
|
|
- {KS_f21, SDL_SCANCODE_F21},
|
|
|
- {KS_f22, SDL_SCANCODE_F22},
|
|
|
- {KS_f23, SDL_SCANCODE_F23},
|
|
|
- {KS_f24, SDL_SCANCODE_F24},
|
|
|
+ { KS_f21, SDL_SCANCODE_F21 },
|
|
|
+ { KS_f22, SDL_SCANCODE_F22 },
|
|
|
+ { KS_f23, SDL_SCANCODE_F23 },
|
|
|
+ { KS_f24, SDL_SCANCODE_F24 },
|
|
|
#endif
|
|
|
- {KS_Meta_L, SDL_SCANCODE_LGUI},
|
|
|
- {KS_Meta_R, SDL_SCANCODE_RGUI},
|
|
|
- {KS_Zenkaku_Hankaku, SDL_SCANCODE_LANG5},
|
|
|
- {KS_Hiragana_Katakana, SDL_SCANCODE_INTERNATIONAL2},
|
|
|
- {KS_yen, SDL_SCANCODE_INTERNATIONAL3},
|
|
|
- {KS_Henkan, SDL_SCANCODE_INTERNATIONAL4},
|
|
|
- {KS_Muhenkan, SDL_SCANCODE_INTERNATIONAL5},
|
|
|
- {KS_KP_Prior, SDL_SCANCODE_PRIOR},
|
|
|
-
|
|
|
- {KS_a, SDL_SCANCODE_A},
|
|
|
- {KS_b, SDL_SCANCODE_B},
|
|
|
- {KS_c, SDL_SCANCODE_C},
|
|
|
- {KS_d, SDL_SCANCODE_D},
|
|
|
- {KS_e, SDL_SCANCODE_E},
|
|
|
- {KS_f, SDL_SCANCODE_F},
|
|
|
- {KS_g, SDL_SCANCODE_G},
|
|
|
- {KS_h, SDL_SCANCODE_H},
|
|
|
- {KS_i, SDL_SCANCODE_I},
|
|
|
- {KS_j, SDL_SCANCODE_J},
|
|
|
- {KS_k, SDL_SCANCODE_K},
|
|
|
- {KS_l, SDL_SCANCODE_L},
|
|
|
- {KS_m, SDL_SCANCODE_M},
|
|
|
- {KS_n, SDL_SCANCODE_N},
|
|
|
- {KS_o, SDL_SCANCODE_O},
|
|
|
- {KS_p, SDL_SCANCODE_P},
|
|
|
- {KS_q, SDL_SCANCODE_Q},
|
|
|
- {KS_r, SDL_SCANCODE_R},
|
|
|
- {KS_s, SDL_SCANCODE_S},
|
|
|
- {KS_t, SDL_SCANCODE_T},
|
|
|
- {KS_u, SDL_SCANCODE_U},
|
|
|
- {KS_v, SDL_SCANCODE_V},
|
|
|
- {KS_w, SDL_SCANCODE_W},
|
|
|
- {KS_x, SDL_SCANCODE_X},
|
|
|
- {KS_y, SDL_SCANCODE_Y},
|
|
|
- {KS_z, SDL_SCANCODE_Z},
|
|
|
-
|
|
|
- {KS_0, SDL_SCANCODE_0},
|
|
|
- {KS_1, SDL_SCANCODE_1},
|
|
|
- {KS_2, SDL_SCANCODE_2},
|
|
|
- {KS_3, SDL_SCANCODE_3},
|
|
|
- {KS_4, SDL_SCANCODE_4},
|
|
|
- {KS_5, SDL_SCANCODE_5},
|
|
|
- {KS_6, SDL_SCANCODE_6},
|
|
|
- {KS_7, SDL_SCANCODE_7},
|
|
|
- {KS_8, SDL_SCANCODE_8},
|
|
|
- {KS_9, SDL_SCANCODE_9},
|
|
|
- {KS_minus, SDL_SCANCODE_MINUS},
|
|
|
- {KS_equal, SDL_SCANCODE_EQUALS},
|
|
|
- {KS_Tab, SDL_SCANCODE_TAB},
|
|
|
- {KS_KP_Tab, SDL_SCANCODE_KP_TAB},
|
|
|
- {KS_apostrophe, SDL_SCANCODE_APOSTROPHE},
|
|
|
- {KS_bracketleft, SDL_SCANCODE_LEFTBRACKET},
|
|
|
- {KS_bracketright, SDL_SCANCODE_RIGHTBRACKET},
|
|
|
- {KS_semicolon, SDL_SCANCODE_SEMICOLON},
|
|
|
- {KS_comma, SDL_SCANCODE_COMMA},
|
|
|
- {KS_period, SDL_SCANCODE_PERIOD},
|
|
|
- {KS_slash, SDL_SCANCODE_SLASH},
|
|
|
- {KS_backslash, SDL_SCANCODE_BACKSLASH}
|
|
|
+ { KS_Meta_L, SDL_SCANCODE_LGUI },
|
|
|
+ { KS_Meta_R, SDL_SCANCODE_RGUI },
|
|
|
+ { KS_Zenkaku_Hankaku, SDL_SCANCODE_LANG5 },
|
|
|
+ { KS_Hiragana_Katakana, SDL_SCANCODE_INTERNATIONAL2 },
|
|
|
+ { KS_yen, SDL_SCANCODE_INTERNATIONAL3 },
|
|
|
+ { KS_Henkan, SDL_SCANCODE_INTERNATIONAL4 },
|
|
|
+ { KS_Muhenkan, SDL_SCANCODE_INTERNATIONAL5 },
|
|
|
+ { KS_KP_Prior, SDL_SCANCODE_PRIOR },
|
|
|
+
|
|
|
+ { KS_a, SDL_SCANCODE_A },
|
|
|
+ { KS_b, SDL_SCANCODE_B },
|
|
|
+ { KS_c, SDL_SCANCODE_C },
|
|
|
+ { KS_d, SDL_SCANCODE_D },
|
|
|
+ { KS_e, SDL_SCANCODE_E },
|
|
|
+ { KS_f, SDL_SCANCODE_F },
|
|
|
+ { KS_g, SDL_SCANCODE_G },
|
|
|
+ { KS_h, SDL_SCANCODE_H },
|
|
|
+ { KS_i, SDL_SCANCODE_I },
|
|
|
+ { KS_j, SDL_SCANCODE_J },
|
|
|
+ { KS_k, SDL_SCANCODE_K },
|
|
|
+ { KS_l, SDL_SCANCODE_L },
|
|
|
+ { KS_m, SDL_SCANCODE_M },
|
|
|
+ { KS_n, SDL_SCANCODE_N },
|
|
|
+ { KS_o, SDL_SCANCODE_O },
|
|
|
+ { KS_p, SDL_SCANCODE_P },
|
|
|
+ { KS_q, SDL_SCANCODE_Q },
|
|
|
+ { KS_r, SDL_SCANCODE_R },
|
|
|
+ { KS_s, SDL_SCANCODE_S },
|
|
|
+ { KS_t, SDL_SCANCODE_T },
|
|
|
+ { KS_u, SDL_SCANCODE_U },
|
|
|
+ { KS_v, SDL_SCANCODE_V },
|
|
|
+ { KS_w, SDL_SCANCODE_W },
|
|
|
+ { KS_x, SDL_SCANCODE_X },
|
|
|
+ { KS_y, SDL_SCANCODE_Y },
|
|
|
+ { KS_z, SDL_SCANCODE_Z },
|
|
|
+
|
|
|
+ { KS_0, SDL_SCANCODE_0 },
|
|
|
+ { KS_1, SDL_SCANCODE_1 },
|
|
|
+ { KS_2, SDL_SCANCODE_2 },
|
|
|
+ { KS_3, SDL_SCANCODE_3 },
|
|
|
+ { KS_4, SDL_SCANCODE_4 },
|
|
|
+ { KS_5, SDL_SCANCODE_5 },
|
|
|
+ { KS_6, SDL_SCANCODE_6 },
|
|
|
+ { KS_7, SDL_SCANCODE_7 },
|
|
|
+ { KS_8, SDL_SCANCODE_8 },
|
|
|
+ { KS_9, SDL_SCANCODE_9 },
|
|
|
+ { KS_minus, SDL_SCANCODE_MINUS },
|
|
|
+ { KS_equal, SDL_SCANCODE_EQUALS },
|
|
|
+ { KS_Tab, SDL_SCANCODE_TAB },
|
|
|
+ { KS_KP_Tab, SDL_SCANCODE_KP_TAB },
|
|
|
+ { KS_apostrophe, SDL_SCANCODE_APOSTROPHE },
|
|
|
+ { KS_bracketleft, SDL_SCANCODE_LEFTBRACKET },
|
|
|
+ { KS_bracketright, SDL_SCANCODE_RIGHTBRACKET },
|
|
|
+ { KS_semicolon, SDL_SCANCODE_SEMICOLON },
|
|
|
+ { KS_comma, SDL_SCANCODE_COMMA },
|
|
|
+ { KS_period, SDL_SCANCODE_PERIOD },
|
|
|
+ { KS_slash, SDL_SCANCODE_SLASH },
|
|
|
+ { KS_backslash, SDL_SCANCODE_BACKSLASH }
|
|
|
};
|
|
|
|
|
|
-typedef struct {
|
|
|
+typedef struct
|
|
|
+{
|
|
|
int fd;
|
|
|
struct wskbd_map_data keymap;
|
|
|
int ledstate;
|
|
@@ -394,27 +402,27 @@ typedef struct {
|
|
|
int type;
|
|
|
} SDL_WSCONS_input_data;
|
|
|
|
|
|
-static SDL_WSCONS_input_data* inputs[4] = {NULL, NULL, NULL, NULL};
|
|
|
-static SDL_WSCONS_mouse_input_data* mouseInputData = NULL;
|
|
|
-#define IS_CONTROL_HELD (input->shiftstate[2] > 0)
|
|
|
-#define IS_ALT_HELD (input->shiftstate[1] > 0)
|
|
|
-#define IS_SHIFT_HELD ((input->shiftstate[0] > 0) || (input->ledstate & (1 << 5)))
|
|
|
+static SDL_WSCONS_input_data *inputs[4] = { NULL, NULL, NULL, NULL };
|
|
|
+static SDL_WSCONS_mouse_input_data *mouseInputData = NULL;
|
|
|
+#define IS_CONTROL_HELD (input->shiftstate[2] > 0)
|
|
|
+#define IS_ALT_HELD (input->shiftstate[1] > 0)
|
|
|
+#define IS_SHIFT_HELD ((input->shiftstate[0] > 0) || (input->ledstate & (1 << 5)))
|
|
|
|
|
|
#define IS_ALTGR_MODE ((input->ledstate & (1 << 4)) || (input->shiftstate[3] > 0))
|
|
|
#define IS_NUMLOCK_ON (input->ledstate & LED_NUM)
|
|
|
#define IS_SCROLLLOCK_ON (input->ledstate & LED_SCR)
|
|
|
#define IS_CAPSLOCK_ON (input->ledstate & LED_CAP)
|
|
|
-static SDL_WSCONS_input_data* SDL_WSCONS_Init_Keyboard(const char* dev)
|
|
|
+static SDL_WSCONS_input_data *SDL_WSCONS_Init_Keyboard(const char *dev)
|
|
|
{
|
|
|
#ifdef WSKBDIO_SETVERSION
|
|
|
int version = WSKBDIO_EVENT_VERSION;
|
|
|
#endif
|
|
|
- SDL_WSCONS_input_data* input = (SDL_WSCONS_input_data*)SDL_calloc(1, sizeof(SDL_WSCONS_input_data));
|
|
|
+ SDL_WSCONS_input_data *input = (SDL_WSCONS_input_data *)SDL_calloc(1, sizeof(SDL_WSCONS_input_data));
|
|
|
|
|
|
if (input == NULL) {
|
|
|
return input;
|
|
|
}
|
|
|
- input->fd = open(dev,O_RDWR | O_NONBLOCK | O_CLOEXEC);
|
|
|
+ input->fd = open(dev, O_RDWR | O_NONBLOCK | O_CLOEXEC);
|
|
|
if (input->fd == -1) {
|
|
|
free(input);
|
|
|
input = NULL;
|
|
@@ -451,7 +459,7 @@ void SDL_WSCONS_Init()
|
|
|
void SDL_WSCONS_Quit()
|
|
|
{
|
|
|
int i = 0;
|
|
|
- SDL_WSCONS_input_data* input = NULL;
|
|
|
+ SDL_WSCONS_input_data *input = NULL;
|
|
|
|
|
|
SDL_WSCONS_Quit_Mouse(mouseInputData);
|
|
|
mouseInputData = NULL;
|
|
@@ -459,7 +467,7 @@ void SDL_WSCONS_Quit()
|
|
|
input = inputs[i];
|
|
|
if (input) {
|
|
|
if (input->fd != -1 && input->fd != 0) {
|
|
|
- ioctl(input->fd,WSKBDIO_SETLEDS, &input->origledstate);
|
|
|
+ ioctl(input->fd, WSKBDIO_SETLEDS, &input->origledstate);
|
|
|
close(input->fd);
|
|
|
input->fd = -1;
|
|
|
}
|
|
@@ -473,12 +481,12 @@ void SDL_WSCONS_Quit()
|
|
|
static void put_queue(SDL_WSCONS_input_data *kbd, uint c)
|
|
|
{
|
|
|
/* c is already part of a UTF-8 sequence and safe to add as a character */
|
|
|
- if (kbd->text_len < (sizeof(kbd->text)-1)) {
|
|
|
+ if (kbd->text_len < (sizeof(kbd->text) - 1)) {
|
|
|
kbd->text[kbd->text_len++] = (char)(c);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void put_utf8(SDL_WSCONS_input_data* input, uint c)
|
|
|
+static void put_utf8(SDL_WSCONS_input_data *input, uint c)
|
|
|
{
|
|
|
if (c < 0x80)
|
|
|
/* 0******* */
|
|
@@ -507,14 +515,14 @@ static void put_utf8(SDL_WSCONS_input_data* input, uint c)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void Translate_to_text(SDL_WSCONS_input_data* input, keysym_t ksym)
|
|
|
+static void Translate_to_text(SDL_WSCONS_input_data *input, keysym_t ksym)
|
|
|
{
|
|
|
if (KS_GROUP(ksym) == KS_GROUP_Keypad) {
|
|
|
if (SDL_isprint(ksym & 0xFF)) {
|
|
|
ksym &= 0xFF;
|
|
|
}
|
|
|
}
|
|
|
- switch(ksym) {
|
|
|
+ switch (ksym) {
|
|
|
case KS_Escape:
|
|
|
case KS_Delete:
|
|
|
case KS_BackSpace:
|
|
@@ -535,19 +543,21 @@ static void Translate_to_text(SDL_WSCONS_input_data* input, keysym_t ksym)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void Translate_to_keycode(SDL_WSCONS_input_data* input, int type, keysym_t ksym)
|
|
|
+static void Translate_to_keycode(SDL_WSCONS_input_data *input, int type, keysym_t ksym)
|
|
|
{
|
|
|
struct wscons_keymap keyDesc = input->keymap.map[ksym];
|
|
|
- keysym_t* group = &keyDesc.group1[KS_GROUP(keyDesc.group1[0]) == KS_GROUP_Keypad && IS_NUMLOCK_ON ? !IS_SHIFT_HELD : 0];
|
|
|
+ keysym_t *group = &keyDesc.group1[KS_GROUP(keyDesc.group1[0]) == KS_GROUP_Keypad && IS_NUMLOCK_ON ? !IS_SHIFT_HELD : 0];
|
|
|
int i = 0;
|
|
|
|
|
|
/* Check command first, then group[0]*/
|
|
|
switch (keyDesc.command) {
|
|
|
- case KS_Cmd_ScrollBack: {
|
|
|
+ case KS_Cmd_ScrollBack:
|
|
|
+ {
|
|
|
SDL_SendKeyboardKey(type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED, SDL_SCANCODE_PAGEUP);
|
|
|
return;
|
|
|
}
|
|
|
- case KS_Cmd_ScrollFwd: {
|
|
|
+ case KS_Cmd_ScrollFwd:
|
|
|
+ {
|
|
|
SDL_SendKeyboardKey(type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED, SDL_SCANCODE_PAGEDOWN);
|
|
|
return;
|
|
|
}
|
|
@@ -559,14 +569,13 @@ static void Translate_to_keycode(SDL_WSCONS_input_data* input, int type, keysym_
|
|
|
}
|
|
|
}
|
|
|
SDL_SendKeyboardKey(type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED, SDL_SCANCODE_UNKNOWN);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
+static void updateKeyboard(SDL_WSCONS_input_data *input)
|
|
|
{
|
|
|
struct wscons_event events[64];
|
|
|
int type;
|
|
|
- int n,i,gindex,acc_i;
|
|
|
+ int n, i, gindex, acc_i;
|
|
|
keysym_t *group;
|
|
|
keysym_t ksym, result;
|
|
|
|
|
@@ -577,30 +586,34 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
n /= sizeof(struct wscons_event);
|
|
|
for (i = 0; i < n; i++) {
|
|
|
type = events[i].type;
|
|
|
- switch(type) {
|
|
|
- case WSCONS_EVENT_KEY_DOWN: {
|
|
|
+ switch (type) {
|
|
|
+ case WSCONS_EVENT_KEY_DOWN:
|
|
|
+ {
|
|
|
switch (input->keymap.map[events[i].value].group1[0]) {
|
|
|
- case KS_Hold_Screen: {
|
|
|
+ case KS_Hold_Screen:
|
|
|
+ {
|
|
|
if (input->lockheldstate[0] >= 1) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->ledstate ^= LED_SCR;
|
|
|
ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
input->lockheldstate[0] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Num_Lock: {
|
|
|
+ case KS_Num_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[1] >= 1) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->ledstate ^= LED_NUM;
|
|
|
ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
input->lockheldstate[1] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Caps_Lock: {
|
|
|
+ case KS_Caps_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[2] >= 1) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->ledstate ^= LED_CAP;
|
|
|
ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
@@ -608,9 +621,10 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
break;
|
|
|
}
|
|
|
#ifndef __NetBSD__
|
|
|
- case KS_Mode_Lock: {
|
|
|
+ case KS_Mode_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[3] >= 1) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->ledstate ^= 1 << 4;
|
|
|
ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
@@ -618,160 +632,174 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
break;
|
|
|
}
|
|
|
#endif
|
|
|
- case KS_Shift_Lock: {
|
|
|
+ case KS_Shift_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[4] >= 1) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->ledstate ^= 1 << 5;
|
|
|
ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
input->lockheldstate[4] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Shift_L: {
|
|
|
+ case KS_Shift_L:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[0]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[0]++;
|
|
|
input->shiftheldstate[0] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Shift_R: {
|
|
|
+ case KS_Shift_R:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[1]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[0]++;
|
|
|
input->shiftheldstate[1] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Alt_L: {
|
|
|
+ case KS_Alt_L:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[2]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[1]++;
|
|
|
input->shiftheldstate[2] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Alt_R: {
|
|
|
+ case KS_Alt_R:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[3]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[1]++;
|
|
|
input->shiftheldstate[3] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Control_L: {
|
|
|
+ case KS_Control_L:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[4]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[2]++;
|
|
|
input->shiftheldstate[4] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Control_R: {
|
|
|
+ case KS_Control_R:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[5]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[2]++;
|
|
|
input->shiftheldstate[5] = 1;
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Mode_switch: {
|
|
|
+ case KS_Mode_switch:
|
|
|
+ {
|
|
|
if (input->shiftheldstate[6]) {
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
input->shiftstate[3]++;
|
|
|
input->shiftheldstate[6] = 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
- case WSCONS_EVENT_KEY_UP: {
|
|
|
- switch(input->keymap.map[events[i].value].group1[0]) {
|
|
|
- case KS_Hold_Screen: {
|
|
|
+ } break;
|
|
|
+ case WSCONS_EVENT_KEY_UP:
|
|
|
+ {
|
|
|
+ switch (input->keymap.map[events[i].value].group1[0]) {
|
|
|
+ case KS_Hold_Screen:
|
|
|
+ {
|
|
|
if (input->lockheldstate[0]) {
|
|
|
- input->lockheldstate[0] = 0;
|
|
|
+ input->lockheldstate[0] = 0;
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
- case KS_Num_Lock: {
|
|
|
+ } break;
|
|
|
+ case KS_Num_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[1]) {
|
|
|
- input->lockheldstate[1] = 0;
|
|
|
+ input->lockheldstate[1] = 0;
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
- case KS_Caps_Lock: {
|
|
|
+ } break;
|
|
|
+ case KS_Caps_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[2]) {
|
|
|
- input->lockheldstate[2] = 0;
|
|
|
+ input->lockheldstate[2] = 0;
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
+ } break;
|
|
|
#ifndef __NetBSD__
|
|
|
- case KS_Mode_Lock: {
|
|
|
+ case KS_Mode_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[3]) {
|
|
|
- input->lockheldstate[3] = 0;
|
|
|
+ input->lockheldstate[3] = 0;
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
+ } break;
|
|
|
#endif
|
|
|
- case KS_Shift_Lock: {
|
|
|
+ case KS_Shift_Lock:
|
|
|
+ {
|
|
|
if (input->lockheldstate[4]) {
|
|
|
- input->lockheldstate[4] = 0;
|
|
|
+ input->lockheldstate[4] = 0;
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
- case KS_Shift_L: {
|
|
|
+ } break;
|
|
|
+ case KS_Shift_L:
|
|
|
+ {
|
|
|
input->shiftheldstate[0] = 0;
|
|
|
if (input->shiftstate[0]) {
|
|
|
- input->shiftstate[0]--;
|
|
|
+ input->shiftstate[0]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Shift_R: {
|
|
|
+ case KS_Shift_R:
|
|
|
+ {
|
|
|
input->shiftheldstate[1] = 0;
|
|
|
if (input->shiftstate[0]) {
|
|
|
- input->shiftstate[0]--;
|
|
|
+ input->shiftstate[0]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Alt_L: {
|
|
|
+ case KS_Alt_L:
|
|
|
+ {
|
|
|
input->shiftheldstate[2] = 0;
|
|
|
if (input->shiftstate[1]) {
|
|
|
- input->shiftstate[1]--;
|
|
|
+ input->shiftstate[1]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Alt_R: {
|
|
|
+ case KS_Alt_R:
|
|
|
+ {
|
|
|
input->shiftheldstate[3] = 0;
|
|
|
if (input->shiftstate[1]) {
|
|
|
- input->shiftstate[1]--;
|
|
|
+ input->shiftstate[1]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Control_L: {
|
|
|
+ case KS_Control_L:
|
|
|
+ {
|
|
|
input->shiftheldstate[4] = 0;
|
|
|
if (input->shiftstate[2]) {
|
|
|
- input->shiftstate[2]--;
|
|
|
+ input->shiftstate[2]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Control_R: {
|
|
|
+ case KS_Control_R:
|
|
|
+ {
|
|
|
input->shiftheldstate[5] = 0;
|
|
|
if (input->shiftstate[2]) {
|
|
|
- input->shiftstate[2]--;
|
|
|
+ input->shiftstate[2]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
- case KS_Mode_switch: {
|
|
|
+ case KS_Mode_switch:
|
|
|
+ {
|
|
|
input->shiftheldstate[6] = 0;
|
|
|
if (input->shiftstate[3]) {
|
|
|
- input->shiftstate[3]--;
|
|
|
+ input->shiftstate[3]--;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
+ } break;
|
|
|
case WSCONS_EVENT_ALL_KEYS_UP:
|
|
|
for (i = 0; i < SDL_NUM_SCANCODES; i++) {
|
|
|
SDL_SendKeyboardKey(SDL_RELEASED, i);
|
|
@@ -781,7 +809,7 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
|
|
|
if (input->type == WSKBD_TYPE_USB && events[i].value <= 0xE7)
|
|
|
SDL_SendKeyboardKey(type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED, (SDL_Scancode)events[i].value);
|
|
|
- else
|
|
|
+ else
|
|
|
Translate_to_keycode(input, type, events[i].value);
|
|
|
|
|
|
if (type == WSCONS_EVENT_KEY_UP) {
|
|
@@ -816,7 +844,7 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
case KS_GROUP_Mod:
|
|
|
if (ksym == KS_Multi_key) {
|
|
|
input->ledstate |= WSKBD_LED_COMPOSE;
|
|
|
- ioctl(input->fd,WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
+ ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
input->composelen = 2;
|
|
|
input->composebuffer[0] = input->composebuffer[1] = 0;
|
|
|
}
|
|
@@ -824,11 +852,12 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
case KS_GROUP_Dead:
|
|
|
if (input->composelen == 0) {
|
|
|
input->ledstate |= WSKBD_LED_COMPOSE;
|
|
|
- ioctl(input->fd,WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
+ ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
input->composelen = 1;
|
|
|
input->composebuffer[0] = ksym;
|
|
|
input->composebuffer[1] = 0;
|
|
|
- } else result = ksym;
|
|
|
+ } else
|
|
|
+ result = ksym;
|
|
|
break;
|
|
|
}
|
|
|
if (result == KS_voidSymbol) {
|
|
@@ -848,17 +877,15 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
if (--input->composelen == 0) {
|
|
|
result = KS_voidSymbol;
|
|
|
input->ledstate &= ~WSKBD_LED_COMPOSE;
|
|
|
- ioctl(input->fd,WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
+ ioctl(input->fd, WSKBDIO_SETLEDS, &input->ledstate);
|
|
|
for (acc_i = 0; acc_i < SDL_arraysize(compose_tab); acc_i++) {
|
|
|
- if ((compose_tab[acc_i].elem[0] == input->composebuffer[0]
|
|
|
- && compose_tab[acc_i].elem[1] == input->composebuffer[1])
|
|
|
- || (compose_tab[acc_i].elem[0] == input->composebuffer[1]
|
|
|
- && compose_tab[acc_i].elem[1] == input->composebuffer[0])) {
|
|
|
+ if ((compose_tab[acc_i].elem[0] == input->composebuffer[0] && compose_tab[acc_i].elem[1] == input->composebuffer[1]) || (compose_tab[acc_i].elem[0] == input->composebuffer[1] && compose_tab[acc_i].elem[1] == input->composebuffer[0])) {
|
|
|
result = compose_tab[acc_i].result;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- } else continue;
|
|
|
+ } else
|
|
|
+ continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -871,7 +898,7 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
} else if (result >= KS_3 && result <= KS_7) {
|
|
|
result = KS_Escape + (result - KS_3);
|
|
|
} else if (result == KS_8) {
|
|
|
- result = KS_Delete;
|
|
|
+ result = KS_Delete;
|
|
|
}
|
|
|
}
|
|
|
if (IS_ALT_HELD) {
|
|
@@ -880,11 +907,11 @@ static void updateKeyboard(SDL_WSCONS_input_data* input)
|
|
|
Translate_to_text(input, result);
|
|
|
continue;
|
|
|
} else {
|
|
|
- result |= 0x80;
|
|
|
+ result |= 0x80;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- Translate_to_text(input,result);
|
|
|
+ Translate_to_text(input, result);
|
|
|
continue;
|
|
|
}
|
|
|
}
|