Internally classify keys

This is useful later to split down that massive key list into more
logical chunks.
This commit is contained in:
Ilari Liusvaara 2012-04-07 18:07:33 +03:00
parent 036ce8dc0b
commit 29a1edd3e0
9 changed files with 488 additions and 472 deletions

View file

@ -214,10 +214,11 @@ public:
* Create a new key group. * Create a new key group.
* *
* parameter name: Name of the key group. * parameter name: Name of the key group.
* parameter _clazz: The key class.
* parameter t: Initial type of the key group. * parameter t: Initial type of the key group.
* throws std::bad_alloc: Not enough memory. * throws std::bad_alloc: Not enough memory.
*/ */
keygroup(const std::string& name, enum type t) throw(std::bad_alloc); keygroup(const std::string& name, const std::string& _clazz, enum type t) throw(std::bad_alloc);
/** /**
* Destructor * Destructor
*/ */
@ -331,6 +332,10 @@ public:
* Get status value. * Get status value.
*/ */
signed get_value(); signed get_value();
/**
* Get class.
*/
const std::string& get_class();
private: private:
signed state; signed state;
enum type ktype; enum type ktype;
@ -343,6 +348,7 @@ private:
double compensate2(double value); double compensate2(double value);
void run_listeners(const modifier_set& modifiers, unsigned subkey, bool polarity, bool really, double x); void run_listeners(const modifier_set& modifiers, unsigned subkey, bool polarity, bool really, double x);
std::string keyname; std::string keyname;
std::string clazz;
bool requests_hook; bool requests_hook;
}; };

View file

@ -257,6 +257,11 @@ std::string keygroup::name() throw(std::bad_alloc)
return keyname; return keyname;
} }
const std::string& keygroup::get_class()
{
return clazz;
}
struct keygroup::parameters keygroup::get_parameters() struct keygroup::parameters keygroup::get_parameters()
{ {
parameters p; parameters p;
@ -277,9 +282,10 @@ std::map<std::string, struct keygroup::parameters> keygroup::get_all_parameters(
return ret; return ret;
} }
keygroup::keygroup(const std::string& name, enum type t) throw(std::bad_alloc) keygroup::keygroup(const std::string& name, const std::string& _clazz, enum type t) throw(std::bad_alloc)
{ {
keygroups()[keyname = name] = this; keygroups()[keyname = name] = this;
clazz = _clazz;
ktype = t; ktype = t;
state = 0; state = 0;
last_rawval = 0; last_rawval = 0;

View file

@ -93,7 +93,7 @@ namespace
std::ostringstream _name; std::ostringstream _name;
_name << "joystick" << joynum << "button" << buttonnum; _name << "joystick" << joynum << "button" << buttonnum;
std::string name = _name.str(); std::string name = _name.str();
keygroup* grp = new keygroup(name, keygroup::KT_KEY); keygroup* grp = new keygroup(name, "joystick", keygroup::KT_KEY);
keygroups.insert(grp); keygroups.insert(grp);
struct event_mapping evmap; struct event_mapping evmap;
evmap.joystick = joynum; evmap.joystick = joynum;
@ -115,9 +115,9 @@ namespace
std::string name = _name.str(); std::string name = _name.str();
keygroup* grp; keygroup* grp;
if(min < 0) if(min < 0)
grp = new keygroup(name, keygroup::KT_AXIS_PAIR); grp = new keygroup(name, "joystick", keygroup::KT_AXIS_PAIR);
else else
grp = new keygroup(name, keygroup::KT_PRESSURE_MP); grp = new keygroup(name, "joystick", keygroup::KT_PRESSURE_MP);
keygroups.insert(grp); keygroups.insert(grp);
struct event_mapping evmap; struct event_mapping evmap;
evmap.joystick = joynum; evmap.joystick = joynum;
@ -138,7 +138,7 @@ namespace
std::ostringstream _name; std::ostringstream _name;
_name << "joystick" << joynum << "hat" << hatnum; _name << "joystick" << joynum << "hat" << hatnum;
std::string name = _name.str(); std::string name = _name.str();
keygroup* grp = new keygroup(name, keygroup::KT_HAT); keygroup* grp = new keygroup(name, "joystick", keygroup::KT_HAT);
keygroups.insert(grp); keygroups.insert(grp);
struct event_mapping evmap1; struct event_mapping evmap1;
evmap1.joystick = joynum; evmap1.joystick = joynum;

View file

@ -275,11 +275,11 @@ namespace
platform::queue(emu_handle_quit_signal, NULL, false); platform::queue(emu_handle_quit_signal, NULL, false);
} }
keygroup mouse_x("mouse_x", keygroup::KT_MOUSE); keygroup mouse_x("mouse_x", "mouse", keygroup::KT_MOUSE);
keygroup mouse_y("mouse_y", keygroup::KT_MOUSE); keygroup mouse_y("mouse_y", "mouse", keygroup::KT_MOUSE);
keygroup mouse_l("mouse_left", keygroup::KT_KEY); keygroup mouse_l("mouse_left", "mouse", keygroup::KT_KEY);
keygroup mouse_m("mouse_center", keygroup::KT_KEY); keygroup mouse_m("mouse_center", "mouse", keygroup::KT_KEY);
keygroup mouse_r("mouse_right", keygroup::KT_KEY); keygroup mouse_r("mouse_right", "mouse", keygroup::KT_KEY);
} }
void notify_emulator_exit() void notify_emulator_exit()

View file

@ -71,19 +71,19 @@ void joystick_plugin::init() throw()
unsigned num = 256 * i + k; unsigned num = 256 * i + k;
std::ostringstream x; std::ostringstream x;
x << "joystick" << i << "axis" << k; x << "joystick" << i << "axis" << k;
joyaxis[num] = new keygroup(x.str(), keygroup::KT_AXIS_PAIR); joyaxis[num] = new keygroup(x.str(), "joystick", keygroup::KT_AXIS_PAIR);
} }
for(int k = 0; k < SDL_JoystickNumButtons(j); k++) { for(int k = 0; k < SDL_JoystickNumButtons(j); k++) {
unsigned num = 256 * i + k; unsigned num = 256 * i + k;
std::ostringstream x; std::ostringstream x;
x << "joystick" << i << "button" << k; x << "joystick" << i << "button" << k;
joybutton[num] = new keygroup(x.str(), keygroup::KT_KEY); joybutton[num] = new keygroup(x.str(), "joystick", keygroup::KT_KEY);
} }
for(int k = 0; k < SDL_JoystickNumHats(j); k++) { for(int k = 0; k < SDL_JoystickNumHats(j); k++) {
unsigned num = 256 * i + k; unsigned num = 256 * i + k;
std::ostringstream x; std::ostringstream x;
x << "joystick" << i << "hat" << k; x << "joystick" << i << "hat" << k;
joyhat[num] = new keygroup(x.str(), keygroup::KT_HAT); joyhat[num] = new keygroup(x.str(), "joystick", keygroup::KT_HAT);
} }
} }
} }

View file

@ -34,239 +34,240 @@ namespace
struct sdl_key struct sdl_key
{ {
const char* name; const char* name;
const char* clazz;
unsigned symbol; unsigned symbol;
} keys_table[] = { } keys_table[] = {
{"backspace", SDLK_BACKSPACE }, {"backspace", "editing", SDLK_BACKSPACE },
{"tab", SDLK_TAB }, {"tab", "editing", SDLK_TAB },
{"clear", SDLK_CLEAR }, {"clear", "editing", SDLK_CLEAR },
{"return", SDLK_RETURN }, {"return", "editing", SDLK_RETURN },
{"pause", SDLK_PAUSE }, {"pause", "special", SDLK_PAUSE },
{"escape", SDLK_ESCAPE }, {"escape", "editing", SDLK_ESCAPE },
{"space", SDLK_SPACE }, {"space", "characters", SDLK_SPACE },
{"exclaim", SDLK_EXCLAIM }, {"exclaim", "characters", SDLK_EXCLAIM },
{"quotedbl", SDLK_QUOTEDBL }, {"quotedbl", "characters", SDLK_QUOTEDBL },
{"hash", SDLK_HASH }, {"hash", "characters", SDLK_HASH },
{"dollar", SDLK_DOLLAR }, {"dollar", "characters", SDLK_DOLLAR },
{"ampersand", SDLK_AMPERSAND }, {"ampersand", "characters", SDLK_AMPERSAND },
{"quote", SDLK_QUOTE }, {"quote", "characters", SDLK_QUOTE },
{"leftparen", SDLK_LEFTPAREN }, {"leftparen", "characters", SDLK_LEFTPAREN },
{"rightparen", SDLK_RIGHTPAREN }, {"rightparen", "characters", SDLK_RIGHTPAREN },
{"asterisk", SDLK_ASTERISK }, {"asterisk", "characters", SDLK_ASTERISK },
{"plus", SDLK_PLUS }, {"plus", "characters", SDLK_PLUS },
{"comma", SDLK_COMMA }, {"comma", "characters", SDLK_COMMA },
{"minus", SDLK_MINUS }, {"minus", "characters", SDLK_MINUS },
{"period", SDLK_PERIOD }, {"period", "characters", SDLK_PERIOD },
{"slash", SDLK_SLASH }, {"slash", "characters", SDLK_SLASH },
{"0", SDLK_0 }, {"0", "numeric", SDLK_0 },
{"1", SDLK_1 }, {"1", "numeric", SDLK_1 },
{"2", SDLK_2 }, {"2", "numeric", SDLK_2 },
{"3", SDLK_3 }, {"3", "numeric", SDLK_3 },
{"4", SDLK_4 }, {"4", "numeric", SDLK_4 },
{"5", SDLK_5 }, {"5", "numeric", SDLK_5 },
{"6", SDLK_6 }, {"6", "numeric", SDLK_6 },
{"7", SDLK_7 }, {"7", "numeric", SDLK_7 },
{"8", SDLK_8 }, {"8", "numeric", SDLK_8 },
{"9", SDLK_9 }, {"9", "numeric", SDLK_9 },
{"colon", SDLK_COLON }, {"colon", "characters", SDLK_COLON },
{"semicolon", SDLK_SEMICOLON }, {"semicolon", "characters", SDLK_SEMICOLON },
{"less", SDLK_LESS }, {"less", "characters", SDLK_LESS },
{"equals", SDLK_EQUALS }, {"equals", "characters", SDLK_EQUALS },
{"greater", SDLK_GREATER }, {"greater", "characters", SDLK_GREATER },
{"question", SDLK_QUESTION }, {"question", "characters", SDLK_QUESTION },
{"at", SDLK_AT }, {"at", "characters", SDLK_AT },
{"leftbracket", SDLK_LEFTBRACKET }, {"leftbracket", "characters", SDLK_LEFTBRACKET },
{"backslash", SDLK_BACKSLASH }, {"backslash", "characters", SDLK_BACKSLASH },
{"rightbracket", SDLK_RIGHTBRACKET }, {"rightbracket", "characters", SDLK_RIGHTBRACKET },
{"caret", SDLK_CARET }, {"caret", "characters", SDLK_CARET },
{"underscore", SDLK_UNDERSCORE }, {"underscore", "characters", SDLK_UNDERSCORE },
{"backquote", SDLK_BACKQUOTE }, {"backquote", "characters", SDLK_BACKQUOTE },
{"a", SDLK_a }, {"a", "alphabetic", SDLK_a },
{"b", SDLK_b }, {"b", "alphabetic", SDLK_b },
{"c", SDLK_c }, {"c", "alphabetic", SDLK_c },
{"d", SDLK_d }, {"d", "alphabetic", SDLK_d },
{"e", SDLK_e }, {"e", "alphabetic", SDLK_e },
{"f", SDLK_f }, {"f", "alphabetic", SDLK_f },
{"g", SDLK_g }, {"g", "alphabetic", SDLK_g },
{"h", SDLK_h }, {"h", "alphabetic", SDLK_h },
{"i", SDLK_i }, {"i", "alphabetic", SDLK_i },
{"j", SDLK_j }, {"j", "alphabetic", SDLK_j },
{"k", SDLK_k }, {"k", "alphabetic", SDLK_k },
{"l", SDLK_l }, {"l", "alphabetic", SDLK_l },
{"m", SDLK_m }, {"m", "alphabetic", SDLK_m },
{"n", SDLK_n }, {"n", "alphabetic", SDLK_n },
{"o", SDLK_o }, {"o", "alphabetic", SDLK_o },
{"p", SDLK_p }, {"p", "alphabetic", SDLK_p },
{"q", SDLK_q }, {"q", "alphabetic", SDLK_q },
{"r", SDLK_r }, {"r", "alphabetic", SDLK_r },
{"s", SDLK_s }, {"s", "alphabetic", SDLK_s },
{"t", SDLK_t }, {"t", "alphabetic", SDLK_t },
{"u", SDLK_u }, {"u", "alphabetic", SDLK_u },
{"v", SDLK_v }, {"v", "alphabetic", SDLK_v },
{"w", SDLK_w }, {"w", "alphabetic", SDLK_w },
{"x", SDLK_x }, {"x", "alphabetic", SDLK_x },
{"y", SDLK_y }, {"y", "alphabetic", SDLK_y },
{"z", SDLK_z }, {"z", "alphabetic", SDLK_z },
{"delete", SDLK_DELETE }, {"delete", "editing", SDLK_DELETE },
{"world_0", SDLK_WORLD_0 }, {"world_0", "international",SDLK_WORLD_0 },
{"world_1", SDLK_WORLD_1 }, {"world_1", "international",SDLK_WORLD_1 },
{"world_2", SDLK_WORLD_2 }, {"world_2", "international",SDLK_WORLD_2 },
{"world_3", SDLK_WORLD_3 }, {"world_3", "international",SDLK_WORLD_3 },
{"world_4", SDLK_WORLD_4 }, {"world_4", "international",SDLK_WORLD_4 },
{"world_5", SDLK_WORLD_5 }, {"world_5", "international",SDLK_WORLD_5 },
{"world_6", SDLK_WORLD_6 }, {"world_6", "international",SDLK_WORLD_6 },
{"world_7", SDLK_WORLD_7 }, {"world_7", "international",SDLK_WORLD_7 },
{"world_8", SDLK_WORLD_8 }, {"world_8", "international",SDLK_WORLD_8 },
{"world_9", SDLK_WORLD_9 }, {"world_9", "international",SDLK_WORLD_9 },
{"world_10", SDLK_WORLD_10 }, {"world_10", "international",SDLK_WORLD_10 },
{"world_11", SDLK_WORLD_11 }, {"world_11", "international",SDLK_WORLD_11 },
{"world_12", SDLK_WORLD_12 }, {"world_12", "international",SDLK_WORLD_12 },
{"world_13", SDLK_WORLD_13 }, {"world_13", "international",SDLK_WORLD_13 },
{"world_14", SDLK_WORLD_14 }, {"world_14", "international",SDLK_WORLD_14 },
{"world_15", SDLK_WORLD_15 }, {"world_15", "international",SDLK_WORLD_15 },
{"world_16", SDLK_WORLD_16 }, {"world_16", "international",SDLK_WORLD_16 },
{"world_17", SDLK_WORLD_17 }, {"world_17", "international",SDLK_WORLD_17 },
{"world_18", SDLK_WORLD_18 }, {"world_18", "international",SDLK_WORLD_18 },
{"world_19", SDLK_WORLD_19 }, {"world_19", "international",SDLK_WORLD_19 },
{"world_20", SDLK_WORLD_20 }, {"world_20", "international",SDLK_WORLD_20 },
{"world_21", SDLK_WORLD_21 }, {"world_21", "international",SDLK_WORLD_21 },
{"world_22", SDLK_WORLD_22 }, {"world_22", "international",SDLK_WORLD_22 },
{"world_23", SDLK_WORLD_23 }, {"world_23", "international",SDLK_WORLD_23 },
{"world_24", SDLK_WORLD_24 }, {"world_24", "international",SDLK_WORLD_24 },
{"world_25", SDLK_WORLD_25 }, {"world_25", "international",SDLK_WORLD_25 },
{"world_26", SDLK_WORLD_26 }, {"world_26", "international",SDLK_WORLD_26 },
{"world_27", SDLK_WORLD_27 }, {"world_27", "international",SDLK_WORLD_27 },
{"world_28", SDLK_WORLD_28 }, {"world_28", "international",SDLK_WORLD_28 },
{"world_29", SDLK_WORLD_29 }, {"world_29", "international",SDLK_WORLD_29 },
{"world_30", SDLK_WORLD_30 }, {"world_30", "international",SDLK_WORLD_30 },
{"world_31", SDLK_WORLD_31 }, {"world_31", "international",SDLK_WORLD_31 },
{"world_32", SDLK_WORLD_32 }, {"world_32", "international",SDLK_WORLD_32 },
{"world_33", SDLK_WORLD_33 }, {"world_33", "international",SDLK_WORLD_33 },
{"world_34", SDLK_WORLD_34 }, {"world_34", "international",SDLK_WORLD_34 },
{"world_35", SDLK_WORLD_35 }, {"world_35", "international",SDLK_WORLD_35 },
{"world_36", SDLK_WORLD_36 }, {"world_36", "international",SDLK_WORLD_36 },
{"world_37", SDLK_WORLD_37 }, {"world_37", "international",SDLK_WORLD_37 },
{"world_38", SDLK_WORLD_38 }, {"world_38", "international",SDLK_WORLD_38 },
{"world_39", SDLK_WORLD_39 }, {"world_39", "international",SDLK_WORLD_39 },
{"world_40", SDLK_WORLD_40 }, {"world_40", "international",SDLK_WORLD_40 },
{"world_41", SDLK_WORLD_41 }, {"world_41", "international",SDLK_WORLD_41 },
{"world_42", SDLK_WORLD_42 }, {"world_42", "international",SDLK_WORLD_42 },
{"world_43", SDLK_WORLD_43 }, {"world_43", "international",SDLK_WORLD_43 },
{"world_44", SDLK_WORLD_44 }, {"world_44", "international",SDLK_WORLD_44 },
{"world_45", SDLK_WORLD_45 }, {"world_45", "international",SDLK_WORLD_45 },
{"world_46", SDLK_WORLD_46 }, {"world_46", "international",SDLK_WORLD_46 },
{"world_47", SDLK_WORLD_47 }, {"world_47", "international",SDLK_WORLD_47 },
{"world_48", SDLK_WORLD_48 }, {"world_48", "international",SDLK_WORLD_48 },
{"world_49", SDLK_WORLD_49 }, {"world_49", "international",SDLK_WORLD_49 },
{"world_50", SDLK_WORLD_50 }, {"world_50", "international",SDLK_WORLD_50 },
{"world_51", SDLK_WORLD_51 }, {"world_51", "international",SDLK_WORLD_51 },
{"world_52", SDLK_WORLD_52 }, {"world_52", "international",SDLK_WORLD_52 },
{"world_53", SDLK_WORLD_53 }, {"world_53", "international",SDLK_WORLD_53 },
{"world_54", SDLK_WORLD_54 }, {"world_54", "international",SDLK_WORLD_54 },
{"world_55", SDLK_WORLD_55 }, {"world_55", "international",SDLK_WORLD_55 },
{"world_56", SDLK_WORLD_56 }, {"world_56", "international",SDLK_WORLD_56 },
{"world_57", SDLK_WORLD_57 }, {"world_57", "international",SDLK_WORLD_57 },
{"world_58", SDLK_WORLD_58 }, {"world_58", "international",SDLK_WORLD_58 },
{"world_59", SDLK_WORLD_59 }, {"world_59", "international",SDLK_WORLD_59 },
{"world_60", SDLK_WORLD_60 }, {"world_60", "international",SDLK_WORLD_60 },
{"world_61", SDLK_WORLD_61 }, {"world_61", "international",SDLK_WORLD_61 },
{"world_62", SDLK_WORLD_62 }, {"world_62", "international",SDLK_WORLD_62 },
{"world_63", SDLK_WORLD_63 }, {"world_63", "international",SDLK_WORLD_63 },
{"world_64", SDLK_WORLD_64 }, {"world_64", "international",SDLK_WORLD_64 },
{"world_65", SDLK_WORLD_65 }, {"world_65", "international",SDLK_WORLD_65 },
{"world_66", SDLK_WORLD_66 }, {"world_66", "international",SDLK_WORLD_66 },
{"world_67", SDLK_WORLD_67 }, {"world_67", "international",SDLK_WORLD_67 },
{"world_68", SDLK_WORLD_68 }, {"world_68", "international",SDLK_WORLD_68 },
{"world_69", SDLK_WORLD_69 }, {"world_69", "international",SDLK_WORLD_69 },
{"world_70", SDLK_WORLD_70 }, {"world_70", "international",SDLK_WORLD_70 },
{"world_71", SDLK_WORLD_71 }, {"world_71", "international",SDLK_WORLD_71 },
{"world_72", SDLK_WORLD_72 }, {"world_72", "international",SDLK_WORLD_72 },
{"world_73", SDLK_WORLD_73 }, {"world_73", "international",SDLK_WORLD_73 },
{"world_74", SDLK_WORLD_74 }, {"world_74", "international",SDLK_WORLD_74 },
{"world_75", SDLK_WORLD_75 }, {"world_75", "international",SDLK_WORLD_75 },
{"world_76", SDLK_WORLD_76 }, {"world_76", "international",SDLK_WORLD_76 },
{"world_77", SDLK_WORLD_77 }, {"world_77", "international",SDLK_WORLD_77 },
{"world_78", SDLK_WORLD_78 }, {"world_78", "international",SDLK_WORLD_78 },
{"world_79", SDLK_WORLD_79 }, {"world_79", "international",SDLK_WORLD_79 },
{"world_80", SDLK_WORLD_80 }, {"world_80", "international",SDLK_WORLD_80 },
{"world_81", SDLK_WORLD_81 }, {"world_81", "international",SDLK_WORLD_81 },
{"world_82", SDLK_WORLD_82 }, {"world_82", "international",SDLK_WORLD_82 },
{"world_83", SDLK_WORLD_83 }, {"world_83", "international",SDLK_WORLD_83 },
{"world_84", SDLK_WORLD_84 }, {"world_84", "international",SDLK_WORLD_84 },
{"world_85", SDLK_WORLD_85 }, {"world_85", "international",SDLK_WORLD_85 },
{"world_86", SDLK_WORLD_86 }, {"world_86", "international",SDLK_WORLD_86 },
{"world_87", SDLK_WORLD_87 }, {"world_87", "international",SDLK_WORLD_87 },
{"world_88", SDLK_WORLD_88 }, {"world_88", "international",SDLK_WORLD_88 },
{"world_89", SDLK_WORLD_89 }, {"world_89", "international",SDLK_WORLD_89 },
{"world_90", SDLK_WORLD_90 }, {"world_90", "international",SDLK_WORLD_90 },
{"world_91", SDLK_WORLD_91 }, {"world_91", "international",SDLK_WORLD_91 },
{"world_92", SDLK_WORLD_92 }, {"world_92", "international",SDLK_WORLD_92 },
{"world_93", SDLK_WORLD_93 }, {"world_93", "international",SDLK_WORLD_93 },
{"world_94", SDLK_WORLD_94 }, {"world_94", "international",SDLK_WORLD_94 },
{"world_95", SDLK_WORLD_95 }, {"world_95", "international",SDLK_WORLD_95 },
{"kp0", SDLK_KP0 }, {"kp0", "numeric", SDLK_KP0 },
{"kp1", SDLK_KP1 }, {"kp1", "numeric", SDLK_KP1 },
{"kp2", SDLK_KP2 }, {"kp2", "numeric", SDLK_KP2 },
{"kp3", SDLK_KP3 }, {"kp3", "numeric", SDLK_KP3 },
{"kp4", SDLK_KP4 }, {"kp4", "numeric", SDLK_KP4 },
{"kp5", SDLK_KP5 }, {"kp5", "numeric", SDLK_KP5 },
{"kp6", SDLK_KP6 }, {"kp6", "numeric", SDLK_KP6 },
{"kp7", SDLK_KP7 }, {"kp7", "numeric", SDLK_KP7 },
{"kp8", SDLK_KP8 }, {"kp8", "numeric", SDLK_KP8 },
{"kp9", SDLK_KP9 }, {"kp9", "numeric", SDLK_KP9 },
{"kp_period", SDLK_KP_PERIOD }, {"kp_period", "characters", SDLK_KP_PERIOD },
{"kp_divide", SDLK_KP_DIVIDE }, {"kp_divide", "characters", SDLK_KP_DIVIDE },
{"kp_multiply", SDLK_KP_MULTIPLY }, {"kp_multiply", "characters", SDLK_KP_MULTIPLY },
{"kp_minus", SDLK_KP_MINUS }, {"kp_minus", "characters", SDLK_KP_MINUS },
{"kp_plus", SDLK_KP_PLUS }, {"kp_plus", "characters", SDLK_KP_PLUS },
{"kp_enter", SDLK_KP_ENTER }, {"kp_enter", "characters", SDLK_KP_ENTER },
{"kp_equals", SDLK_KP_EQUALS }, {"kp_equals", "characters", SDLK_KP_EQUALS },
{"up", SDLK_UP }, {"up", "editing", SDLK_UP },
{"down", SDLK_DOWN }, {"down", "editing", SDLK_DOWN },
{"right", SDLK_RIGHT }, {"right", "editing", SDLK_RIGHT },
{"left", SDLK_LEFT }, {"left", "editing", SDLK_LEFT },
{"insert", SDLK_INSERT }, {"insert", "editing", SDLK_INSERT },
{"home", SDLK_HOME }, {"home", "editing", SDLK_HOME },
{"end", SDLK_END }, {"end", "editing", SDLK_END },
{"pageup", SDLK_PAGEUP }, {"pageup", "editing", SDLK_PAGEUP },
{"pagedown", SDLK_PAGEDOWN }, {"pagedown", "editing", SDLK_PAGEDOWN },
{"f1", SDLK_F1 }, {"f1", "F-keys", SDLK_F1 },
{"f2", SDLK_F2 }, {"f2", "F-keys", SDLK_F2 },
{"f3", SDLK_F3 }, {"f3", "F-keys", SDLK_F3 },
{"f4", SDLK_F4 }, {"f4", "F-keys", SDLK_F4 },
{"f5", SDLK_F5 }, {"f5", "F-keys", SDLK_F5 },
{"f6", SDLK_F6 }, {"f6", "F-keys", SDLK_F6 },
{"f7", SDLK_F7 }, {"f7", "F-keys", SDLK_F7 },
{"f8", SDLK_F8 }, {"f8", "F-keys", SDLK_F8 },
{"f9", SDLK_F9 }, {"f9", "F-keys", SDLK_F9 },
{"f10", SDLK_F10 }, {"f10", "F-keys", SDLK_F10 },
{"f11", SDLK_F11 }, {"f11", "F-keys", SDLK_F11 },
{"f12", SDLK_F12 }, {"f12", "F-keys", SDLK_F12 },
{"f13", SDLK_F13 }, {"f13", "F-keys", SDLK_F13 },
{"f14", SDLK_F14 }, {"f14", "F-keys", SDLK_F14 },
{"f15", SDLK_F15 }, {"f15", "F-keys", SDLK_F15 },
{"numlock", SDLK_NUMLOCK }, {"numlock", "locks", SDLK_NUMLOCK },
{"capslock", SDLK_CAPSLOCK }, {"capslock", "locks", SDLK_CAPSLOCK },
{"scrollock", SDLK_SCROLLOCK }, {"scrollock", "locks", SDLK_SCROLLOCK },
{"rshift", SDLK_RSHIFT }, {"rshift", "modifiers", SDLK_RSHIFT },
{"lshift", SDLK_LSHIFT }, {"lshift", "modifiers", SDLK_LSHIFT },
{"rctrl", SDLK_RCTRL }, {"rctrl", "modifiers", SDLK_RCTRL },
{"lctrl", SDLK_LCTRL }, {"lctrl", "modifiers", SDLK_LCTRL },
{"ralt", SDLK_RALT }, {"ralt", "modifiers", SDLK_RALT },
{"lalt", SDLK_LALT }, {"lalt", "modifiers", SDLK_LALT },
{"rmeta", SDLK_RMETA }, {"rmeta", "modifiers", SDLK_RMETA },
{"lmeta", SDLK_LMETA }, {"lmeta", "modifiers", SDLK_LMETA },
{"lsuper", SDLK_LSUPER }, {"lsuper", "modifiers", SDLK_LSUPER },
{"rsuper", SDLK_RSUPER }, {"rsuper", "modifiers", SDLK_RSUPER },
{"mode", SDLK_MODE }, {"mode", "modifiers", SDLK_MODE },
{"compose", SDLK_COMPOSE }, {"compose", "modifiers", SDLK_COMPOSE },
{"help", SDLK_HELP }, {"help", "special", SDLK_HELP },
{"print", SDLK_PRINT }, {"print", "special", SDLK_PRINT },
{"sysreq", SDLK_SYSREQ }, {"sysreq", "special", SDLK_SYSREQ },
{"break", SDLK_BREAK }, {"break", "special", SDLK_BREAK },
{"menu", SDLK_MENU }, {"menu", "special", SDLK_MENU },
{"power", SDLK_POWER }, {"power", "special", SDLK_POWER },
{"euro", SDLK_EURO }, {"euro", "characters", SDLK_EURO },
{"undo", SDLK_UNDO }, {"undo", "special", SDLK_UNDO },
{NULL, 0 } {NULL, 0 }
}; };
@ -366,13 +367,13 @@ void init_sdl_keys()
} }
struct sdl_key* k = keys_table; struct sdl_key* k = keys_table;
while(k->name) { while(k->name) {
symbolkeys[k->symbol] = new keygroup(k->name, keygroup::KT_KEY); symbolkeys[k->symbol] = new keygroup(k->name, k->clazz, keygroup::KT_KEY);
k++; k++;
} }
for(unsigned i = 0; i < 256; i++) { for(unsigned i = 0; i < 256; i++) {
std::ostringstream x; std::ostringstream x;
x << "key" << i; x << "key" << i;
scancodekeys[i] = new keygroup(x.str(), keygroup::KT_KEY); scancodekeys[i] = new keygroup(x.str(), "scancode", keygroup::KT_KEY);
} }
} }

View file

@ -21,6 +21,7 @@ namespace
void on_ok(wxCommandEvent& e); void on_ok(wxCommandEvent& e);
void on_cancel(wxCommandEvent& e); void on_cancel(wxCommandEvent& e);
void on_clear(wxCommandEvent& e); void on_clear(wxCommandEvent& e);
void on_classchange(wxCommandEvent& e);
std::string getkey(); std::string getkey();
private: private:
void set_mask(const std::string& mod); void set_mask(const std::string& mod);
@ -29,6 +30,7 @@ namespace
void (wxdialog_keyentry::*fn)(const std::string& mod)); void (wxdialog_keyentry::*fn)(const std::string& mod));
void load_spec(const std::string& spec); void load_spec(const std::string& spec);
std::map<std::string, keyentry_mod_data> modifiers; std::map<std::string, keyentry_mod_data> modifiers;
wxComboBox* mainclass;
wxComboBox* mainkey; wxComboBox* mainkey;
wxButton* ok; wxButton* ok;
wxButton* cancel; wxButton* cancel;

View file

@ -33,226 +33,227 @@ namespace
{ {
int keynum; int keynum;
const char* name; const char* name;
const char* clazz;
keygroup* allocated; keygroup* allocated;
} keys[] = { } keys[] = {
{ WXK_BACK, "back", NULL }, { WXK_BACK, "back", "editing", NULL },
{ WXK_TAB, "tab", NULL }, { WXK_TAB, "tab", "editing", NULL },
{ WXK_RETURN, "return", NULL }, { WXK_RETURN, "return", "editing", NULL },
{ WXK_ESCAPE, "escape", NULL }, { WXK_ESCAPE, "escape", "editing", NULL },
{ WXK_SPACE, "space", NULL }, { WXK_SPACE, "space", "characters", NULL },
{ 33, "exclaim", NULL }, { 33, "exclaim", "characters", NULL },
{ 34, "quotedbl", NULL }, { 34, "quotedbl", "characters", NULL },
{ 35, "hash", NULL }, { 35, "hash", "characters", NULL },
{ 36, "dollar", NULL }, { 36, "dollar", "characters", NULL },
{ 37, "percent", NULL }, { 37, "percent", "characters", NULL },
{ 38, "ampersand", NULL }, { 38, "ampersand", "characters", NULL },
{ 39, "quote", NULL }, { 39, "quote", "characters", NULL },
{ 40, "leftparen", NULL }, { 40, "leftparen", "characters", NULL },
{ 41, "rightparen", NULL }, { 41, "rightparen", "characters", NULL },
{ 42, "asterisk", NULL }, { 42, "asterisk", "characters", NULL },
{ 43, "plus", NULL }, { 43, "plus", "characters", NULL },
{ 44, "comma", NULL }, { 44, "comma", "characters", NULL },
{ 45, "minus", NULL }, { 45, "minus", "characters", NULL },
{ 46, "period", NULL }, { 46, "period", "characters", NULL },
{ 47, "slash", NULL }, { 47, "slash", "characters", NULL },
{ 48, "0", NULL }, { 48, "0", "numeric", NULL },
{ 49, "1", NULL }, { 49, "1", "numeric", NULL },
{ 50, "2", NULL }, { 50, "2", "numeric", NULL },
{ 51, "3", NULL }, { 51, "3", "numeric", NULL },
{ 52, "4", NULL }, { 52, "4", "numeric", NULL },
{ 53, "5", NULL }, { 53, "5", "numeric", NULL },
{ 54, "6", NULL }, { 54, "6", "numeric", NULL },
{ 55, "7", NULL }, { 55, "7", "numeric", NULL },
{ 56, "8", NULL }, { 56, "8", "numeric", NULL },
{ 57, "9", NULL }, { 57, "9", "numeric", NULL },
{ 58, "colon", NULL }, { 58, "colon", "characters", NULL },
{ 59, "semicolon", NULL }, { 59, "semicolon", "characters", NULL },
{ 60, "less", NULL }, { 60, "less", "characters", NULL },
{ 61, "equals", NULL }, { 61, "equals", "characters", NULL },
{ 62, "greater", NULL }, { 62, "greater", "characters", NULL },
{ 63, "question", NULL }, { 63, "question", "characters", NULL },
{ 64, "at", NULL }, { 64, "at", "characters", NULL },
{ 65, "a", NULL }, { 65, "a", "alphabetic", NULL },
{ 66, "b", NULL }, { 66, "b", "alphabetic", NULL },
{ 67, "c", NULL }, { 67, "c", "alphabetic", NULL },
{ 68, "d", NULL }, { 68, "d", "alphabetic", NULL },
{ 69, "e", NULL }, { 69, "e", "alphabetic", NULL },
{ 70, "f", NULL }, { 70, "f", "alphabetic", NULL },
{ 71, "g", NULL }, { 71, "g", "alphabetic", NULL },
{ 72, "h", NULL }, { 72, "h", "alphabetic", NULL },
{ 73, "i", NULL }, { 73, "i", "alphabetic", NULL },
{ 74, "j", NULL }, { 74, "j", "alphabetic", NULL },
{ 75, "k", NULL }, { 75, "k", "alphabetic", NULL },
{ 76, "l", NULL }, { 76, "l", "alphabetic", NULL },
{ 77, "m", NULL }, { 77, "m", "alphabetic", NULL },
{ 78, "n", NULL }, { 78, "n", "alphabetic", NULL },
{ 79, "o", NULL }, { 79, "o", "alphabetic", NULL },
{ 80, "p", NULL }, { 80, "p", "alphabetic", NULL },
{ 81, "q", NULL }, { 81, "q", "alphabetic", NULL },
{ 82, "r", NULL }, { 82, "r", "alphabetic", NULL },
{ 83, "s", NULL }, { 83, "s", "alphabetic", NULL },
{ 84, "t", NULL }, { 84, "t", "alphabetic", NULL },
{ 85, "u", NULL }, { 85, "u", "alphabetic", NULL },
{ 86, "v", NULL }, { 86, "v", "alphabetic", NULL },
{ 87, "w", NULL }, { 87, "w", "alphabetic", NULL },
{ 88, "x", NULL }, { 88, "x", "alphabetic", NULL },
{ 89, "y", NULL }, { 89, "y", "alphabetic", NULL },
{ 90, "z", NULL }, { 90, "z", "alphabetic", NULL },
{ 91, "leftbracket", NULL }, { 91, "leftbracket", "characters", NULL },
{ 92, "backslash", NULL }, { 92, "backslash", "characters", NULL },
{ 93, "rightbracket", NULL }, { 93, "rightbracket", "characters", NULL },
{ 94, "caret", NULL }, { 94, "caret", "characters", NULL },
{ 95, "underscore", NULL }, { 95, "underscore", "characters", NULL },
{ 96, "backquote", NULL }, { 96, "backquote", "characters", NULL },
{ 97, "a", NULL }, { 97, "a", "alphabetic", NULL },
{ 98, "b", NULL }, { 98, "b", "alphabetic", NULL },
{ 99, "c", NULL }, { 99, "c", "alphabetic", NULL },
{ 100, "d", NULL }, { 100, "d", "alphabetic", NULL },
{ 101, "e", NULL }, { 101, "e", "alphabetic", NULL },
{ 102, "f", NULL }, { 102, "f", "alphabetic", NULL },
{ 103, "g", NULL }, { 103, "g", "alphabetic", NULL },
{ 104, "h", NULL }, { 104, "h", "alphabetic", NULL },
{ 105, "i", NULL }, { 105, "i", "alphabetic", NULL },
{ 106, "j", NULL }, { 106, "j", "alphabetic", NULL },
{ 107, "k", NULL }, { 107, "k", "alphabetic", NULL },
{ 108, "l", NULL }, { 108, "l", "alphabetic", NULL },
{ 109, "m", NULL }, { 109, "m", "alphabetic", NULL },
{ 110, "n", NULL }, { 110, "n", "alphabetic", NULL },
{ 111, "o", NULL }, { 111, "o", "alphabetic", NULL },
{ 112, "p", NULL }, { 112, "p", "alphabetic", NULL },
{ 113, "q", NULL }, { 113, "q", "alphabetic", NULL },
{ 114, "r", NULL }, { 114, "r", "alphabetic", NULL },
{ 115, "s", NULL }, { 115, "s", "alphabetic", NULL },
{ 116, "t", NULL }, { 116, "t", "alphabetic", NULL },
{ 117, "u", NULL }, { 117, "u", "alphabetic", NULL },
{ 118, "v", NULL }, { 118, "v", "alphabetic", NULL },
{ 119, "w", NULL }, { 119, "w", "alphabetic", NULL },
{ 120, "x", NULL }, { 120, "x", "alphabetic", NULL },
{ 121, "y", NULL }, { 121, "y", "alphabetic", NULL },
{ 122, "z", NULL }, { 122, "z", "alphabetic", NULL },
{ 123, "leftcurly", NULL }, { 123, "leftcurly", "characters", NULL },
{ 124, "pipe", NULL }, { 124, "pipe", "characters", NULL },
{ 125, "rightcurly", NULL }, { 125, "rightcurly", "characters", NULL },
{ 126, "tilde", NULL }, { 126, "tilde", "characters", NULL },
{ WXK_DELETE, "delete", NULL }, { WXK_DELETE, "delete", "editing", NULL },
{ WXK_START, "start", NULL }, { WXK_START, "start", "special", NULL },
{ WXK_LBUTTON, "lbutton", NULL }, { WXK_LBUTTON, "lbutton", "special", NULL },
{ WXK_RBUTTON, "rbutton", NULL }, { WXK_RBUTTON, "rbutton", "special", NULL },
{ WXK_CANCEL, "cancel", NULL }, { WXK_CANCEL, "cancel", "special", NULL },
{ WXK_MBUTTON, "mbutton", NULL }, { WXK_MBUTTON, "mbutton", "special", NULL },
{ WXK_CLEAR, "clear", NULL }, { WXK_CLEAR, "clear", "editing", NULL },
{ WXK_SHIFT, "shift", NULL }, { WXK_SHIFT, "shift", "modifiers", NULL },
{ WXK_ALT, "alt", NULL }, { WXK_ALT, "alt", "modifiers", NULL },
{ WXK_CONTROL, "control", NULL }, { WXK_CONTROL, "control", "modifiers", NULL },
{ WXK_MENU, "menu", NULL }, { WXK_MENU, "menu", "special", NULL },
{ WXK_PAUSE, "pause", NULL }, { WXK_PAUSE, "pause", "special", NULL },
{ WXK_CAPITAL, "capital", NULL }, { WXK_CAPITAL, "capital", "locks", NULL },
{ WXK_END, "end", NULL }, { WXK_END, "end", "editing", NULL },
{ WXK_HOME, "home", NULL }, { WXK_HOME, "home", "editing", NULL },
{ WXK_LEFT, "lefT", NULL }, { WXK_LEFT, "lefT", "editing", NULL },
{ WXK_UP, "up", NULL }, { WXK_UP, "up", "editing", NULL },
{ WXK_RIGHT, "right", NULL }, { WXK_RIGHT, "right", "editing", NULL },
{ WXK_DOWN, "down", NULL }, { WXK_DOWN, "down", "editing", NULL },
{ WXK_SELECT, "select", NULL }, { WXK_SELECT, "select", "special", NULL },
{ WXK_PRINT, "print", NULL }, { WXK_PRINT, "print", "special", NULL },
{ WXK_EXECUTE, "execute", NULL }, { WXK_EXECUTE, "execute", "special", NULL },
{ WXK_SNAPSHOT, "snapshot", NULL }, { WXK_SNAPSHOT, "snapshot", "special", NULL },
{ WXK_INSERT, "insert", NULL }, { WXK_INSERT, "insert", "editing", NULL },
{ WXK_HELP, "help", NULL }, { WXK_HELP, "help", "special", NULL },
{ WXK_NUMPAD0, "numpad0", NULL }, { WXK_NUMPAD0, "numpad0", "numeric", NULL },
{ WXK_NUMPAD1, "numpad1", NULL }, { WXK_NUMPAD1, "numpad1", "numeric", NULL },
{ WXK_NUMPAD2, "numpad2", NULL }, { WXK_NUMPAD2, "numpad2", "numeric", NULL },
{ WXK_NUMPAD3, "numpad3", NULL }, { WXK_NUMPAD3, "numpad3", "numeric", NULL },
{ WXK_NUMPAD4, "numpad4", NULL }, { WXK_NUMPAD4, "numpad4", "numeric", NULL },
{ WXK_NUMPAD5, "numpad5", NULL }, { WXK_NUMPAD5, "numpad5", "numeric", NULL },
{ WXK_NUMPAD6, "numpad6", NULL }, { WXK_NUMPAD6, "numpad6", "numeric", NULL },
{ WXK_NUMPAD7, "numpad7", NULL }, { WXK_NUMPAD7, "numpad7", "numeric", NULL },
{ WXK_NUMPAD8, "numpad8", NULL }, { WXK_NUMPAD8, "numpad8", "numeric", NULL },
{ WXK_NUMPAD9, "numpad9", NULL }, { WXK_NUMPAD9, "numpad9", "numeric", NULL },
{ WXK_MULTIPLY, "multiply", NULL }, { WXK_MULTIPLY, "multiply", "characters", NULL },
{ WXK_ADD, "add", NULL }, { WXK_ADD, "add", "characters", NULL },
{ WXK_SEPARATOR, "separator", NULL }, { WXK_SEPARATOR, "separator", "characters", NULL },
{ WXK_SUBTRACT, "subtract", NULL }, { WXK_SUBTRACT, "subtract", "characters", NULL },
{ WXK_DECIMAL, "decimal", NULL }, { WXK_DECIMAL, "decimal", "characters", NULL },
{ WXK_DIVIDE, "divide", NULL }, { WXK_DIVIDE, "divide", "characters", NULL },
{ WXK_F1, "f1", NULL }, { WXK_F1, "f1", "F-keys", NULL },
{ WXK_F2, "f2", NULL }, { WXK_F2, "f2", "F-keys", NULL },
{ WXK_F3, "f3", NULL }, { WXK_F3, "f3", "F-keys", NULL },
{ WXK_F4, "f4", NULL }, { WXK_F4, "f4", "F-keys", NULL },
{ WXK_F5, "f5", NULL }, { WXK_F5, "f5", "F-keys", NULL },
{ WXK_F6, "f6", NULL }, { WXK_F6, "f6", "F-keys", NULL },
{ WXK_F7, "f7", NULL }, { WXK_F7, "f7", "F-keys", NULL },
{ WXK_F8, "f8", NULL }, { WXK_F8, "f8", "F-keys", NULL },
{ WXK_F9, "f9", NULL }, { WXK_F9, "f9", "F-keys", NULL },
{ WXK_F10, "f10", NULL }, { WXK_F10, "f10", "F-keys", NULL },
{ WXK_F11, "f11", NULL }, { WXK_F11, "f11", "F-keys", NULL },
{ WXK_F12, "f12", NULL }, { WXK_F12, "f12", "F-keys", NULL },
{ WXK_F13, "f13", NULL }, { WXK_F13, "f13", "F-keys", NULL },
{ WXK_F14, "f14", NULL }, { WXK_F14, "f14", "F-keys", NULL },
{ WXK_F15, "f15", NULL }, { WXK_F15, "f15", "F-keys", NULL },
{ WXK_F16, "f16", NULL }, { WXK_F16, "f16", "F-keys", NULL },
{ WXK_F17, "f17", NULL }, { WXK_F17, "f17", "F-keys", NULL },
{ WXK_F18, "f18", NULL }, { WXK_F18, "f18", "F-keys", NULL },
{ WXK_F19, "f19", NULL }, { WXK_F19, "f19", "F-keys", NULL },
{ WXK_F20, "f20", NULL }, { WXK_F20, "f20", "F-keys", NULL },
{ WXK_F21, "f21", NULL }, { WXK_F21, "f21", "F-keys", NULL },
{ WXK_F22, "f22", NULL }, { WXK_F22, "f22", "F-keys", NULL },
{ WXK_F23, "f23", NULL }, { WXK_F23, "f23", "F-keys", NULL },
{ WXK_F24, "f24", NULL }, { WXK_F24, "f24", "F-keys", NULL },
{ WXK_NUMLOCK, "numlock", NULL }, { WXK_NUMLOCK, "numlock", "locks", NULL },
{ WXK_SCROLL, "scroll", NULL }, { WXK_SCROLL, "scroll", "locks", NULL },
{ WXK_PAGEUP, "pageup", NULL }, { WXK_PAGEUP, "pageup", "editing", NULL },
{ WXK_PAGEDOWN, "pagedown", NULL }, { WXK_PAGEDOWN, "pagedown", "editing", NULL },
{ WXK_NUMPAD_SPACE, "numpad_space", NULL }, { WXK_NUMPAD_SPACE, "numpad_space", "editing", NULL },
{ WXK_NUMPAD_TAB, "numpad_tab", NULL }, { WXK_NUMPAD_TAB, "numpad_tab", "editing", NULL },
{ WXK_NUMPAD_ENTER, "numpad_enter", NULL }, { WXK_NUMPAD_ENTER, "numpad_enter", "editing", NULL },
{ WXK_NUMPAD_F1, "numpad_f1", NULL }, { WXK_NUMPAD_F1, "numpad_f1", "F-keys", NULL },
{ WXK_NUMPAD_F2, "numpad_f2", NULL }, { WXK_NUMPAD_F2, "numpad_f2", "F-keys", NULL },
{ WXK_NUMPAD_F3, "numpad_f3", NULL }, { WXK_NUMPAD_F3, "numpad_f3", "F-keys", NULL },
{ WXK_NUMPAD_F4, "numpad_f4", NULL }, { WXK_NUMPAD_F4, "numpad_f4", "F-keys", NULL },
{ WXK_NUMPAD_HOME, "numpad_home", NULL }, { WXK_NUMPAD_HOME, "numpad_home", "editing", NULL },
{ WXK_NUMPAD_LEFT, "numpad_left", NULL }, { WXK_NUMPAD_LEFT, "numpad_left", "editing", NULL },
{ WXK_NUMPAD_UP, "numpad_up", NULL }, { WXK_NUMPAD_UP, "numpad_up", "editing", NULL },
{ WXK_NUMPAD_RIGHT, "numpad_right", NULL }, { WXK_NUMPAD_RIGHT, "numpad_right", "editing", NULL },
{ WXK_NUMPAD_DOWN, "numpad_down", NULL }, { WXK_NUMPAD_DOWN, "numpad_down", "editing", NULL },
{ WXK_NUMPAD_PAGEUP, "numpad_pageup", NULL }, { WXK_NUMPAD_PAGEUP, "numpad_pageup", "editing", NULL },
{ WXK_NUMPAD_PAGEDOWN, "numpad_pagedown", NULL }, { WXK_NUMPAD_PAGEDOWN, "numpad_pagedown", "editing", NULL },
{ WXK_NUMPAD_END, "numpad_end", NULL }, { WXK_NUMPAD_END, "numpad_end", "editing", NULL },
{ WXK_NUMPAD_BEGIN, "numpad_begin", NULL }, { WXK_NUMPAD_BEGIN, "numpad_begin", "editing", NULL },
{ WXK_NUMPAD_INSERT, "numpad_insert", NULL }, { WXK_NUMPAD_INSERT, "numpad_insert", "editing", NULL },
{ WXK_NUMPAD_DELETE, "numpad_delete", NULL }, { WXK_NUMPAD_DELETE, "numpad_delete", "editing", NULL },
{ WXK_NUMPAD_EQUAL, "numpad_equal", NULL }, { WXK_NUMPAD_EQUAL, "numpad_equal", "characters", NULL },
{ WXK_NUMPAD_MULTIPLY, "numpad_multiply", NULL }, { WXK_NUMPAD_MULTIPLY, "numpad_multiply", "characters", NULL },
{ WXK_NUMPAD_ADD, "numpad_add", NULL }, { WXK_NUMPAD_ADD, "numpad_add", "characters", NULL },
{ WXK_NUMPAD_SEPARATOR, "numpad_separator", NULL }, { WXK_NUMPAD_SEPARATOR, "numpad_separator", "characters", NULL },
{ WXK_NUMPAD_SUBTRACT, "numpad_subtract", NULL }, { WXK_NUMPAD_SUBTRACT, "numpad_subtract", "characters", NULL },
{ WXK_NUMPAD_DECIMAL, "numpad_decimal", NULL }, { WXK_NUMPAD_DECIMAL, "numpad_decimal", "characters", NULL },
{ WXK_NUMPAD_DIVIDE, "numpad_divide", NULL }, { WXK_NUMPAD_DIVIDE, "numpad_divide", "characters", NULL },
{ WXK_WINDOWS_LEFT, "windows_left", NULL }, { WXK_WINDOWS_LEFT, "windows_left", "modifiers", NULL },
{ WXK_WINDOWS_RIGHT, "windows_right", NULL }, { WXK_WINDOWS_RIGHT, "windows_right", "modifiers", NULL },
{ WXK_WINDOWS_MENU, "windows_menu", NULL }, { WXK_WINDOWS_MENU, "windows_menu", "modifiers", NULL },
{ WXK_COMMAND, "command", NULL }, { WXK_COMMAND, "command", "special", NULL },
{ WXK_SPECIAL1, "special1", NULL }, { WXK_SPECIAL1, "special1", "special", NULL },
{ WXK_SPECIAL2, "special2", NULL }, { WXK_SPECIAL2, "special2", "special", NULL },
{ WXK_SPECIAL3, "special3", NULL }, { WXK_SPECIAL3, "special3", "special", NULL },
{ WXK_SPECIAL4, "special4", NULL }, { WXK_SPECIAL4, "special4", "special", NULL },
{ WXK_SPECIAL5, "special5", NULL }, { WXK_SPECIAL5, "special5", "special", NULL },
{ WXK_SPECIAL6, "special6", NULL }, { WXK_SPECIAL6, "special6", "special", NULL },
{ WXK_SPECIAL7, "special7", NULL }, { WXK_SPECIAL7, "special7", "special", NULL },
{ WXK_SPECIAL8, "special8", NULL }, { WXK_SPECIAL8, "special8", "special", NULL },
{ WXK_SPECIAL9, "special9", NULL }, { WXK_SPECIAL9, "special9", "special", NULL },
{ WXK_SPECIAL10, "special10", NULL }, { WXK_SPECIAL10, "special10", "special", NULL },
{ WXK_SPECIAL11, "special11", NULL }, { WXK_SPECIAL11, "special11", "special", NULL },
{ WXK_SPECIAL12, "special12", NULL }, { WXK_SPECIAL12, "special12", "special", NULL },
{ WXK_SPECIAL13, "special13", NULL }, { WXK_SPECIAL13, "special13", "special", NULL },
{ WXK_SPECIAL14, "special14", NULL }, { WXK_SPECIAL14, "special14", "special", NULL },
{ WXK_SPECIAL15, "special15", NULL }, { WXK_SPECIAL15, "special15", "special", NULL },
{ WXK_SPECIAL16, "special16", NULL }, { WXK_SPECIAL16, "special16", "special", NULL },
{ WXK_SPECIAL17, "special17", NULL }, { WXK_SPECIAL17, "special17", "special", NULL },
{ WXK_SPECIAL18, "special18", NULL }, { WXK_SPECIAL18, "special18", "special", NULL },
{ WXK_SPECIAL19, "special19", NULL }, { WXK_SPECIAL19, "special19", "special", NULL },
{ WXK_SPECIAL20, "special20", NULL }, { WXK_SPECIAL20, "special20", "special", NULL },
{ 0, NULL, NULL } { 0, NULL, NULL, NULL }
}; };
std::map<int, modifier*> modifier_map; std::map<int, modifier*> modifier_map;
@ -333,7 +334,7 @@ void initialize_wx_keyboard()
key_entry* k = keys; key_entry* k = keys;
while(k->name) { while(k->name) {
if(!keys_allocated.count(k->name)) { if(!keys_allocated.count(k->name)) {
k->allocated = new keygroup(k->name, keygroup::KT_KEY); k->allocated = new keygroup(k->name, k->clazz, keygroup::KT_KEY);
key_map[k->keynum] = k->allocated; key_map[k->keynum] = k->allocated;
keys_allocated[k->name] = k->keynum; keys_allocated[k->name] = k->keynum;
} else } else

View file

@ -147,12 +147,12 @@ namespace
emulation_thread->join(); emulation_thread->join();
} }
keygroup mouse_x("mouse_x", keygroup::KT_MOUSE); keygroup mouse_x("mouse_x", "mouse", keygroup::KT_MOUSE);
keygroup mouse_y("mouse_y", keygroup::KT_MOUSE); keygroup mouse_y("mouse_y", "mouse", keygroup::KT_MOUSE);
keygroup mouse_l("mouse_left", keygroup::KT_KEY); keygroup mouse_l("mouse_left", "mouse", keygroup::KT_KEY);
keygroup mouse_m("mouse_center", keygroup::KT_KEY); keygroup mouse_m("mouse_center", "mouse", keygroup::KT_KEY);
keygroup mouse_r("mouse_right", keygroup::KT_KEY); keygroup mouse_r("mouse_right", "mouse", keygroup::KT_KEY);
keygroup mouse_i("mouse_inwindow", keygroup::KT_KEY); keygroup mouse_i("mouse_inwindow", "mouse", keygroup::KT_KEY);
void handle_wx_mouse(wxMouseEvent& e) void handle_wx_mouse(wxMouseEvent& e)
{ {