{
}
+void EmuThreadClass::set_romakana(void)
+{
+ romakana_conversion_mode = !romakana_conversion_mode;
+ p_config->romaji_to_kana = !p_config->romaji_to_kana;
+#if defined(USE_AUTO_KEY)
+ p_emu->set_auto_key_char(romakana_conversion_mode ? 1 : 0);
+#endif
+}
+
int EmuThreadClass::get_interval(void)
{
static int accum = 0;
}
}
#endif
- if(roma_kana_conv) {
+ if(p_config->romaji_to_kana) {
+ //FIFO *dmy = p_emu->get_auto_key_buffer();
+ //if(dmy != NULL) {
+ // if(!dmy->empty()) {
+ // p_emu->stop_auto_key();
+ // p_emu->start_auto_key();
+ // }
+ //}
+
+#if 0
if(!roma_kana_queue.isEmpty()) {
#if defined(USE_AUTO_KEY)
FIFO *dmy = emu->get_auto_key_buffer();
if(roma_kana_queue.isEmpty()) {
roma_kana_conv = false;
}
+#endif
}
// else
{
key_queue_t sp;
dequeue_key_up(&sp);
key_mod = sp.mod;
- p_emu->key_modifiers(sp.mod);
- p_emu->key_up(sp.code);
+ {
+ p_emu->key_modifiers(sp.mod);
+ p_emu->key_up(sp.code, true); // need decicion of extend.
+ }
}
while(!is_empty_key_down()) {
key_queue_t sp;
dequeue_key_down(&sp);
- p_emu->key_modifiers(sp.mod);
- p_emu->key_down(sp.code, sp.repeat);
+ if(p_config->romaji_to_kana) {
+ p_emu->key_modifiers(sp.mod);
+ p_emu->key_char(sp.code);
+ } else {
+ p_emu->key_modifiers(sp.mod);
+ p_emu->key_down(sp.code, true, sp.repeat);
+ }
}
}
run_frames = p_emu->run();
}
}
-void OSD_BASE::key_down(int code, bool repeat)
+void OSD_BASE::key_down(int code, bool extended, bool repeat)
{
if((code >= 256) || (code < 0)) return; // WORKAROUND
+//#ifdef USE_AUTO_KEY
+ if(!__USE_AUTO_KEY || (!now_auto_key && !p_config->romaji_to_kana)) {
+//#endif
+ //if(!dinput_key_available) {
+ if(code == VK_SHIFT) {
+ if(!(key_status[VK_LSHIFT] & 0x80) && (GetAsyncKeyState(VK_LSHIFT) & 0x8000)) {
+ code = VK_LSHIFT;
+ } else if(!(key_status[VK_RSHIFT] & 0x80) && (GetAsyncKeyState(VK_RSHIFT) & 0x8000)) {
+ code = VK_RSHIFT;
+ } else {
+ return;
+ }
+ } else if(code == VK_CONTROL) {
+ if(!(key_status[VK_LCONTROL] & 0x80) && (GetAsyncKeyState(VK_LCONTROL) & 0x8000)) {
+ code = VK_LCONTROL;
+ } else if(!(key_status[VK_RCONTROL] & 0x80) && (GetAsyncKeyState(VK_RCONTROL) & 0x8000)) {
+ code = VK_RCONTROL;
+ } else {
+ return;
+ }
+ } else if(code == VK_MENU) {
+ if(!(key_status[VK_LMENU] & 0x80) && (GetAsyncKeyState(VK_LMENU) & 0x8000)) {
+ code = VK_LMENU;
+ } else if(!(key_status[VK_RMENU] & 0x80) && (GetAsyncKeyState(VK_RMENU) & 0x8000)) {
+ code = VK_RMENU;
+ } else {
+ return;
+ }
+ }
+
+//#ifdef USE_SHIFT_NUMPAD_KEY
+ if(__USE_SHIFT_NUMPAD_KEY) {
+// if(code == VK_LSHIFT || code == VK_RSHIFT) {
+ if(code == VK_LSHIFT) {
+ key_shift_pressed = true;
+ return;
+ }
+ if(!extended) {
+ switch(code) {
+ case VK_INSERT:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD0]) {
+ code = VK_NUMPAD0;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_END:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD1]) {
+ code = VK_NUMPAD1;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_DOWN:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD2]) {
+ code = VK_NUMPAD2;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_NEXT:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD3]) {
+ code = VK_NUMPAD3;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_LEFT:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD4]) {
+ code = VK_NUMPAD4;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_CLEAR:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD5]) {
+ code = VK_NUMPAD5;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_RIGHT:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD6]) {
+ code = VK_NUMPAD6;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_HOME:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD7]) {
+ code = VK_NUMPAD7;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_UP:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD8]) {
+ code = VK_NUMPAD8;
+ key_shift_pressed = true;
+ }
+ break;
+ case VK_PRIOR:
+ if(key_shift_pressed || key_shift_released || key_status[VK_NUMPAD9]) {
+ code = VK_NUMPAD9;
+ key_shift_pressed = true;
+ }
+ break;
+ }
+ }
+ }
+
+//#endif
+ key_down_native(code, repeat);
+ //} else {
+ // if(repeat || code == 0xf0 || code == 0xf1 || code == 0xf2 || code == 0xf3 || code == 0xf4) {
+ // key_down_native(code, repeat);
+ // }
+ //}
+//#ifdef USE_AUTO_KEY
+ }
+//#endif
+#if 0
if(code == VK_SHIFT) {
if(!(key_status[VK_LSHIFT] & 0x80) && (GetAsyncKeyState(VK_LSHIFT) & 0x8000)) {
code = VK_LSHIFT;
}
}
key_down_native(code, repeat);
+#endif
}
-void OSD_BASE::key_up(int code)
+void OSD_BASE::key_up(int code, bool extended)
{
if((code >= 256) || (code < 0)) return; // WORKAROUND
+//#ifdef USE_AUTO_KEY
+ if(!__USE_AUTO_KEY || (!now_auto_key && !p_config->romaji_to_kana)) {
+//#endif
+ //if(!dinput_key_available) {
+ if(code == VK_SHIFT) {
+ if((key_status[VK_LSHIFT] & 0x80) && !(GetAsyncKeyState(VK_LSHIFT) & 0x8000)) {
+ code = VK_LSHIFT;
+ } else if((key_status[VK_RSHIFT] & 0x80) && !(GetAsyncKeyState(VK_RSHIFT) & 0x8000)) {
+ code = VK_RSHIFT;
+ } else {
+ return;
+ }
+ } else if(code == VK_CONTROL) {
+ if((key_status[VK_LCONTROL] & 0x80) && !(GetAsyncKeyState(VK_LCONTROL) & 0x8000)) {
+ code = VK_LCONTROL;
+ } else if((key_status[VK_RCONTROL] & 0x80) && !(GetAsyncKeyState(VK_RCONTROL) & 0x8000)) {
+ code = VK_RCONTROL;
+ } else {
+ return;
+ }
+ } else if(code == VK_MENU) {
+ if((key_status[VK_LMENU] & 0x80) && !(GetAsyncKeyState(VK_LMENU) & 0x8000)) {
+ code = VK_LMENU;
+ } else if((key_status[VK_RMENU] & 0x80) && !(GetAsyncKeyState(VK_RMENU) & 0x8000)) {
+ code = VK_RMENU;
+ } else {
+ return;
+ }
+ }
+//#ifdef USE_SHIFT_NUMPAD_KEY
+ if(__USE_SHIFT_NUMPAD_KEY) {
+
+// if(code == VK_LSHIFT || code == VK_RSHIFT) {
+ if(code == VK_LSHIFT) {
+ key_shift_pressed = false;
+ key_shift_released = true;
+ return;
+ }
+ if(!extended) {
+ switch(code) {
+ case VK_NUMPAD0: case VK_INSERT:
+ key_up_native(VK_NUMPAD0);
+ key_up_native(VK_INSERT);
+ return;
+ case VK_NUMPAD1: case VK_END:
+ key_up_native(VK_NUMPAD1);
+ key_up_native(VK_END);
+ return;
+ case VK_NUMPAD2: case VK_DOWN:
+ key_up_native(VK_NUMPAD2);
+ key_up_native(VK_DOWN);
+ return;
+ case VK_NUMPAD3: case VK_NEXT:
+ key_up_native(VK_NUMPAD3);
+ key_up_native(VK_NEXT);
+ return;
+ case VK_NUMPAD4: case VK_LEFT:
+ key_up_native(VK_NUMPAD4);
+ key_up_native(VK_LEFT);
+ return;
+ case VK_NUMPAD5: case VK_CLEAR:
+ key_up_native(VK_NUMPAD5);
+ key_up_native(VK_CLEAR);
+ return;
+ case VK_NUMPAD6: case VK_RIGHT:
+ key_up_native(VK_NUMPAD6);
+ key_up_native(VK_RIGHT);
+ return;
+ case VK_NUMPAD7: case VK_HOME:
+ key_up_native(VK_NUMPAD7);
+ key_up_native(VK_HOME);
+ return;
+ case VK_NUMPAD8: case VK_UP:
+ key_up_native(VK_NUMPAD8);
+ key_up_native(VK_UP);
+ return;
+ case VK_NUMPAD9: case VK_PRIOR:
+ key_up_native(VK_NUMPAD9);
+ key_up_native(VK_PRIOR);
+ return;
+ }
+ }
+ }
+//#endif
+ key_up_native(code);
+ }
+//#ifdef USE_AUTO_KEY
+//}
+//#endif
+#if 0
if(code == VK_SHIFT) {
if((key_status[VK_LSHIFT] & 0x80) && !(GetAsyncKeyState(VK_LSHIFT) & 0x8000)) {
code = VK_LSHIFT;
}
}
key_up_native(code);
+#endif
}