- implementation of the keyboard mapping feature for wxbochs (wxGTK version)

- German keymap table for wxbochs (wxGTK version)
This commit is contained in:
Volker Ruppert 2002-10-15 16:48:10 +00:00
parent 383f2a5700
commit 5e2cbe04bf
3 changed files with 993 additions and 87 deletions

View File

@ -0,0 +1,255 @@
# Bochs Keymap file
# $Id: wx-pc-de.map,v 1.1 2002-10-15 16:48:10 vruppert Exp $
# Target: PC(x86) keyboard, DE keymap, wx gui on X11
# Author: Volker Ruppert
#
# The keymap file describes the layout of a keyboard, and how it translates
# into Bochs key codes.
#
# Format:
# BX_Keysym ASCII_equivalent Host_key_name
#
# Or, for keys that require modifiers:
# BX_Keysym+BX_Modifier ASCII_equivalent Host_key_name
#
# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
# gui/keymap.cc. The BX_Modifier is usually a shift key press, but it
# could be any key. Presently a maximum of one modifier is supported, but this
# could be changed in keymap.h (structure def has only one slot for modifier),
# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
# modifier).
#
# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
# or one of these keywords: space, return, tab, backslash, apostrophe, none.
# This format is designed to look like a char constant in C, but it's a very
# simple parser. There's no concept of backslash being an escape char. The
# backslash and apostrophe entries are provided for aesthetic purposes only: no
# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
# ugly.
#
# Host_key_name is the name of the key combination according to the gui library
# (X windows, SDL, etc). Each GUI module must provide a function that converts
# these host key names into numbers. A pointer to the conversion function is
# passed to loadKeymap(), and it is used when parsing the keymap file. As the
# keymap file is parsed, the conversion function is called for each host key
# name, to convert it into a number. Only the number is stored. If the host
# key name is not found, the conversion function returns BX_KEYMAP_UNKNOWN, and
# the keymap code will panic, like this:
#
# [KMAP ] line 51: unknown host key name 'GDK_parenright'
#
# If this happens, you must edit the keymap file, and either correct the host
# key name or comment out that line.
#
BX_KEY_0 '0' GDK_0
BX_KEY_0+BX_KEY_ALT_R '}' GDK_braceright
BX_KEY_0+BX_KEY_SHIFT_L '=' GDK_equal
BX_KEY_1 '1' GDK_1
BX_KEY_1+BX_KEY_SHIFT_L '!' GDK_exclam
BX_KEY_1+BX_KEY_ALT_R '¹' GDK_onesuperior
BX_KEY_2 '2' GDK_2
BX_KEY_2+BX_KEY_SHIFT_L '"' GDK_quotedbl
BX_KEY_2+BX_KEY_ALT_R '²' GDK_twosuperior
BX_KEY_3 '3' GDK_3
BX_KEY_3+BX_KEY_SHIFT_L '§' GDK_section
BX_KEY_3+BX_KEY_ALT_R '³' GDK_threesuperior
BX_KEY_4 '4' GDK_4
BX_KEY_4+BX_KEY_SHIFT_L '$' GDK_dollar
BX_KEY_4+BX_KEY_ALT_R '¼' GDK_onequarter
BX_KEY_5 '5' GDK_5
BX_KEY_5+BX_KEY_ALT_R '½' GDK_onehalf
BX_KEY_5+BX_KEY_SHIFT_L '%' GDK_percent
BX_KEY_6 '6' GDK_6
BX_KEY_6+BX_KEY_SHIFT_L '&' GDK_ampersand
BX_KEY_6+BX_KEY_ALT_R '¾' GDK_threequarters
BX_KEY_7 '7' GDK_7
BX_KEY_7+BX_KEY_ALT_R '{' GDK_braceleft
BX_KEY_7+BX_KEY_SHIFT_L '/' GDK_slash
BX_KEY_8 '8' GDK_8
BX_KEY_8+BX_KEY_ALT_R '[' GDK_bracketleft
BX_KEY_8+BX_KEY_SHIFT_L '(' GDK_parenleft
BX_KEY_9 '9' GDK_9
BX_KEY_9+BX_KEY_ALT_R ']' GDK_bracketright
BX_KEY_9+BX_KEY_SHIFT_L ')' GDK_parenright
BX_KEY_A+BX_KEY_SHIFT_L 'A' GDK_A
BX_KEY_A 'a' GDK_a
BX_KEY_A+BX_KEY_ALT_R 'æ' GDK_ae
BX_KEY_B+BX_KEY_SHIFT_L 'B' GDK_B
BX_KEY_B 'b' GDK_b
BX_KEY_B+BX_KEY_ALT_R none GDK_rightdoublequotemark
BX_KEY_C+BX_KEY_SHIFT_L 'C' GDK_C
BX_KEY_C 'c' GDK_c
BX_KEY_C+BX_KEY_ALT_R '¢' GDK_cent
BX_KEY_D+BX_KEY_SHIFT_L 'D' GDK_D
BX_KEY_D 'd' GDK_d
BX_KEY_D+BX_KEY_ALT_R 'ð' GDK_eth
BX_KEY_E+BX_KEY_SHIFT_L 'E' GDK_E
BX_KEY_E+BX_KEY_ALT_R none GDK_currency
BX_KEY_E 'e' GDK_e
BX_KEY_F+BX_KEY_SHIFT_L 'F' GDK_F
BX_KEY_F+BX_KEY_ALT_R none GDK_dstroke
BX_KEY_F 'f' GDK_f
BX_KEY_G+BX_KEY_SHIFT_L 'G' GDK_G
BX_KEY_G+BX_KEY_ALT_R none GDK_eng
BX_KEY_G 'g' GDK_g
BX_KEY_H+BX_KEY_SHIFT_L 'H' GDK_H
BX_KEY_H 'h' GDK_h
BX_KEY_H+BX_KEY_ALT_R none GDK_hstroke
BX_KEY_I+BX_KEY_SHIFT_L 'I' GDK_I
BX_KEY_I 'i' GDK_i
BX_KEY_I+BX_KEY_ALT_R none GDK_rightarrow
BX_KEY_J+BX_KEY_SHIFT_L 'J' GDK_J
BX_KEY_J 'j' GDK_j
BX_KEY_K+BX_KEY_SHIFT_L 'K' GDK_K
BX_KEY_K 'k' GDK_k
BX_KEY_K+BX_KEY_ALT_R none GDK_kra
BX_KEY_L+BX_KEY_SHIFT_L 'L' GDK_L
BX_KEY_L 'l' GDK_l
BX_KEY_M+BX_KEY_SHIFT_L 'M' GDK_M
BX_KEY_M 'm' GDK_m
BX_KEY_M+BX_KEY_ALT_R 'µ' GDK_mu
BX_KEY_N+BX_KEY_SHIFT_L 'N' GDK_N
BX_KEY_N 'n' GDK_n
BX_KEY_O+BX_KEY_SHIFT_L 'O' GDK_O
BX_KEY_O 'o' GDK_o
BX_KEY_O+BX_KEY_ALT_R 'ø' GDK_oslash
BX_KEY_P+BX_KEY_SHIFT_L 'P' GDK_P
BX_KEY_P 'p' GDK_p
BX_KEY_P+BX_KEY_ALT_R 'þ' GDK_thorn
BX_KEY_Q+BX_KEY_SHIFT_L 'Q' GDK_Q
BX_KEY_Q+BX_KEY_ALT_R '@' GDK_at
BX_KEY_Q 'q' GDK_q
BX_KEY_R+BX_KEY_SHIFT_L 'R' GDK_R
BX_KEY_R+BX_KEY_ALT_R '¶' GDK_paragraph
BX_KEY_R 'r' GDK_r
BX_KEY_S+BX_KEY_SHIFT_L 'S' GDK_S
BX_KEY_S 's' GDK_s
BX_KEY_T+BX_KEY_SHIFT_L 'T' GDK_T
BX_KEY_T 't' GDK_t
BX_KEY_T+BX_KEY_ALT_R none GDK_tslash
BX_KEY_U+BX_KEY_SHIFT_L 'U' GDK_U
BX_KEY_U+BX_KEY_ALT_R none GDK_downarrow
BX_KEY_U 'u' GDK_u
BX_KEY_V+BX_KEY_SHIFT_L 'V' GDK_V
BX_KEY_V+BX_KEY_ALT_R none GDK_leftdoublequotemark
BX_KEY_V 'v' GDK_v
BX_KEY_W+BX_KEY_SHIFT_L 'W' GDK_W
BX_KEY_W+BX_KEY_ALT_R none GDK_lstroke
BX_KEY_W 'w' GDK_w
BX_KEY_X+BX_KEY_SHIFT_L 'X' GDK_X
BX_KEY_X+BX_KEY_ALT_R '»' GDK_guillemotright
BX_KEY_X 'x' GDK_x
BX_KEY_Y+BX_KEY_SHIFT_L 'Z' GDK_Z
BX_KEY_Y+BX_KEY_ALT_R none GDK_leftarrow
BX_KEY_Y 'z' GDK_z
BX_KEY_Z+BX_KEY_SHIFT_L 'Y' GDK_Y
BX_KEY_Z+BX_KEY_ALT_R '«' GDK_guillemotleft
BX_KEY_Z 'y' GDK_y
BX_KEY_F1 none GDK_F1
BX_KEY_F2 none GDK_F2
BX_KEY_F3 none GDK_F3
BX_KEY_F4 none GDK_F4
BX_KEY_F5 none GDK_F5
BX_KEY_F6 none GDK_F6
BX_KEY_F7 none GDK_F7
BX_KEY_F8 none GDK_F8
BX_KEY_F9 none GDK_F9
BX_KEY_F10 none GDK_F10
BX_KEY_F11 none GDK_F11
BX_KEY_F12 none GDK_F12
BX_KEY_ALT_L none GDK_Alt_L
BX_KEY_ALT_L none GDK_Meta_L
BX_KEY_ALT_R none GDK_Alt_R
BX_KEY_ALT_R none GDK_Mode_switch
BX_KEY_ALT_R none GDK_Multi_key
BX_KEY_BACKSLASH apostrophe GDK_apostrophe
BX_KEY_BACKSLASH '#' GDK_numbersign
BX_KEY_BACKSPACE none GDK_BackSpace
BX_KEY_CAPS_LOCK none GDK_Caps_Lock
BX_KEY_COMMA ',' GDK_comma
BX_KEY_COMMA+BX_KEY_ALT_R none GDK_horizconnector
BX_KEY_COMMA+BX_KEY_SHIFT_L ';' GDK_semicolon
BX_KEY_CTRL_L none GDK_Control_L
BX_KEY_CTRL_R none GDK_Control_R
BX_KEY_DELETE none GDK_Delete
BX_KEY_DOWN none GDK_Down
BX_KEY_END none GDK_End
BX_KEY_ENTER return GDK_Return
BX_KEY_EQUALS none GDK_acute
BX_KEY_EQUALS+BX_KEY_ALT_R '¸' GDK_cedilla
BX_KEY_EQUALS+BX_KEY_SHIFT_L '`' GDK_grave
BX_KEY_ESC none GDK_Escape
BX_KEY_GRAVE '^' GDK_asciicircum
BX_KEY_GRAVE+BX_KEY_SHIFT_L '°' GDK_degree
BX_KEY_GRAVE+BX_KEY_ALT_R '¬' GDK_notsign
BX_KEY_HOME none GDK_Home
BX_KEY_INSERT none GDK_Insert
BX_KEY_KP_5 none GDK_KP_5
BX_KEY_KP_5 none GDK_KP_Begin
BX_KEY_KP_ADD none GDK_KP_Add
BX_KEY_KP_DELETE none GDK_KP_Decimal
BX_KEY_KP_DELETE none GDK_KP_Delete
BX_KEY_KP_DIVIDE none GDK_KP_Divide
BX_KEY_KP_DOWN none GDK_KP_2
BX_KEY_KP_DOWN none GDK_KP_Down
BX_KEY_KP_END none GDK_KP_1
BX_KEY_KP_END none GDK_KP_End
BX_KEY_KP_ENTER none GDK_KP_Enter
BX_KEY_KP_HOME none GDK_KP_7
BX_KEY_KP_HOME none GDK_KP_Home
BX_KEY_KP_INSERT none GDK_KP_0
BX_KEY_KP_INSERT none GDK_KP_Insert
BX_KEY_KP_LEFT none GDK_KP_4
BX_KEY_KP_LEFT none GDK_KP_Left
BX_KEY_KP_MULTIPLY none GDK_KP_Multiply
BX_KEY_KP_PAGE_DOWN none GDK_KP_3
BX_KEY_KP_PAGE_DOWN none GDK_KP_Page_Down
BX_KEY_KP_PAGE_UP none GDK_KP_9
BX_KEY_KP_PAGE_UP none GDK_KP_Page_Up
BX_KEY_KP_RIGHT none GDK_KP_6
BX_KEY_KP_RIGHT none GDK_KP_Right
BX_KEY_KP_SUBTRACT none GDK_KP_Subtract
BX_KEY_KP_UP none GDK_KP_8
BX_KEY_KP_UP none GDK_KP_Up
BX_KEY_LEFT none GDK_Left
BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R '|' GDK_bar
BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L '>' GDK_greater
BX_KEY_LEFT_BACKSLASH '<' GDK_less
BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L 'Ü' GDK_Udiaeresis
BX_KEY_LEFT_BRACKET+BX_KEY_ALT_L none GDK_diaeresis
BX_KEY_LEFT_BRACKET 'ü' GDK_udiaeresis
BX_KEY_MENU none GDK_Menu
BX_KEY_MINUS+BX_KEY_ALT_L backslash GDK_backslash
BX_KEY_MINUS+BX_KEY_SHIFT_L '?' GDK_question
BX_KEY_MINUS 'ß' GDK_ssharp
BX_KEY_NUM_LOCK none GDK_Num_Lock
BX_KEY_PAGE_DOWN none GDK_Page_Down
BX_KEY_PAGE_UP none GDK_Page_Up
BX_KEY_PAUSE none GDK_Break
BX_KEY_PAUSE none GDK_Pause
BX_KEY_PERIOD+BX_KEY_SHIFT_L ':' GDK_colon
BX_KEY_PERIOD '.' GDK_period
BX_KEY_PERIOD+BX_KEY_ALT_L '·' GDK_periodcentered
BX_KEY_PRINT none GDK_Print
BX_KEY_PRINT none GDK_Sys_Req
BX_KEY_RIGHT none GDK_Right
BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R '~' GDK_asciitilde
BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L '*' GDK_asterisk
BX_KEY_RIGHT_BRACKET '+' GDK_plus
BX_KEY_SCRL_LOCK none GDK_Scroll_Lock
BX_KEY_SEMICOLON+BX_KEY_SHIFT_L 'Ö' GDK_Odiaeresis
BX_KEY_SEMICOLON 'ö' GDK_odiaeresis
BX_KEY_SHIFT_L none GDK_Shift_L
BX_KEY_SHIFT_R none GDK_Shift_R
BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L 'Ä' GDK_Adiaeresis
BX_KEY_SINGLE_QUOTE 'ä' GDK_adiaeresis
BX_KEY_SLASH none GDK_dead_belowdot
BX_KEY_SLASH '-' GDK_minus
BX_KEY_SLASH+BX_KEY_SHIFT_L '_' GDK_underscore
BX_KEY_SPACE space GDK_space
BX_KEY_TAB none GDK_ISO_Left_Tab
BX_KEY_TAB tab GDK_Tab
BX_KEY_UP none GDK_Up
BX_KEY_WIN_L none GDK_Super_L
BX_KEY_WIN_R none GDK_Super_R

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////
// $Id: wx.cc,v 1.44 2002-10-13 11:07:44 vruppert Exp $
// $Id: wx.cc,v 1.45 2002-10-15 16:48:10 vruppert Exp $
/////////////////////////////////////////////////////////////////
//
// wxWindows VGA display for Bochs. wx.cc implements a custom
@ -79,6 +79,7 @@ struct {
wxCriticalSection event_thread_lock;
BxEvent event_queue[MAX_EVENTS];
unsigned long num_events = 0;
static Bit32u convertStringToGDKKey (const char *string);
//////////////////////////////////////////////////////////////
@ -439,154 +440,164 @@ MyPanel::fillBxKeyEvent_GTK (wxKeyEvent& wxev, BxKeyEvent& bxev, Boolean release
Bit32u key_event = 0;
// since the GDK_* symbols are very much like the X11 symbols (possibly
// identical), I'm using code that is copied from gui/x.cc.
if (keysym >= GDK_space && keysym < GDK_asciitilde) {
// use nice ASCII conversion table, based on x.cc
key_event = wxAsciiKey[keysym - GDK_space];
} else switch (keysym) {
case GDK_KP_1:
if(!bx_options.keyboard.OuseMapping->get()) {
if (keysym >= GDK_space && keysym < GDK_asciitilde) {
// use nice ASCII conversion table, based on x.cc
key_event = wxAsciiKey[keysym - GDK_space];
} else switch (keysym) {
case GDK_KP_1:
#ifdef GDK_KP_End
case GDK_KP_End:
case GDK_KP_End:
#endif
key_event = BX_KEY_KP_END; break;
key_event = BX_KEY_KP_END; break;
case GDK_KP_2:
case GDK_KP_2:
#ifdef GDK_KP_Down
case GDK_KP_Down:
case GDK_KP_Down:
#endif
key_event = BX_KEY_KP_DOWN; break;
key_event = BX_KEY_KP_DOWN; break;
case GDK_KP_3:
case GDK_KP_3:
#ifdef GDK_KP_Page_Down
case GDK_KP_Page_Down:
case GDK_KP_Page_Down:
#endif
key_event = BX_KEY_KP_PAGE_DOWN; break;
key_event = BX_KEY_KP_PAGE_DOWN; break;
case GDK_KP_4:
case GDK_KP_4:
#ifdef GDK_KP_Left
case GDK_KP_Left:
case GDK_KP_Left:
#endif
key_event = BX_KEY_KP_LEFT; break;
key_event = BX_KEY_KP_LEFT; break;
case GDK_KP_5:
case GDK_KP_5:
#ifdef GDK_KP_Begin
case GDK_KP_Begin:
case GDK_KP_Begin:
#endif
key_event = BX_KEY_KP_5; break;
key_event = BX_KEY_KP_5; break;
case GDK_KP_6:
case GDK_KP_6:
#ifdef GDK_KP_Right
case GDK_KP_Right:
case GDK_KP_Right:
#endif
key_event = BX_KEY_KP_RIGHT; break;
key_event = BX_KEY_KP_RIGHT; break;
case GDK_KP_7:
case GDK_KP_7:
#ifdef GDK_KP_Home
case GDK_KP_Home:
case GDK_KP_Home:
#endif
key_event = BX_KEY_KP_HOME; break;
key_event = BX_KEY_KP_HOME; break;
case GDK_KP_8:
case GDK_KP_8:
#ifdef GDK_KP_Up
case GDK_KP_Up:
case GDK_KP_Up:
#endif
key_event = BX_KEY_KP_UP; break;
key_event = BX_KEY_KP_UP; break;
case GDK_KP_9:
case GDK_KP_9:
#ifdef GDK_KP_Page_Up
case GDK_KP_Page_Up:
case GDK_KP_Page_Up:
#endif
key_event = BX_KEY_KP_PAGE_UP; break;
key_event = BX_KEY_KP_PAGE_UP; break;
case GDK_KP_0:
case GDK_KP_0:
#ifdef GDK_KP_Insert
case GDK_KP_Insert:
case GDK_KP_Insert:
#endif
key_event = BX_KEY_KP_INSERT; break;
key_event = BX_KEY_KP_INSERT; break;
case GDK_KP_Decimal:
case GDK_KP_Decimal:
#ifdef GDK_KP_Delete
case GDK_KP_Delete:
case GDK_KP_Delete:
#endif
key_event = BX_KEY_KP_DELETE; break;
key_event = BX_KEY_KP_DELETE; break;
#ifdef GDK_KP_Enter
case GDK_KP_Enter: key_event = BX_KEY_KP_ENTER; break;
case GDK_KP_Enter: key_event = BX_KEY_KP_ENTER; break;
#endif
case GDK_KP_Subtract: key_event = BX_KEY_KP_SUBTRACT; break;
case GDK_KP_Add: key_event = BX_KEY_KP_ADD; break;
case GDK_KP_Subtract: key_event = BX_KEY_KP_SUBTRACT; break;
case GDK_KP_Add: key_event = BX_KEY_KP_ADD; break;
case GDK_KP_Multiply: key_event = BX_KEY_KP_MULTIPLY; break;
case GDK_KP_Divide: key_event = BX_KEY_KP_DIVIDE; break;
case GDK_KP_Multiply: key_event = BX_KEY_KP_MULTIPLY; break;
case GDK_KP_Divide: key_event = BX_KEY_KP_DIVIDE; break;
case GDK_Up: key_event = BX_KEY_UP; break;
case GDK_Down: key_event = BX_KEY_DOWN; break;
case GDK_Left: key_event = BX_KEY_LEFT; break;
case GDK_Right: key_event = BX_KEY_RIGHT; break;
case GDK_Up: key_event = BX_KEY_UP; break;
case GDK_Down: key_event = BX_KEY_DOWN; break;
case GDK_Left: key_event = BX_KEY_LEFT; break;
case GDK_Right: key_event = BX_KEY_RIGHT; break;
case GDK_Delete: key_event = BX_KEY_DELETE; break;
case GDK_BackSpace: key_event = BX_KEY_BACKSPACE; break;
case GDK_Tab: key_event = BX_KEY_TAB; break;
case GDK_Delete: key_event = BX_KEY_DELETE; break;
case GDK_BackSpace: key_event = BX_KEY_BACKSPACE; break;
case GDK_Tab: key_event = BX_KEY_TAB; break;
#ifdef GDK_ISO_Left_Tab
case GDK_ISO_Left_Tab: key_event = BX_KEY_TAB; break;
case GDK_ISO_Left_Tab: key_event = BX_KEY_TAB; break;
#endif
case GDK_Return: key_event = BX_KEY_ENTER; break;
case GDK_Escape: key_event = BX_KEY_ESC; break;
case GDK_F1: key_event = BX_KEY_F1; break;
case GDK_F2: key_event = BX_KEY_F2; break;
case GDK_F3: key_event = BX_KEY_F3; break;
case GDK_F4: key_event = BX_KEY_F4; break;
case GDK_F5: key_event = BX_KEY_F5; break;
case GDK_F6: key_event = BX_KEY_F6; break;
case GDK_F7: key_event = BX_KEY_F7; break;
case GDK_F8: key_event = BX_KEY_F8; break;
case GDK_F9: key_event = BX_KEY_F9; break;
case GDK_F10: key_event = BX_KEY_F10; break;
case GDK_F11: key_event = BX_KEY_F11; break;
case GDK_F12: key_event = BX_KEY_F12; break;
case GDK_Control_L: key_event = BX_KEY_CTRL_L; break;
case GDK_Return: key_event = BX_KEY_ENTER; break;
case GDK_Escape: key_event = BX_KEY_ESC; break;
case GDK_F1: key_event = BX_KEY_F1; break;
case GDK_F2: key_event = BX_KEY_F2; break;
case GDK_F3: key_event = BX_KEY_F3; break;
case GDK_F4: key_event = BX_KEY_F4; break;
case GDK_F5: key_event = BX_KEY_F5; break;
case GDK_F6: key_event = BX_KEY_F6; break;
case GDK_F7: key_event = BX_KEY_F7; break;
case GDK_F8: key_event = BX_KEY_F8; break;
case GDK_F9: key_event = BX_KEY_F9; break;
case GDK_F10: key_event = BX_KEY_F10; break;
case GDK_F11: key_event = BX_KEY_F11; break;
case GDK_F12: key_event = BX_KEY_F12; break;
case GDK_Control_L: key_event = BX_KEY_CTRL_L; break;
#ifdef GDK_Control_R
case GDK_Control_R: key_event = BX_KEY_CTRL_R; break;
case GDK_Control_R: key_event = BX_KEY_CTRL_R; break;
#endif
case GDK_Shift_L: key_event = BX_KEY_SHIFT_L; break;
case GDK_Shift_R: key_event = BX_KEY_SHIFT_R; break;
case GDK_Alt_L: key_event = BX_KEY_ALT_L; break;
case GDK_Shift_L: key_event = BX_KEY_SHIFT_L; break;
case GDK_Shift_R: key_event = BX_KEY_SHIFT_R; break;
case GDK_Alt_L: key_event = BX_KEY_ALT_L; break;
#ifdef GDK_Alt_R
case GDK_Alt_R: key_event = BX_KEY_ALT_R; break;
case GDK_Alt_R: key_event = BX_KEY_ALT_R; break;
#endif
case GDK_Caps_Lock: key_event = BX_KEY_CAPS_LOCK; break;
case GDK_Num_Lock: key_event = BX_KEY_NUM_LOCK; break;
case GDK_Caps_Lock: key_event = BX_KEY_CAPS_LOCK; break;
case GDK_Num_Lock: key_event = BX_KEY_NUM_LOCK; break;
#ifdef GDK_Scroll_Lock
case GDK_Scroll_Lock: key_event = BX_KEY_SCRL_LOCK; break;
case GDK_Scroll_Lock: key_event = BX_KEY_SCRL_LOCK; break;
#endif
#ifdef GDK_Print
case GDK_Print: key_event = BX_KEY_PRINT; break;
case GDK_Print: key_event = BX_KEY_PRINT; break;
#endif
#ifdef GDK_Pause
case GDK_Pause: key_event = BX_KEY_PAUSE; break;
case GDK_Pause: key_event = BX_KEY_PAUSE; break;
#endif
case GDK_Insert: key_event = BX_KEY_INSERT; break;
case GDK_Home: key_event = BX_KEY_HOME; break;
case GDK_End: key_event = BX_KEY_END; break;
case GDK_Page_Up: key_event = BX_KEY_PAGE_UP; break;
case GDK_Page_Down: key_event = BX_KEY_PAGE_DOWN; break;
case GDK_Insert: key_event = BX_KEY_INSERT; break;
case GDK_Home: key_event = BX_KEY_HOME; break;
case GDK_End: key_event = BX_KEY_END; break;
case GDK_Page_Up: key_event = BX_KEY_PAGE_UP; break;
case GDK_Page_Down: key_event = BX_KEY_PAGE_DOWN; break;
#ifdef GDK_Menu
case GDK_Menu: key_event = BX_KEY_MENU; break;
case GDK_Menu: key_event = BX_KEY_MENU; break;
#endif
#ifdef GDK_Super_L
case GDK_Super_L: key_event = BX_KEY_WIN_L; break;
case GDK_Super_L: key_event = BX_KEY_WIN_L; break;
#endif
#ifdef GDK_Super_R
case GDK_Super_R: key_event = BX_KEY_WIN_R; break;
case GDK_Super_R: key_event = BX_KEY_WIN_R; break;
#endif
default:
wxLogError( "fillBxKeyEvent_GTK(): keysym %x unhandled!", (unsigned) keysym );
return BX_KEY_UNHANDLED;
default:
wxLogError( "fillBxKeyEvent_GTK(): keysym %x unhandled!", (unsigned) keysym );
return BX_KEY_UNHANDLED;
}
} else {
/* use mapping */
BXKeyEntry *entry = bx_keymap.findHostKey (keysym);
if (!entry) {
BX_ERROR(( "fillBxKeyEvent_GTK(): keysym %x unhandled!", (unsigned) keysym ));
return BX_KEY_UNHANDLED;
}
key_event = entry->baseKey;
}
bxev.bx_key = key_event | (release? BX_KEY_RELEASED : BX_KEY_PRESSED);
bxev.raw_scancode = false;
@ -768,7 +779,11 @@ bx_gui_c::specific_init(bx_gui_c *th, int argc, char **argv, unsigned tilewidth,
// load keymap tables
if(bx_options.keyboard.OuseMapping->get())
#if defined (wxHAS_RAW_KEY_CODES) && defined(__WXGTK__)
bx_keymap.loadKeymap(convertStringToGDKKey);
#else
bx_keymap.loadKeymap(NULL);
#endif
}
// ::HANDLE_EVENTS()
@ -1200,3 +1215,36 @@ bx_gui_c::set_clipboard_text(char *text_snapshot, Bit32u len)
wxMutexGuiLeave ();
return ret;
}
#if defined (wxHAS_RAW_KEY_CODES) && defined(__WXGTK__)
/// key mapping for wxGTK
typedef struct keyTableEntry {
const char *name;
Bit32u value;
};
#define DEF_WX_KEY(key) \
{ #key, key },
keyTableEntry keytable[] = {
// this include provides all the entries.
#include "wxgtkkeys.h"
// one final entry to mark the end
{ NULL, 0 }
};
// function to convert key names into GDKKey values.
// This first try will be horribly inefficient, but it only has
// to be done while loading a keymap. Once the simulation starts,
// this function won't be called.
static Bit32u convertStringToGDKKey (const char *string)
{
keyTableEntry *ptr;
for (ptr = &keytable[0]; ptr->name != NULL; ptr++) {
//BX_DEBUG (("comparing string '%s' to wxGTK key '%s'", string, ptr->name));
if (!strcmp (string, ptr->name))
return ptr->value;
}
return BX_KEYMAP_UNKNOWN;
}
#endif

603
bochs/gui/wxgtkkeys.h Normal file
View File

@ -0,0 +1,603 @@
/////////////////////////////////////////////////////////////////////////
// $Id: wxgtkkeys.h,v 1.1 2002-10-15 16:48:10 vruppert Exp $
/////////////////////////////////////////////////////////////////////////
//
// This file is simply a list of wxGTK key symbols taken from <gdk/gdkkeysyms.h>.
// The order in this file is not important. In wx.cc, DEF_WX_KEY() is
// defined as a macro and then it includes this file to fill in all the data in
// its key mapping table.
//
// The symbols, such as GDK_Return, are used for two purposes. They
// are converted into a string (by the # operator in processor), which is
// compared to the host key name in the keymap file. Also, the value of
// the symbol is inserted into the key mapping table. Then the value is
// compared with the keysym field of each key up/down event as it arrives.
//
// If you get undefined symbol errors in this file, it must mean that
// your GTK library version doesn't define those same GDK_* symbols in
// <gdk/gdkkeysyms.h>. You can't fix it with #ifdef GDK_SYM because
// they are enums, so you'll just have to comment out the offending line.
// The list was generated using symbols from gtk 1.2.
DEF_WX_KEY( GDK_VoidSymbol )
DEF_WX_KEY( GDK_BackSpace )
DEF_WX_KEY( GDK_Tab )
DEF_WX_KEY( GDK_Linefeed )
DEF_WX_KEY( GDK_Clear )
DEF_WX_KEY( GDK_Return )
DEF_WX_KEY( GDK_Pause )
DEF_WX_KEY( GDK_Scroll_Lock )
DEF_WX_KEY( GDK_Sys_Req )
DEF_WX_KEY( GDK_Escape )
DEF_WX_KEY( GDK_Delete )
DEF_WX_KEY( GDK_Multi_key )
DEF_WX_KEY( GDK_SingleCandidate )
DEF_WX_KEY( GDK_MultipleCandidate )
DEF_WX_KEY( GDK_PreviousCandidate )
DEF_WX_KEY( GDK_Kanji )
DEF_WX_KEY( GDK_Muhenkan )
DEF_WX_KEY( GDK_Henkan_Mode )
DEF_WX_KEY( GDK_Henkan )
DEF_WX_KEY( GDK_Romaji )
DEF_WX_KEY( GDK_Hiragana )
DEF_WX_KEY( GDK_Katakana )
DEF_WX_KEY( GDK_Hiragana_Katakana )
DEF_WX_KEY( GDK_Zenkaku )
DEF_WX_KEY( GDK_Hankaku )
DEF_WX_KEY( GDK_Zenkaku_Hankaku )
DEF_WX_KEY( GDK_Touroku )
DEF_WX_KEY( GDK_Massyo )
DEF_WX_KEY( GDK_Kana_Lock )
DEF_WX_KEY( GDK_Kana_Shift )
DEF_WX_KEY( GDK_Eisu_Shift )
DEF_WX_KEY( GDK_Eisu_toggle )
DEF_WX_KEY( GDK_Zen_Koho )
DEF_WX_KEY( GDK_Mae_Koho )
DEF_WX_KEY( GDK_Home )
DEF_WX_KEY( GDK_Left )
DEF_WX_KEY( GDK_Up )
DEF_WX_KEY( GDK_Right )
DEF_WX_KEY( GDK_Down )
DEF_WX_KEY( GDK_Prior )
DEF_WX_KEY( GDK_Page_Up )
DEF_WX_KEY( GDK_Next )
DEF_WX_KEY( GDK_Page_Down )
DEF_WX_KEY( GDK_End )
DEF_WX_KEY( GDK_Begin )
DEF_WX_KEY( GDK_Select )
DEF_WX_KEY( GDK_Print )
DEF_WX_KEY( GDK_Execute )
DEF_WX_KEY( GDK_Insert )
DEF_WX_KEY( GDK_Undo )
DEF_WX_KEY( GDK_Redo )
DEF_WX_KEY( GDK_Menu )
DEF_WX_KEY( GDK_Find )
DEF_WX_KEY( GDK_Cancel )
DEF_WX_KEY( GDK_Help )
DEF_WX_KEY( GDK_Break )
DEF_WX_KEY( GDK_Mode_switch )
DEF_WX_KEY( GDK_script_switch )
DEF_WX_KEY( GDK_Num_Lock )
DEF_WX_KEY( GDK_KP_Space )
DEF_WX_KEY( GDK_KP_Tab )
DEF_WX_KEY( GDK_KP_Enter )
DEF_WX_KEY( GDK_KP_F1 )
DEF_WX_KEY( GDK_KP_F2 )
DEF_WX_KEY( GDK_KP_F3 )
DEF_WX_KEY( GDK_KP_F4 )
DEF_WX_KEY( GDK_KP_Home )
DEF_WX_KEY( GDK_KP_Left )
DEF_WX_KEY( GDK_KP_Up )
DEF_WX_KEY( GDK_KP_Right )
DEF_WX_KEY( GDK_KP_Down )
DEF_WX_KEY( GDK_KP_Prior )
DEF_WX_KEY( GDK_KP_Page_Up )
DEF_WX_KEY( GDK_KP_Next )
DEF_WX_KEY( GDK_KP_Page_Down )
DEF_WX_KEY( GDK_KP_End )
DEF_WX_KEY( GDK_KP_Begin )
DEF_WX_KEY( GDK_KP_Insert )
DEF_WX_KEY( GDK_KP_Delete )
DEF_WX_KEY( GDK_KP_Equal )
DEF_WX_KEY( GDK_KP_Multiply )
DEF_WX_KEY( GDK_KP_Add )
DEF_WX_KEY( GDK_KP_Separator )
DEF_WX_KEY( GDK_KP_Subtract )
DEF_WX_KEY( GDK_KP_Decimal )
DEF_WX_KEY( GDK_KP_Divide )
DEF_WX_KEY( GDK_KP_0 )
DEF_WX_KEY( GDK_KP_1 )
DEF_WX_KEY( GDK_KP_2 )
DEF_WX_KEY( GDK_KP_3 )
DEF_WX_KEY( GDK_KP_4 )
DEF_WX_KEY( GDK_KP_5 )
DEF_WX_KEY( GDK_KP_6 )
DEF_WX_KEY( GDK_KP_7 )
DEF_WX_KEY( GDK_KP_8 )
DEF_WX_KEY( GDK_KP_9 )
DEF_WX_KEY( GDK_F1 )
DEF_WX_KEY( GDK_F2 )
DEF_WX_KEY( GDK_F3 )
DEF_WX_KEY( GDK_F4 )
DEF_WX_KEY( GDK_F5 )
DEF_WX_KEY( GDK_F6 )
DEF_WX_KEY( GDK_F7 )
DEF_WX_KEY( GDK_F8 )
DEF_WX_KEY( GDK_F9 )
DEF_WX_KEY( GDK_F10 )
DEF_WX_KEY( GDK_F11 )
DEF_WX_KEY( GDK_L1 )
DEF_WX_KEY( GDK_F12 )
DEF_WX_KEY( GDK_L2 )
DEF_WX_KEY( GDK_F13 )
DEF_WX_KEY( GDK_L3 )
DEF_WX_KEY( GDK_F14 )
DEF_WX_KEY( GDK_L4 )
DEF_WX_KEY( GDK_F15 )
DEF_WX_KEY( GDK_L5 )
DEF_WX_KEY( GDK_F16 )
DEF_WX_KEY( GDK_L6 )
DEF_WX_KEY( GDK_F17 )
DEF_WX_KEY( GDK_L7 )
DEF_WX_KEY( GDK_F18 )
DEF_WX_KEY( GDK_L8 )
DEF_WX_KEY( GDK_F19 )
DEF_WX_KEY( GDK_L9 )
DEF_WX_KEY( GDK_F20 )
DEF_WX_KEY( GDK_L10 )
DEF_WX_KEY( GDK_F21 )
DEF_WX_KEY( GDK_R1 )
DEF_WX_KEY( GDK_F22 )
DEF_WX_KEY( GDK_R2 )
DEF_WX_KEY( GDK_F23 )
DEF_WX_KEY( GDK_R3 )
DEF_WX_KEY( GDK_F24 )
DEF_WX_KEY( GDK_R4 )
DEF_WX_KEY( GDK_F25 )
DEF_WX_KEY( GDK_R5 )
DEF_WX_KEY( GDK_F26 )
DEF_WX_KEY( GDK_R6 )
DEF_WX_KEY( GDK_F27 )
DEF_WX_KEY( GDK_R7 )
DEF_WX_KEY( GDK_F28 )
DEF_WX_KEY( GDK_R8 )
DEF_WX_KEY( GDK_F29 )
DEF_WX_KEY( GDK_R9 )
DEF_WX_KEY( GDK_F30 )
DEF_WX_KEY( GDK_R10 )
DEF_WX_KEY( GDK_F31 )
DEF_WX_KEY( GDK_R11 )
DEF_WX_KEY( GDK_F32 )
DEF_WX_KEY( GDK_R12 )
DEF_WX_KEY( GDK_F33 )
DEF_WX_KEY( GDK_R13 )
DEF_WX_KEY( GDK_F34 )
DEF_WX_KEY( GDK_R14 )
DEF_WX_KEY( GDK_F35 )
DEF_WX_KEY( GDK_R15 )
DEF_WX_KEY( GDK_Shift_L )
DEF_WX_KEY( GDK_Shift_R )
DEF_WX_KEY( GDK_Control_L )
DEF_WX_KEY( GDK_Control_R )
DEF_WX_KEY( GDK_Caps_Lock )
DEF_WX_KEY( GDK_Shift_Lock )
DEF_WX_KEY( GDK_Meta_L )
DEF_WX_KEY( GDK_Meta_R )
DEF_WX_KEY( GDK_Alt_L )
DEF_WX_KEY( GDK_Alt_R )
DEF_WX_KEY( GDK_Super_L )
DEF_WX_KEY( GDK_Super_R )
DEF_WX_KEY( GDK_Hyper_L )
DEF_WX_KEY( GDK_Hyper_R )
DEF_WX_KEY( GDK_ISO_Left_Tab )
DEF_WX_KEY( GDK_dead_grave )
DEF_WX_KEY( GDK_dead_acute )
DEF_WX_KEY( GDK_dead_circumflex )
DEF_WX_KEY( GDK_dead_tilde )
DEF_WX_KEY( GDK_dead_macron )
DEF_WX_KEY( GDK_dead_breve )
DEF_WX_KEY( GDK_dead_abovedot )
DEF_WX_KEY( GDK_dead_diaeresis )
DEF_WX_KEY( GDK_dead_abovering )
DEF_WX_KEY( GDK_dead_doubleacute )
DEF_WX_KEY( GDK_dead_caron )
DEF_WX_KEY( GDK_dead_cedilla )
DEF_WX_KEY( GDK_dead_ogonek )
DEF_WX_KEY( GDK_dead_iota )
DEF_WX_KEY( GDK_dead_voiced_sound )
DEF_WX_KEY( GDK_dead_semivoiced_sound )
DEF_WX_KEY( GDK_dead_belowdot )
DEF_WX_KEY( GDK_First_Virtual_Screen )
DEF_WX_KEY( GDK_Prev_Virtual_Screen )
DEF_WX_KEY( GDK_Next_Virtual_Screen )
DEF_WX_KEY( GDK_Last_Virtual_Screen )
DEF_WX_KEY( GDK_Terminate_Server )
DEF_WX_KEY( GDK_AccessX_Enable )
DEF_WX_KEY( GDK_AccessX_Feedback_Enable )
DEF_WX_KEY( GDK_RepeatKeys_Enable )
DEF_WX_KEY( GDK_SlowKeys_Enable )
DEF_WX_KEY( GDK_BounceKeys_Enable )
DEF_WX_KEY( GDK_StickyKeys_Enable )
DEF_WX_KEY( GDK_MouseKeys_Enable )
DEF_WX_KEY( GDK_MouseKeys_Accel_Enable )
DEF_WX_KEY( GDK_Overlay1_Enable )
DEF_WX_KEY( GDK_Overlay2_Enable )
DEF_WX_KEY( GDK_AudibleBell_Enable )
DEF_WX_KEY( GDK_Pointer_Left )
DEF_WX_KEY( GDK_Pointer_Right )
DEF_WX_KEY( GDK_Pointer_Up )
DEF_WX_KEY( GDK_Pointer_Down )
DEF_WX_KEY( GDK_Pointer_UpLeft )
DEF_WX_KEY( GDK_Pointer_UpRight )
DEF_WX_KEY( GDK_Pointer_DownLeft )
DEF_WX_KEY( GDK_Pointer_DownRight )
DEF_WX_KEY( GDK_Pointer_Button_Dflt )
DEF_WX_KEY( GDK_Pointer_Button1 )
DEF_WX_KEY( GDK_Pointer_Button2 )
DEF_WX_KEY( GDK_Pointer_Button3 )
DEF_WX_KEY( GDK_Pointer_Button4 )
DEF_WX_KEY( GDK_Pointer_Button5 )
DEF_WX_KEY( GDK_Pointer_DblClick_Dflt )
DEF_WX_KEY( GDK_Pointer_DblClick1 )
DEF_WX_KEY( GDK_Pointer_DblClick2 )
DEF_WX_KEY( GDK_Pointer_DblClick3 )
DEF_WX_KEY( GDK_Pointer_DblClick4 )
DEF_WX_KEY( GDK_Pointer_DblClick5 )
DEF_WX_KEY( GDK_Pointer_Drag_Dflt )
DEF_WX_KEY( GDK_Pointer_Drag1 )
DEF_WX_KEY( GDK_Pointer_Drag2 )
DEF_WX_KEY( GDK_Pointer_Drag3 )
DEF_WX_KEY( GDK_Pointer_Drag4 )
DEF_WX_KEY( GDK_Pointer_Drag5 )
DEF_WX_KEY( GDK_Pointer_EnableKeys )
DEF_WX_KEY( GDK_Pointer_Accelerate )
DEF_WX_KEY( GDK_Pointer_DfltBtnNext )
DEF_WX_KEY( GDK_Pointer_DfltBtnPrev )
DEF_WX_KEY( GDK_3270_Duplicate )
DEF_WX_KEY( GDK_3270_FieldMark )
DEF_WX_KEY( GDK_3270_Right2 )
DEF_WX_KEY( GDK_3270_Left2 )
DEF_WX_KEY( GDK_3270_BackTab )
DEF_WX_KEY( GDK_3270_EraseEOF )
DEF_WX_KEY( GDK_3270_EraseInput )
DEF_WX_KEY( GDK_3270_Reset )
DEF_WX_KEY( GDK_3270_Quit )
DEF_WX_KEY( GDK_3270_PA1 )
DEF_WX_KEY( GDK_3270_PA2 )
DEF_WX_KEY( GDK_3270_PA3 )
DEF_WX_KEY( GDK_3270_Test )
DEF_WX_KEY( GDK_3270_Attn )
DEF_WX_KEY( GDK_3270_CursorBlink )
DEF_WX_KEY( GDK_3270_AltCursor )
DEF_WX_KEY( GDK_3270_KeyClick )
DEF_WX_KEY( GDK_3270_Jump )
DEF_WX_KEY( GDK_3270_Ident )
DEF_WX_KEY( GDK_3270_Rule )
DEF_WX_KEY( GDK_3270_Copy )
DEF_WX_KEY( GDK_3270_Play )
DEF_WX_KEY( GDK_3270_Setup )
DEF_WX_KEY( GDK_3270_Record )
DEF_WX_KEY( GDK_3270_ChangeScreen )
DEF_WX_KEY( GDK_3270_DeleteWord )
DEF_WX_KEY( GDK_3270_ExSelect )
DEF_WX_KEY( GDK_3270_CursorSelect )
DEF_WX_KEY( GDK_3270_PrintScreen )
DEF_WX_KEY( GDK_3270_Enter )
DEF_WX_KEY( GDK_space )
DEF_WX_KEY( GDK_exclam )
DEF_WX_KEY( GDK_quotedbl )
DEF_WX_KEY( GDK_numbersign )
DEF_WX_KEY( GDK_dollar )
DEF_WX_KEY( GDK_percent )
DEF_WX_KEY( GDK_ampersand )
DEF_WX_KEY( GDK_apostrophe )
DEF_WX_KEY( GDK_quoteright )
DEF_WX_KEY( GDK_parenleft )
DEF_WX_KEY( GDK_parenright )
DEF_WX_KEY( GDK_asterisk )
DEF_WX_KEY( GDK_plus )
DEF_WX_KEY( GDK_comma )
DEF_WX_KEY( GDK_minus )
DEF_WX_KEY( GDK_period )
DEF_WX_KEY( GDK_slash )
DEF_WX_KEY( GDK_0 )
DEF_WX_KEY( GDK_1 )
DEF_WX_KEY( GDK_2 )
DEF_WX_KEY( GDK_3 )
DEF_WX_KEY( GDK_4 )
DEF_WX_KEY( GDK_5 )
DEF_WX_KEY( GDK_6 )
DEF_WX_KEY( GDK_7 )
DEF_WX_KEY( GDK_8 )
DEF_WX_KEY( GDK_9 )
DEF_WX_KEY( GDK_colon )
DEF_WX_KEY( GDK_semicolon )
DEF_WX_KEY( GDK_less )
DEF_WX_KEY( GDK_equal )
DEF_WX_KEY( GDK_greater )
DEF_WX_KEY( GDK_question )
DEF_WX_KEY( GDK_at )
DEF_WX_KEY( GDK_A )
DEF_WX_KEY( GDK_B )
DEF_WX_KEY( GDK_C )
DEF_WX_KEY( GDK_D )
DEF_WX_KEY( GDK_E )
DEF_WX_KEY( GDK_F )
DEF_WX_KEY( GDK_G )
DEF_WX_KEY( GDK_H )
DEF_WX_KEY( GDK_I )
DEF_WX_KEY( GDK_J )
DEF_WX_KEY( GDK_K )
DEF_WX_KEY( GDK_L )
DEF_WX_KEY( GDK_M )
DEF_WX_KEY( GDK_N )
DEF_WX_KEY( GDK_O )
DEF_WX_KEY( GDK_P )
DEF_WX_KEY( GDK_Q )
DEF_WX_KEY( GDK_R )
DEF_WX_KEY( GDK_S )
DEF_WX_KEY( GDK_T )
DEF_WX_KEY( GDK_U )
DEF_WX_KEY( GDK_V )
DEF_WX_KEY( GDK_W )
DEF_WX_KEY( GDK_X )
DEF_WX_KEY( GDK_Y )
DEF_WX_KEY( GDK_Z )
DEF_WX_KEY( GDK_bracketleft )
DEF_WX_KEY( GDK_backslash )
DEF_WX_KEY( GDK_bracketright )
DEF_WX_KEY( GDK_asciicircum )
DEF_WX_KEY( GDK_underscore )
DEF_WX_KEY( GDK_grave )
DEF_WX_KEY( GDK_quoteleft )
DEF_WX_KEY( GDK_a )
DEF_WX_KEY( GDK_b )
DEF_WX_KEY( GDK_c )
DEF_WX_KEY( GDK_d )
DEF_WX_KEY( GDK_e )
DEF_WX_KEY( GDK_f )
DEF_WX_KEY( GDK_g )
DEF_WX_KEY( GDK_h )
DEF_WX_KEY( GDK_i )
DEF_WX_KEY( GDK_j )
DEF_WX_KEY( GDK_k )
DEF_WX_KEY( GDK_l )
DEF_WX_KEY( GDK_m )
DEF_WX_KEY( GDK_n )
DEF_WX_KEY( GDK_o )
DEF_WX_KEY( GDK_p )
DEF_WX_KEY( GDK_q )
DEF_WX_KEY( GDK_r )
DEF_WX_KEY( GDK_s )
DEF_WX_KEY( GDK_t )
DEF_WX_KEY( GDK_u )
DEF_WX_KEY( GDK_v )
DEF_WX_KEY( GDK_w )
DEF_WX_KEY( GDK_x )
DEF_WX_KEY( GDK_y )
DEF_WX_KEY( GDK_z )
DEF_WX_KEY( GDK_braceleft )
DEF_WX_KEY( GDK_bar )
DEF_WX_KEY( GDK_braceright )
DEF_WX_KEY( GDK_asciitilde )
DEF_WX_KEY( GDK_nobreakspace )
DEF_WX_KEY( GDK_exclamdown )
DEF_WX_KEY( GDK_cent )
DEF_WX_KEY( GDK_sterling )
DEF_WX_KEY( GDK_currency )
DEF_WX_KEY( GDK_yen )
DEF_WX_KEY( GDK_brokenbar )
DEF_WX_KEY( GDK_section )
DEF_WX_KEY( GDK_diaeresis )
DEF_WX_KEY( GDK_copyright )
DEF_WX_KEY( GDK_ordfeminine )
DEF_WX_KEY( GDK_guillemotleft )
DEF_WX_KEY( GDK_notsign )
DEF_WX_KEY( GDK_hyphen )
DEF_WX_KEY( GDK_registered )
DEF_WX_KEY( GDK_macron )
DEF_WX_KEY( GDK_degree )
DEF_WX_KEY( GDK_plusminus )
DEF_WX_KEY( GDK_twosuperior )
DEF_WX_KEY( GDK_threesuperior )
DEF_WX_KEY( GDK_acute )
DEF_WX_KEY( GDK_mu )
DEF_WX_KEY( GDK_paragraph )
DEF_WX_KEY( GDK_periodcentered )
DEF_WX_KEY( GDK_cedilla )
DEF_WX_KEY( GDK_onesuperior )
DEF_WX_KEY( GDK_masculine )
DEF_WX_KEY( GDK_guillemotright )
DEF_WX_KEY( GDK_onequarter )
DEF_WX_KEY( GDK_onehalf )
DEF_WX_KEY( GDK_threequarters )
DEF_WX_KEY( GDK_questiondown )
DEF_WX_KEY( GDK_Agrave )
DEF_WX_KEY( GDK_Aacute )
DEF_WX_KEY( GDK_Acircumflex )
DEF_WX_KEY( GDK_Atilde )
DEF_WX_KEY( GDK_Adiaeresis )
DEF_WX_KEY( GDK_Aring )
DEF_WX_KEY( GDK_AE )
DEF_WX_KEY( GDK_Ccedilla )
DEF_WX_KEY( GDK_Egrave )
DEF_WX_KEY( GDK_Eacute )
DEF_WX_KEY( GDK_Ecircumflex )
DEF_WX_KEY( GDK_Ediaeresis )
DEF_WX_KEY( GDK_Igrave )
DEF_WX_KEY( GDK_Iacute )
DEF_WX_KEY( GDK_Icircumflex )
DEF_WX_KEY( GDK_Idiaeresis )
DEF_WX_KEY( GDK_ETH )
DEF_WX_KEY( GDK_Eth )
DEF_WX_KEY( GDK_Ntilde )
DEF_WX_KEY( GDK_Ograve )
DEF_WX_KEY( GDK_Oacute )
DEF_WX_KEY( GDK_Ocircumflex )
DEF_WX_KEY( GDK_Otilde )
DEF_WX_KEY( GDK_Odiaeresis )
DEF_WX_KEY( GDK_multiply )
DEF_WX_KEY( GDK_Ooblique )
DEF_WX_KEY( GDK_Ugrave )
DEF_WX_KEY( GDK_Uacute )
DEF_WX_KEY( GDK_Ucircumflex )
DEF_WX_KEY( GDK_Udiaeresis )
DEF_WX_KEY( GDK_Yacute )
DEF_WX_KEY( GDK_THORN )
DEF_WX_KEY( GDK_Thorn )
DEF_WX_KEY( GDK_ssharp )
DEF_WX_KEY( GDK_agrave )
DEF_WX_KEY( GDK_aacute )
DEF_WX_KEY( GDK_acircumflex )
DEF_WX_KEY( GDK_atilde )
DEF_WX_KEY( GDK_adiaeresis )
DEF_WX_KEY( GDK_aring )
DEF_WX_KEY( GDK_ae )
DEF_WX_KEY( GDK_ccedilla )
DEF_WX_KEY( GDK_egrave )
DEF_WX_KEY( GDK_eacute )
DEF_WX_KEY( GDK_ecircumflex )
DEF_WX_KEY( GDK_ediaeresis )
DEF_WX_KEY( GDK_igrave )
DEF_WX_KEY( GDK_iacute )
DEF_WX_KEY( GDK_icircumflex )
DEF_WX_KEY( GDK_idiaeresis )
DEF_WX_KEY( GDK_eth )
DEF_WX_KEY( GDK_ntilde )
DEF_WX_KEY( GDK_ograve )
DEF_WX_KEY( GDK_oacute )
DEF_WX_KEY( GDK_ocircumflex )
DEF_WX_KEY( GDK_otilde )
DEF_WX_KEY( GDK_odiaeresis )
DEF_WX_KEY( GDK_division )
DEF_WX_KEY( GDK_oslash )
DEF_WX_KEY( GDK_ugrave )
DEF_WX_KEY( GDK_uacute )
DEF_WX_KEY( GDK_ucircumflex )
DEF_WX_KEY( GDK_udiaeresis )
DEF_WX_KEY( GDK_yacute )
DEF_WX_KEY( GDK_thorn )
DEF_WX_KEY( GDK_ydiaeresis )
DEF_WX_KEY( GDK_Aogonek )
DEF_WX_KEY( GDK_breve )
DEF_WX_KEY( GDK_Lstroke )
DEF_WX_KEY( GDK_Lcaron )
DEF_WX_KEY( GDK_Sacute )
DEF_WX_KEY( GDK_Scaron )
DEF_WX_KEY( GDK_Scedilla )
DEF_WX_KEY( GDK_Tcaron )
DEF_WX_KEY( GDK_Zacute )
DEF_WX_KEY( GDK_Zcaron )
DEF_WX_KEY( GDK_Zabovedot )
DEF_WX_KEY( GDK_aogonek )
DEF_WX_KEY( GDK_ogonek )
DEF_WX_KEY( GDK_lstroke )
DEF_WX_KEY( GDK_lcaron )
DEF_WX_KEY( GDK_sacute )
DEF_WX_KEY( GDK_caron )
DEF_WX_KEY( GDK_scaron )
DEF_WX_KEY( GDK_scedilla )
DEF_WX_KEY( GDK_tcaron )
DEF_WX_KEY( GDK_zacute )
DEF_WX_KEY( GDK_doubleacute )
DEF_WX_KEY( GDK_zcaron )
DEF_WX_KEY( GDK_zabovedot )
DEF_WX_KEY( GDK_Racute )
DEF_WX_KEY( GDK_Abreve )
DEF_WX_KEY( GDK_Lacute )
DEF_WX_KEY( GDK_Cacute )
DEF_WX_KEY( GDK_Ccaron )
DEF_WX_KEY( GDK_Eogonek )
DEF_WX_KEY( GDK_Ecaron )
DEF_WX_KEY( GDK_Dcaron )
DEF_WX_KEY( GDK_Dstroke )
DEF_WX_KEY( GDK_Nacute )
DEF_WX_KEY( GDK_Ncaron )
DEF_WX_KEY( GDK_Odoubleacute )
DEF_WX_KEY( GDK_Rcaron )
DEF_WX_KEY( GDK_Uring )
DEF_WX_KEY( GDK_Udoubleacute )
DEF_WX_KEY( GDK_Tcedilla )
DEF_WX_KEY( GDK_racute )
DEF_WX_KEY( GDK_abreve )
DEF_WX_KEY( GDK_lacute )
DEF_WX_KEY( GDK_cacute )
DEF_WX_KEY( GDK_ccaron )
DEF_WX_KEY( GDK_eogonek )
DEF_WX_KEY( GDK_ecaron )
DEF_WX_KEY( GDK_dcaron )
DEF_WX_KEY( GDK_dstroke )
DEF_WX_KEY( GDK_nacute )
DEF_WX_KEY( GDK_ncaron )
DEF_WX_KEY( GDK_odoubleacute )
DEF_WX_KEY( GDK_udoubleacute )
DEF_WX_KEY( GDK_rcaron )
DEF_WX_KEY( GDK_uring )
DEF_WX_KEY( GDK_tcedilla )
DEF_WX_KEY( GDK_abovedot )
DEF_WX_KEY( GDK_Hstroke )
DEF_WX_KEY( GDK_Hcircumflex )
DEF_WX_KEY( GDK_Iabovedot )
DEF_WX_KEY( GDK_Gbreve )
DEF_WX_KEY( GDK_Jcircumflex )
DEF_WX_KEY( GDK_hstroke )
DEF_WX_KEY( GDK_hcircumflex )
DEF_WX_KEY( GDK_idotless )
DEF_WX_KEY( GDK_gbreve )
DEF_WX_KEY( GDK_jcircumflex )
DEF_WX_KEY( GDK_Cabovedot )
DEF_WX_KEY( GDK_Ccircumflex )
DEF_WX_KEY( GDK_Gabovedot )
DEF_WX_KEY( GDK_Gcircumflex )
DEF_WX_KEY( GDK_Ubreve )
DEF_WX_KEY( GDK_Scircumflex )
DEF_WX_KEY( GDK_cabovedot )
DEF_WX_KEY( GDK_ccircumflex )
DEF_WX_KEY( GDK_gabovedot )
DEF_WX_KEY( GDK_gcircumflex )
DEF_WX_KEY( GDK_ubreve )
DEF_WX_KEY( GDK_scircumflex )
DEF_WX_KEY( GDK_kra )
DEF_WX_KEY( GDK_kappa )
DEF_WX_KEY( GDK_Rcedilla )
DEF_WX_KEY( GDK_Itilde )
DEF_WX_KEY( GDK_Lcedilla )
DEF_WX_KEY( GDK_Emacron )
DEF_WX_KEY( GDK_Gcedilla )
DEF_WX_KEY( GDK_Tslash )
DEF_WX_KEY( GDK_rcedilla )
DEF_WX_KEY( GDK_itilde )
DEF_WX_KEY( GDK_lcedilla )
DEF_WX_KEY( GDK_emacron )
DEF_WX_KEY( GDK_gcedilla )
DEF_WX_KEY( GDK_tslash )
DEF_WX_KEY( GDK_ENG )
DEF_WX_KEY( GDK_eng )
DEF_WX_KEY( GDK_Amacron )
DEF_WX_KEY( GDK_Iogonek )
DEF_WX_KEY( GDK_Eabovedot )
DEF_WX_KEY( GDK_Imacron )
DEF_WX_KEY( GDK_Ncedilla )
DEF_WX_KEY( GDK_Omacron )
DEF_WX_KEY( GDK_Kcedilla )
DEF_WX_KEY( GDK_Uogonek )
DEF_WX_KEY( GDK_Utilde )
DEF_WX_KEY( GDK_Umacron )
DEF_WX_KEY( GDK_amacron )
DEF_WX_KEY( GDK_iogonek )
DEF_WX_KEY( GDK_eabovedot )
DEF_WX_KEY( GDK_imacron )
DEF_WX_KEY( GDK_ncedilla )
DEF_WX_KEY( GDK_omacron )
DEF_WX_KEY( GDK_kcedilla )
DEF_WX_KEY( GDK_uogonek )
DEF_WX_KEY( GDK_utilde )
DEF_WX_KEY( GDK_umacron )
DEF_WX_KEY( GDK_overline )
DEF_WX_KEY( GDK_horizconnector )
DEF_WX_KEY( GDK_leftarrow )
DEF_WX_KEY( GDK_uparrow )
DEF_WX_KEY( GDK_rightarrow )
DEF_WX_KEY( GDK_downarrow )
DEF_WX_KEY( GDK_leftdoublequotemark )
DEF_WX_KEY( GDK_rightdoublequotemark )