diff --git a/src/input.cc b/src/input.cc index edd0172..9d61b69 100644 --- a/src/input.cc +++ b/src/input.cc @@ -1155,6 +1155,10 @@ void _GNW95_clear_time_stamps() // 0x4C9E14 static void _GNW95_process_key(KeyboardData* data) { + // Use originally pressed scancode, not qwerty-remapped one, for tracking + // timestamps, see usage from |_GNW95_process_message|. + int scanCode = data->key; + data->key = gNormalizedQwertyKeys[data->key]; if (gVcrState == VCR_STATE_PLAYING) { @@ -1163,7 +1167,7 @@ static void _GNW95_process_key(KeyboardData* data) vcrStop(); } } else { - RepeatInfo* ptr = &(_GNW95_key_time_stamps[data->key]); + RepeatInfo* ptr = &(_GNW95_key_time_stamps[scanCode]); if (data->down == 1) { ptr->tick = getTicks(); ptr->repeatCount = 0; @@ -1171,6 +1175,11 @@ static void _GNW95_process_key(KeyboardData* data) ptr->tick = -1; } + // Ignore keys which were remapped to -1. + if (data->key == -1) { + return; + } + _kb_simulate_key(data); } }