diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java index 3c7ce4be79..472e009e1b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingListener.java @@ -156,7 +156,7 @@ class KeyRemappingListener implements KeyListener } } - if (mappedKeyCode != KeyEvent.VK_UNDEFINED) + if (mappedKeyCode != KeyEvent.VK_UNDEFINED && mappedKeyCode != e.getKeyCode()) { final char keyChar = e.getKeyChar(); modified.put(e.getKeyCode(), mappedKeyCode); @@ -217,115 +217,19 @@ class KeyRemappingListener implements KeyListener @Override public void keyReleased(KeyEvent e) { + final int keyCode = e.getKeyCode(); final char keyChar = e.getKeyChar(); + if (keyChar != KeyEvent.CHAR_UNDEFINED) { blockedChars.remove(keyChar); } - if (client.getGameState() == GameState.LOGIN_SCREEN) + final Integer mappedKeyCode = modified.remove(keyCode); + if (mappedKeyCode != null) { - return; - } - - if (plugin.chatboxFocused() && !plugin.isTyping()) - { - modified.remove(e.getKeyCode()); - - int mappedKeyCode = KeyEvent.VK_UNDEFINED; - - if (config.cameraRemap()) - { - if (config.up().matches(e)) - { - mappedKeyCode = KeyEvent.VK_UP; - } - else if (config.down().matches(e)) - { - mappedKeyCode = KeyEvent.VK_DOWN; - } - else if (config.left().matches(e)) - { - mappedKeyCode = KeyEvent.VK_LEFT; - } - else if (config.right().matches(e)) - { - mappedKeyCode = KeyEvent.VK_RIGHT; - } - } - - if (config.fkeyRemap()) - { - if (config.f1().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F1; - } - else if (config.f2().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F2; - } - else if (config.f3().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F3; - } - else if (config.f4().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F4; - } - else if (config.f5().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F5; - } - else if (config.f6().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F6; - } - else if (config.f7().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F7; - } - else if (config.f8().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F8; - } - else if (config.f9().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F9; - } - else if (config.f10().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F10; - } - else if (config.f11().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F11; - } - else if (config.f12().matches(e)) - { - mappedKeyCode = KeyEvent.VK_F12; - } - else if (config.esc().matches(e)) - { - mappedKeyCode = KeyEvent.VK_ESCAPE; - } - } - - if (mappedKeyCode != KeyEvent.VK_UNDEFINED) - { - e.setKeyCode(mappedKeyCode); - e.setKeyChar(KeyEvent.CHAR_UNDEFINED); - } - } - else - { - // press d + enter + release d - causes the right arrow to never be released - Integer m = modified.get(e.getKeyCode()); - if (m != null) - { - modified.remove(e.getKeyCode()); - e.setKeyCode(m); - e.setKeyChar(KeyEvent.CHAR_UNDEFINED); - } + e.setKeyCode(mappedKeyCode); + e.setKeyChar(KeyEvent.CHAR_UNDEFINED); } } } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/keyremapping/KeyRemappingListenerTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/keyremapping/KeyRemappingListenerTest.java index 036f53e303..cbaefc875f 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/keyremapping/KeyRemappingListenerTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/keyremapping/KeyRemappingListenerTest.java @@ -99,9 +99,9 @@ public class KeyRemappingListenerTest verify(event).consume(); + lenient().when(keyRemappingPlugin.isTyping()).thenReturn(true); // release handler no longer checks this // with the plugin now in typing mode, previously pressed and remapped keys should still be mapped // on key release regardless - when(keyRemappingPlugin.isTyping()).thenReturn(true); event = mock(KeyEvent.class); when(event.getKeyCode()).thenReturn(KeyEvent.VK_D); keyRemappingListener.keyReleased(event);