All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.lessvoid.nifty.gdx.input.events.GdxKeyboardInputEvent Maven / Gradle / Ivy

The newest version!
package de.lessvoid.nifty.gdx.input.events;

import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.utils.Pool;
import de.lessvoid.nifty.NiftyInputConsumer;
import de.lessvoid.nifty.input.keyboard.KeyboardInputEvent;

import javax.annotation.Nonnull;

/**
 * This is the keyboard input event that is buffered from the libGDX data before its send to the Nifty-GUI.
 *
 * @author Martin Karing <[email protected]>
 */
public final class GdxKeyboardInputEvent extends KeyboardInputEvent implements GdxInputEvent, Pool.Poolable {
  /**
   * The internal object pool for this {@link GdxKeyboardInputEvent} class.
   */
  private static final Pool POOL = new Pool() {
    @Nonnull
    @Override
    protected GdxKeyboardInputEvent newObject() {
      return new GdxKeyboardInputEvent();
    }
  };

  /**
   * Gets an instance of the keyboard input event.
   *
   * @param key         the key that is pressed (has to be in the libGDX key value space)
   * @param character   the character of the key that is pressed
   * @param keyDown     {@code true} in case the key was pressed
   * @param keyTyped    {@code true} in case the key was typed
   * @param shiftDown   {@code true} in case shift is down right now
   * @param controlDown {@code true} in case control is down right now
   * @return the new event instance
   */
  public static GdxKeyboardInputEvent getInstance(
      final int key,
      final char character,
      final boolean keyDown,
      final boolean keyTyped,
      final boolean shiftDown,
      final boolean controlDown) {
    final GdxKeyboardInputEvent newEvent = POOL.obtain();
    newEvent.setData(key, character, keyDown, keyTyped, shiftDown, controlDown);
    return newEvent;
  }

  /**
   * Frees an instance of the keyboard event and sends it back into the object pool.
   *
   * @param event the object to free
   */
  public static void free(final GdxKeyboardInputEvent event) {
    POOL.free(event);
  }

  /**
   * This value is {@code true} in case the key was typed.
   */
  private boolean typed;

  /**
   * The ID of the key in the value space of libGDX.
   */
  private int gdxKey;

  /**
   * Creates a new keyboard input event.
   */
  private GdxKeyboardInputEvent() {
    super();
  }

  /**
   * Set the data of this input event.
   *
   * @param key         the key that was pressed
   * @param character   the character of the key
   * @param keyDown     {@code true} in case the key was pressed down
   * @param keyTyped    {@code true} in case the key was typed
   * @param shiftDown   {@code true} in case the shift key is down
   * @param controlDown {@code true} in case the control key is down
   */
  private void setData(
      final int key,
      final char character,
      final boolean keyDown,
      final boolean keyTyped,
      final boolean shiftDown,
      final boolean controlDown) {
    super.setData(getNiftyKeyCode(key), character, keyDown, shiftDown, controlDown);
    typed = keyTyped;
    gdxKey = key;
  }

  /**
   * This function converts a libGDX key code to a Nifty key code.
   *
   * @param gdxKeyCode the libGDX button key code
   * @return the nifty button key code
   */
  private static int getNiftyKeyCode(final int gdxKeyCode) {
    switch (gdxKeyCode) {
      case Input.Keys.NUM_0:
        return KeyboardInputEvent.KEY_0;
      case Input.Keys.NUM_1:
        return KeyboardInputEvent.KEY_1;
      case Input.Keys.NUM_2:
        return KeyboardInputEvent.KEY_2;
      case Input.Keys.NUM_3:
        return KeyboardInputEvent.KEY_3;
      case Input.Keys.NUM_4:
        return KeyboardInputEvent.KEY_4;
      case Input.Keys.NUM_5:
        return KeyboardInputEvent.KEY_5;
      case Input.Keys.NUM_6:
        return KeyboardInputEvent.KEY_6;
      case Input.Keys.NUM_7:
        return KeyboardInputEvent.KEY_7;
      case Input.Keys.NUM_8:
        return KeyboardInputEvent.KEY_8;
      case Input.Keys.NUM_9:
        return KeyboardInputEvent.KEY_9;
      case Input.Keys.A:
        return KeyboardInputEvent.KEY_A;
      case Input.Keys.ALT_LEFT:
        return KeyboardInputEvent.KEY_LMENU;
      case Input.Keys.ALT_RIGHT:
        return KeyboardInputEvent.KEY_RMENU;
      case Input.Keys.APOSTROPHE:
        return KeyboardInputEvent.KEY_APOSTROPHE;
      case Input.Keys.AT:
        return KeyboardInputEvent.KEY_AT;
      case Input.Keys.B:
        return KeyboardInputEvent.KEY_B;
      case Input.Keys.BACK:
        return KeyboardInputEvent.KEY_BACK;
      case Input.Keys.BACKSLASH:
        return KeyboardInputEvent.KEY_BACKSLASH;
      case Input.Keys.C:
        return KeyboardInputEvent.KEY_C;
      case Input.Keys.CALL:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.CAMERA:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.CLEAR:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.COMMA:
        return KeyboardInputEvent.KEY_COMMA;
      case Input.Keys.D:
        return KeyboardInputEvent.KEY_D;
      case Input.Keys.BACKSPACE:
        return KeyboardInputEvent.KEY_BACK;
      case Input.Keys.FORWARD_DEL:
        return KeyboardInputEvent.KEY_DELETE;
      case Input.Keys.CENTER:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.DOWN:
        return KeyboardInputEvent.KEY_DOWN;
      case Input.Keys.LEFT:
        return KeyboardInputEvent.KEY_LEFT;
      case Input.Keys.RIGHT:
        return KeyboardInputEvent.KEY_RIGHT;
      case Input.Keys.UP:
        return KeyboardInputEvent.KEY_UP;
      case Input.Keys.E:
        return KeyboardInputEvent.KEY_E;
      case Input.Keys.ENDCALL:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.ENTER:
        return KeyboardInputEvent.KEY_RETURN;
      case Input.Keys.ENVELOPE:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.EQUALS:
        return KeyboardInputEvent.KEY_EQUALS;
      case Input.Keys.EXPLORER:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.F:
        return KeyboardInputEvent.KEY_F;
      case Input.Keys.FOCUS:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.G:
        return KeyboardInputEvent.KEY_G;
      case Input.Keys.GRAVE:
        return KeyboardInputEvent.KEY_GRAVE;
      case Input.Keys.H:
        return KeyboardInputEvent.KEY_H;
      case Input.Keys.HEADSETHOOK:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.HOME:
        return KeyboardInputEvent.KEY_HOME;
      case Input.Keys.I:
        return KeyboardInputEvent.KEY_I;
      case Input.Keys.J:
        return KeyboardInputEvent.KEY_J;
      case Input.Keys.K:
        return KeyboardInputEvent.KEY_K;
      case Input.Keys.L:
        return KeyboardInputEvent.KEY_L;
      case Input.Keys.LEFT_BRACKET:
        return KeyboardInputEvent.KEY_LBRACKET;
      case Input.Keys.M:
        return KeyboardInputEvent.KEY_M;
      case Input.Keys.MEDIA_FAST_FORWARD:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.MEDIA_NEXT:
        return KeyboardInputEvent.KEY_NEXT;
      case Input.Keys.MEDIA_PLAY_PAUSE:
        return KeyboardInputEvent.KEY_PAUSE;
      case Input.Keys.MEDIA_PREVIOUS:
        return KeyboardInputEvent.KEY_PRIOR;
      case Input.Keys.MEDIA_REWIND:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.MEDIA_STOP:
        return KeyboardInputEvent.KEY_STOP;
      case Input.Keys.MENU:
        return KeyboardInputEvent.KEY_LMENU;
      case Input.Keys.MINUS:
        return KeyboardInputEvent.KEY_MINUS;
      case Input.Keys.MUTE:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.N:
        return KeyboardInputEvent.KEY_N;
      case Input.Keys.NOTIFICATION:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.NUM:
        return KeyboardInputEvent.KEY_NUMLOCK;
      case Input.Keys.O:
        return KeyboardInputEvent.KEY_O;
      case Input.Keys.P:
        return KeyboardInputEvent.KEY_P;
      case Input.Keys.PERIOD:
        return KeyboardInputEvent.KEY_PERIOD;
      case Input.Keys.PLUS:
        return KeyboardInputEvent.KEY_ADD;
      case Input.Keys.POUND:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.POWER:
        return KeyboardInputEvent.KEY_POWER;
      case Input.Keys.Q:
        return KeyboardInputEvent.KEY_Q;
      case Input.Keys.R:
        return KeyboardInputEvent.KEY_R;
      case Input.Keys.RIGHT_BRACKET:
        return KeyboardInputEvent.KEY_RBRACKET;
      case Input.Keys.S:
        return KeyboardInputEvent.KEY_S;
      case Input.Keys.SEARCH:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.SEMICOLON:
        return KeyboardInputEvent.KEY_SEMICOLON;
      case Input.Keys.SHIFT_LEFT:
        return KeyboardInputEvent.KEY_LSHIFT;
      case Input.Keys.SHIFT_RIGHT:
        return KeyboardInputEvent.KEY_RSHIFT;
      case Input.Keys.SLASH:
        return KeyboardInputEvent.KEY_SLASH;
      case Input.Keys.SOFT_LEFT:
        return KeyboardInputEvent.KEY_LMETA;
      case Input.Keys.SOFT_RIGHT:
        return KeyboardInputEvent.KEY_RMETA;
      case Input.Keys.SPACE:
        return KeyboardInputEvent.KEY_SPACE;
      case Input.Keys.STAR:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.SYM:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.T:
        return KeyboardInputEvent.KEY_T;
      case Input.Keys.TAB:
        return KeyboardInputEvent.KEY_TAB;
      case Input.Keys.U:
        return KeyboardInputEvent.KEY_U;
      case Input.Keys.UNKNOWN:
        return KeyboardInputEvent.KEY_UNLABELED;
      case Input.Keys.V:
        return KeyboardInputEvent.KEY_V;
      case Input.Keys.VOLUME_DOWN:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.VOLUME_UP:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.W:
        return KeyboardInputEvent.KEY_W;
      case Input.Keys.X:
        return KeyboardInputEvent.KEY_X;
      case Input.Keys.Y:
        return KeyboardInputEvent.KEY_Y;
      case Input.Keys.Z:
        return KeyboardInputEvent.KEY_Z;
      case Input.Keys.CONTROL_LEFT:
        return KeyboardInputEvent.KEY_LCONTROL;
      case Input.Keys.CONTROL_RIGHT:
        return KeyboardInputEvent.KEY_RCONTROL;
      case Input.Keys.ESCAPE:
        return KeyboardInputEvent.KEY_ESCAPE;
      case Input.Keys.END:
        return KeyboardInputEvent.KEY_END;
      case Input.Keys.INSERT:
        return KeyboardInputEvent.KEY_INSERT;
      case Input.Keys.PAGE_UP:
        return KeyboardInputEvent.KEY_PRIOR;
      case Input.Keys.PAGE_DOWN:
        return KeyboardInputEvent.KEY_NEXT;
      case Input.Keys.PICTSYMBOLS:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.SWITCH_CHARSET:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_A:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_B:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_C:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_X:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_Y:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_Z:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_L1:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_R1:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_L2:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_R2:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_THUMBL:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_THUMBR:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_START:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_SELECT:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.BUTTON_MODE:
        return KeyboardInputEvent.KEY_NONE;
      case Input.Keys.NUMPAD_0:
        return KeyboardInputEvent.KEY_NUMPAD0;
      case Input.Keys.NUMPAD_1:
        return KeyboardInputEvent.KEY_NUMPAD1;
      case Input.Keys.NUMPAD_2:
        return KeyboardInputEvent.KEY_NUMPAD2;
      case Input.Keys.NUMPAD_3:
        return KeyboardInputEvent.KEY_NUMPAD3;
      case Input.Keys.NUMPAD_4:
        return KeyboardInputEvent.KEY_NUMPAD4;
      case Input.Keys.NUMPAD_5:
        return KeyboardInputEvent.KEY_NUMPAD5;
      case Input.Keys.NUMPAD_6:
        return KeyboardInputEvent.KEY_NUMPAD6;
      case Input.Keys.NUMPAD_7:
        return KeyboardInputEvent.KEY_NUMPAD7;
      case Input.Keys.NUMPAD_8:
        return KeyboardInputEvent.KEY_NUMPAD8;
      case Input.Keys.NUMPAD_9:
        return KeyboardInputEvent.KEY_NUMPAD9;
      case Input.Keys.COLON:
        return KeyboardInputEvent.KEY_COLON;
      case Input.Keys.F1:
        return KeyboardInputEvent.KEY_F1;
      case Input.Keys.F2:
        return KeyboardInputEvent.KEY_F2;
      case Input.Keys.F3:
        return KeyboardInputEvent.KEY_F3;
      case Input.Keys.F4:
        return KeyboardInputEvent.KEY_F4;
      case Input.Keys.F5:
        return KeyboardInputEvent.KEY_F5;
      case Input.Keys.F6:
        return KeyboardInputEvent.KEY_F6;
      case Input.Keys.F7:
        return KeyboardInputEvent.KEY_F7;
      case Input.Keys.F8:
        return KeyboardInputEvent.KEY_F8;
      case Input.Keys.F9:
        return KeyboardInputEvent.KEY_F9;
      case Input.Keys.F10:
        return KeyboardInputEvent.KEY_F10;
      case Input.Keys.F11:
        return KeyboardInputEvent.KEY_F11;
      case Input.Keys.F12:
        return KeyboardInputEvent.KEY_F12;
      default:
        return KeyboardInputEvent.KEY_NONE;
    }
  }

  @Override
  public boolean sendToNifty(@Nonnull final NiftyInputConsumer consumer) {
    return consumer.processKeyboardEvent(this);
  }

  @Override
  public boolean sendToGdx(@Nonnull final InputProcessor processor) {
    if (typed) {
      return processor.keyTyped(getCharacter());
    } else if (isKeyDown()) {
      return processor.keyDown(gdxKey);
    } else {
      return processor.keyUp(gdxKey);
    }
  }

  @Override
  public void freeEvent() {
    free(this);
  }

  @Override
  public void reset() {
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy