diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraListener.java b/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraListener.java index 9250e7cf0a..47d8766d9f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraListener.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraListener.java @@ -26,6 +26,8 @@ package net.runelite.client.plugins.wasdcamera; import java.awt.event.KeyEvent; +import java.util.HashMap; +import java.util.Map; import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.GameState; @@ -48,6 +50,8 @@ class WASDCameraListener extends MouseListener implements KeyListener @Inject private ClientThread clientThread; + private final Map modified = new HashMap<>(); + @Override public void keyTyped(KeyEvent e) { @@ -81,18 +85,22 @@ class WASDCameraListener extends MouseListener implements KeyListener { if (config.up().matches(e)) { + modified.put(e.getKeyCode(), KeyEvent.VK_UP); e.setKeyCode(KeyEvent.VK_UP); } else if (config.down().matches(e)) { + modified.put(e.getKeyCode(), KeyEvent.VK_DOWN); e.setKeyCode(KeyEvent.VK_DOWN); } else if (config.left().matches(e)) { + modified.put(e.getKeyCode(), KeyEvent.VK_LEFT); e.setKeyCode(KeyEvent.VK_LEFT); } else if (config.right().matches(e)) { + modified.put(e.getKeyCode(), KeyEvent.VK_RIGHT); e.setKeyCode(KeyEvent.VK_RIGHT); } else @@ -199,6 +207,8 @@ class WASDCameraListener extends MouseListener implements KeyListener if (!plugin.isTyping()) { + modified.remove(e.getKeyCode()); + if (config.up().matches(e)) { e.setKeyCode(KeyEvent.VK_UP); @@ -274,5 +284,15 @@ class WASDCameraListener extends MouseListener implements KeyListener } } } + 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); + } + } } }