keyremapping: use modified key map for mapping key release
This cleans up the code some and is more-correct since it will eg. no longer remap fkeys on keyrelease even when it was not remapped on keypress.
This commit is contained in:
@@ -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();
|
final char keyChar = e.getKeyChar();
|
||||||
modified.put(e.getKeyCode(), mappedKeyCode);
|
modified.put(e.getKeyCode(), mappedKeyCode);
|
||||||
@@ -217,115 +217,19 @@ class KeyRemappingListener implements KeyListener
|
|||||||
@Override
|
@Override
|
||||||
public void keyReleased(KeyEvent e)
|
public void keyReleased(KeyEvent e)
|
||||||
{
|
{
|
||||||
|
final int keyCode = e.getKeyCode();
|
||||||
final char keyChar = e.getKeyChar();
|
final char keyChar = e.getKeyChar();
|
||||||
|
|
||||||
if (keyChar != KeyEvent.CHAR_UNDEFINED)
|
if (keyChar != KeyEvent.CHAR_UNDEFINED)
|
||||||
{
|
{
|
||||||
blockedChars.remove(keyChar);
|
blockedChars.remove(keyChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.getGameState() == GameState.LOGIN_SCREEN)
|
final Integer mappedKeyCode = modified.remove(keyCode);
|
||||||
|
if (mappedKeyCode != null)
|
||||||
{
|
{
|
||||||
return;
|
e.setKeyCode(mappedKeyCode);
|
||||||
}
|
e.setKeyChar(KeyEvent.CHAR_UNDEFINED);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,9 +99,9 @@ public class KeyRemappingListenerTest
|
|||||||
|
|
||||||
verify(event).consume();
|
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
|
// with the plugin now in typing mode, previously pressed and remapped keys should still be mapped
|
||||||
// on key release regardless
|
// on key release regardless
|
||||||
when(keyRemappingPlugin.isTyping()).thenReturn(true);
|
|
||||||
event = mock(KeyEvent.class);
|
event = mock(KeyEvent.class);
|
||||||
when(event.getKeyCode()).thenReturn(KeyEvent.VK_D);
|
when(event.getKeyCode()).thenReturn(KeyEvent.VK_D);
|
||||||
keyRemappingListener.keyReleased(event);
|
keyRemappingListener.keyReleased(event);
|
||||||
|
|||||||
Reference in New Issue
Block a user