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.

This commit is contained in:
gregorypierce 2004-02-28 01:26:36 +00:00
parent 6eb181e4be
commit 06c28ad3da

View file

@ -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: