private static final Keyboard createKeyboardFromDevice(OSXHIDDevice device, List elements) throws IOException { List components = new ArrayList(); OSXHIDQueue queue = device.createQueue(AbstractController.EVENT_QUEUE_DEPTH); try { addElements(queue, elements, components, false); } catch (IOException e) { queue.release(); throw e; } Component[] components_array = new Component[components.size()]; components.toArray(components_array); Keyboard keyboard = new OSXKeyboard(device, queue, components_array, new Controller[] {}, new Rumbler[] {}); return keyboard; }
private static final AbstractController createControllerFromDevice( OSXHIDDevice device, List elements, Controller.Type type) throws IOException { List components = new ArrayList(); OSXHIDQueue queue = device.createQueue(AbstractController.EVENT_QUEUE_DEPTH); try { addElements(queue, elements, components, false); } catch (IOException e) { queue.release(); throw e; } Component[] components_array = new Component[components.size()]; components.toArray(components_array); AbstractController controller = new OSXAbstractController( device, queue, components_array, new Controller[] {}, new Rumbler[] {}, type); return controller; }
private static final Mouse createMouseFromDevice(OSXHIDDevice device, List elements) throws IOException { List components = new ArrayList(); OSXHIDQueue queue = device.createQueue(AbstractController.EVENT_QUEUE_DEPTH); try { addElements(queue, elements, components, true); } catch (IOException e) { queue.release(); throw e; } Component[] components_array = new Component[components.size()]; components.toArray(components_array); Mouse mouse = new OSXMouse(device, queue, components_array, new Controller[] {}, new Rumbler[] {}); if (mouse.getPrimaryButton() != null && mouse.getX() != null && mouse.getY() != null) { return mouse; } else { queue.release(); return null; } }
private static final void addElements( OSXHIDQueue queue, List elements, List components, boolean map_mouse_buttons) throws IOException { Iterator it = elements.iterator(); while (it.hasNext()) { OSXHIDElement element = (OSXHIDElement) it.next(); Component.Identifier id = element.getIdentifier(); if (id == null) continue; if (map_mouse_buttons) { if (id == Component.Identifier.Button._0) { id = Component.Identifier.Button.LEFT; } else if (id == Component.Identifier.Button._1) { id = Component.Identifier.Button.RIGHT; } else if (id == Component.Identifier.Button._2) { id = Component.Identifier.Button.MIDDLE; } } OSXComponent component = new OSXComponent(id, element); components.add(component); queue.addElement(element, component); } }