diff --git a/honoka/plugins/honoka_plugin_def.h b/honoka/plugins/honoka_plugin_def.h index 7ebca56..b7a5ce4 100644 --- a/honoka/plugins/honoka_plugin_def.h +++ b/honoka/plugins/honoka_plugin_def.h @@ -51,6 +51,13 @@ #define HONOKA_CONFIG_KANAINPUT_FAKEKANA "/IMEngine/Honoka/KanaInput/FakeKanaKey" #define HONOKA_DEFAULT_KANAINPUT_FAKEKANA true +// NicolaInput +#define HONOKA_CONFIG_NICOLAINPUT_LSHIFT "/IMEngine/Honoka/NicolaInput/RightShift" +#define HONOKA_DEFAULT_NICOLAINPUT_LSHIFT "Muhenkan" +#define HONOKA_CONFIG_NICOLAINPUT_RSHIFT "/IMEngine/Honoka/NicolaInput/RightShift" +#define HONOKA_DEFAULT_NICOLAINPUT_RSHIFT "Henkan" + +// SimplePrediction #define HONOKA_CONFIG_SIMPLEPREDICTION_SIZE "/IMEngine/Honoka/SimplePrediction/Size" #define HONOKA_DEFAULT_SIMPLEPREDICTION_SIZE 200 diff --git a/honoka/plugins/nicolainput.cpp b/honoka/plugins/nicolainput.cpp index b8c4799..d797599 100644 --- a/honoka/plugins/nicolainput.cpp +++ b/honoka/plugins/nicolainput.cpp @@ -107,7 +107,8 @@ NicolaInput::NicolaInput(ConfigPointer cfg) : PreEditor(cfg) { - //fakeNicolaInput = cfg->read(HONOKA_CONFIG_KANAINPUT_FAKEKANA,HONOKA_DEFAULT_KANAINPUT_FAKEKANA); + scim_string_to_key_list(LShiftKey,cfg->read(HONOKA_CONFIG_NICOLAINPUT_LSHIFT,String(HONOKA_DEFAULT_NICOLAINPUT_LSHIFT))); + scim_string_to_key_list(RShiftKey,cfg->read(HONOKA_CONFIG_NICOLAINPUT_RSHIFT,String(HONOKA_DEFAULT_NICOLAINPUT_RSHIFT))); LShift = false; RShift = false; for(unsigned int i = 0;_nicolaTable[i].key != SCIM_KEY_NullKey;i ++) { @@ -211,16 +212,19 @@ */ bool NicolaInput::keyEventHook(const KeyEvent &key) { - if (key.code == SCIM_KEY_Henkan) { - if (key.is_key_press()) RShift = true; - else if (key.is_key_release()) RShift = false; - return true; + for(unsigned int i = 0;i < RShiftKey.size();i ++) { + if (key.code == RShiftKey[i].code) { + if (key.is_key_press()) RShift = true; + else if (key.is_key_release()) RShift = false; + return true; + } } - if (key.code == SCIM_KEY_Muhenkan) { - if (key.is_key_press()) LShift = true; - else if (key.is_key_release()) LShift = false; - return true; + for(unsigned int i = 0;i < LShiftKey.size();i ++) { + if (key.code == LShiftKey[i].code) { + if (key.is_key_press()) LShift = true; + else if (key.is_key_release()) LShift = false; + return true; + } } - return false; } diff --git a/honoka/plugins/nicolainput.h b/honoka/plugins/nicolainput.h index cc7226d..fca6320 100644 --- a/honoka/plugins/nicolainput.h +++ b/honoka/plugins/nicolainput.h @@ -57,6 +57,8 @@ protected: bool LShift; bool RShift; + KeyEventList LShiftKey; + KeyEventList RShiftKey; map keymap; WideString vsc; WideString svsc;