From 06c28ad3da06b37456e8d4386abd3e9253811445 Mon Sep 17 00:00:00 2001 From: gregorypierce Date: Sat, 28 Feb 2004 01:26:36 +0000 Subject: [PATCH] Updated so that if a key gets enumerated multiple times, only the first enumeration will be accepted. This was done to stop an issue with certain keys in OSX being enumerated more than once - the first being the correct HID code (assumption) and the second being something wrong. It is not clear why those keys were being enumerated more than once to begin with. But this solves the problem. --- .../net/java/games/input/OSXKeyboard.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java b/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java index 0fdcef3..4809a75 100644 --- a/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java +++ b/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java @@ -168,27 +168,38 @@ public class OSXKeyboard extends StandardKeyboard implements InputController public void addControllerElement(InputControllerElement element) { - //System.out.println("Adding keyboard elements usage page[" + element.getUsagePage() + "] usage [" + element.getUsage() + "] type [" + element.getElementType() + "]" ); + System.out.println("Adding keyboard elements usage page[" + element.getUsagePage() + "] usage [" + element.getUsage() + "] type [" + element.getElementType() + "]" ); switch( element.getUsagePage() ) { case OSXEnvironmentPlugin.HID_USAGEPAGE_KEYBOARD: - //System.out.println("Found keyboard element"); + System.out.println("Found keyboard element"); if ( element.getElementType() == OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_BUTTON ) { - System.out.println("Adding key [" + element.getUsage() + "]"); - // register this key with the queue system as all buttons are retrieved from the // input controllers queue // - plugin.registerDeviceElement( lpQueue, element.getHidCookie() ); + System.out.println("Registering button-key (usage page [" + element.getUsagePage() + "], usage[" + element.getUsage() + "], elementType [" + element.getElementType() + "], hidCookie [" + element.getHidCookie() + "])"); - //TODO: Optimize this - put the usages in another array the same size as the crosstable so the hidCookies - // can be retrieved directly without the Long creation - keys.put( new Long( element.getUsage()), element ); + + if ( keys.get( new Long( element.getUsage() )) == null ) + { + plugin.registerDeviceElement( lpQueue, element.getHidCookie() ); + + keys.put( new Long( element.getUsage() ), element ); + System.out.println("Registered key [" + element.getHidCookie() + "]"); + } + else + { + System.out.println("Ignoring key [" + element.getHidCookie() + "] already enumerated."); + } } + else + { + System.out.println("Ignoring non-button-key (usage page [" + element.getUsagePage() + "], usage[" + element.getUsage() + "], elementType [" + element.getElementType() + "], hidCookie [" + element.getHidCookie() + "])"); + } break; default: