/** Posts a key event received from elsewhere (i.e. a native UI component). This is useful for * applications that are using GL in Canvas mode and sharing keyboard focus with other (non-GL) * components. The event will be queued and dispatched on the next frame, after GL keyboard * events. * * <p><em>Note</em>: the resulting event will be sent with time = 0, since the GL event time is * inaccessible and platform dependent.</p> * * @param key the key that was pressed or released, or null for a char typed event * @param pressed whether the key was pressed or released, ignored if key is null * @param typedCh the character that was typed, ignored if key is not null */ public void post(Key key, boolean pressed, char typedCh, Modifiers modifiers) { queue.add( key == null ? new Queued<TypedEvent>(new TypedEvent.Impl(new Events.Flags.Impl(), 0, typedCh), typed) : new Queued<Event>(new Event.Impl(new Events.Flags.Impl(), 0, key, modifiers), pressed ? down : up)); }
public void onKeyDown(int keyCode, KeyEvent nativeEvent) { long time = nativeEvent.getEventTime(); final Keyboard.Event event = new Keyboard.Event.Impl( new Events.Flags.Impl(), time, keyForCode(keyCode), extractModifiers(nativeEvent)); platform.invokeLater(new Runnable() { @Override public void run() { platform.keyboard().onKeyDown(event); } }); int unicodeChar = nativeEvent.getUnicodeChar(); if (unicodeChar != 0) { final Keyboard.TypedEvent typedEvent = new Keyboard.TypedEvent.Impl(event.flags(), time, (char)unicodeChar); platform.invokeLater(new Runnable() { @Override public void run() { platform.keyboard().onKeyTyped(typedEvent); } }); } }
@Override void update() { Modifiers modifiers = extractModifiers(); while (Keyboard.next()) { double time = (double) (Keyboard.getEventNanoseconds() / 1000); int keyCode = Keyboard.getEventKey(); if (Keyboard.getEventKeyState()) { Key key = translateKey(keyCode); if (key != null) dispatch(new Event.Impl(new Events.Flags.Impl(), time, key, modifiers), down); char keyChar = Keyboard.getEventCharacter(); if (!Character.isISOControl(keyChar)) dispatch(new TypedEvent.Impl(new Events.Flags.Impl(), time, keyChar), typed); } else { Key key = translateKey(keyCode); if (key != null) dispatch(new Event.Impl(new Events.Flags.Impl(), time, key, modifiers), up); } } super.update(); }
@Override void update() { Modifiers modifiers = extractModifiers(); while (Keyboard.next()) { double time = (double) (Keyboard.getEventNanoseconds() / 1000); int keyCode = Keyboard.getEventKey(); if (Keyboard.getEventKeyState()) { Key key = translateKey(keyCode); if (key != null) dispatch(new Event.Impl(new Events.Flags.Impl(), time, key, modifiers), down); char keyChar = Keyboard.getEventCharacter(); if (!Character.isISOControl(keyChar)) dispatch(new TypedEvent.Impl(new Events.Flags.Impl(), time, keyChar), typed); } else { Key key = translateKey(keyCode); if (key != null) dispatch(new Event.Impl(new Events.Flags.Impl(), time, key, modifiers), up); } } super.update(); }
public void onKeyDown(int keyCode, KeyEvent nativeEvent) { long time = nativeEvent.getEventTime(); final Keyboard.Event event = new Keyboard.Event.Impl( new Events.Flags.Impl(), time, keyForCode(keyCode), extractModifiers(nativeEvent)); platform.invokeLater(new Runnable() { @Override public void run() { platform.keyboard().onKeyDown(event); } }); int unicodeChar = nativeEvent.getUnicodeChar(); if (unicodeChar != 0) { final Keyboard.TypedEvent typedEvent = new Keyboard.TypedEvent.Impl(event.flags(), time, (char)unicodeChar); platform.invokeLater(new Runnable() { @Override public void run() { platform.keyboard().onKeyTyped(typedEvent); } }); } }
/** Posts a key event received from elsewhere (i.e. a native UI component). This is useful for * applications that are using GL in Canvas mode and sharing keyboard focus with other (non-GL) * components. The event will be queued and dispatched on the next frame, after GL keyboard * events. * * <p><em>Note</em>: the resulting event will be sent with time = 0, since the GL event time is * inaccessible and platform dependent.</p> * * @param key the key that was pressed or released, or null for a char typed event * @param pressed whether the key was pressed or released, ignored if key is null * @param typedCh the character that was typed, ignored if key is not null */ public void post(Key key, boolean pressed, char typedCh, Modifiers modifiers) { queue.add( key == null ? new Queued<TypedEvent>(new TypedEvent.Impl(new Events.Flags.Impl(), 0, typedCh), typed) : new Queued<Event>(new Event.Impl(new Events.Flags.Impl(), 0, key, modifiers), pressed ? down : up)); }
public void handleEvent (org.eclipse.swt.widgets.Event event) { Key key = translateKey(event.keyCode); if (key != null) { dispatch(new Event.Impl(new Events.Flags.Impl(), event.time, key, extractModifiers(event)), down); } else { System.err.println("KEY? " + event.keyCode + " / " + event.character); } char keyChar = event.character; if (Character.isISOControl(keyChar)) { dispatch(new TypedEvent.Impl(new Events.Flags.Impl(), event.time, keyChar), typed); } } });
public void handleEvent (org.eclipse.swt.widgets.Event event) { Key key = translateKey(event.keyCode); if (key != null) { dispatch(new Event.Impl(new Events.Flags.Impl(), event.time, key, extractModifiers(event)), down); } else { System.err.println("KEY? " + event.keyCode + " / " + event.character); } char keyChar = event.character; if (Character.isISOControl(keyChar)) { dispatch(new TypedEvent.Impl(new Events.Flags.Impl(), event.time, keyChar), typed); } } });
public void handleEvent(NativeEvent nativeEvent) { if (listener != null) { TypedEvent.Impl event = new TypedEvent.Impl( new Events.Flags.Impl(), PlayN.currentTime(), (char)nativeEvent.getCharCode()); listener.onKeyTyped(event); if (event.flags().getPreventDefault()) { nativeEvent.preventDefault(); } } } });