/** * libcaca Java bindings for libcaca * Copyright (c) 2009 Adrien Grand * * This library is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What the Fuck You Want * to Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. */ package org.zoy.caca; public class Event extends NativeObject { static { Caca.load(); } public static enum Type { NONE(0x0000), KEY_PRESS(0x0001), KEY_RELEASE(0x0002), MOUSE_PRESS(0x0004), MOUSE_RELEASE(0x0008), MOUSE_MOTION(0x0010), RESIZE(0x0020), QUIT(0x0040), ANY(0xffff); protected final int code; private Type(int code) { this.code = code; } public static Type forCode(int code) { Type[] types = Type.values(); for (Type type : types) { if (type.code == code) { return type; } } return null; } } public static enum Key { CTRL_A(0x01), CTRL_B(0x02), CTRL_C(0x03), CTRL_D(0x04), CTRL_E(0x05), CTRL_F(0x06), CTRL_G(0x07), BACKSPACE(0x08), TAB(0x09), CTRL_J(0x0a), CTRL_K(0x0b), CTRL_L(0x0c), RETURN(0x0d), CTRL_N(0x0e), CTRL_O(0x0f), CTRL_P(0x10), CTRL_Q(0x11), CTRL_R(0x12), PAUSE(0x13), CTRL_T(0x14), CTRL_U(0x15), CTRL_V(0x16), CTRL_W(0x17), CTRL_X(0x18), CTRL_Y(0x19), CTRL_Z(0x20), UP(0x111), DOWN(0x112), LEFT(0x113), RIGHT(0x114), INSERT(0x115), HOME(0x116), END(0x117), PAGE_HOME(0x118), PAGE_DOWN(0x119), F1(0x11a), F2(0x11b), F3(0x11c), F4(0x11d), F5(0x11e), F6(0x11f), F7(0x120), F8(0x121), F9(0x122), F10(0x123), F11(0x124), F12(0x125), F13(0x126), F14(0x127), F15(0x128); protected final int code; private Key(int code) { this.code = code; } public static Key forCode(int code) { Key[] keys = Key.values(); for (Key key : keys) { if (key.code == code) { return key; } } return null; } } protected Event(long ptr) { this.ptr = ptr; } private static native int getEventType(long eventPtr); public Type getType() { return Type.forCode(getEventType(ptr)); } private static native int getEventKeyCh(long eventPtr); public int getKeyCh() { return getEventKeyCh(ptr); } private static native int getEventKeyUtf32(long eventPtr); public int getKeyUtf32() { return getEventKeyUtf32(ptr); } private static native String getEventKeyUtf8(long eventPtr); public String getKeyUtf8() { return getEventKeyUtf8(ptr); } private static native int getEventMouseButton(long eventPtr); public int getMouseButton() { return getEventMouseButton(ptr); } private static native int getEventMouseX(long eventPtr); public int getMouseX() { return getEventMouseX(ptr); } private static native int getEventMouseY(long eventPtr); public int getMouseY() { return getEventMouseY(ptr); } private static native int getEventResizeWidth(long eventPtr); public int getResizeWidth() { return getEventResizeWidth(ptr); } private static native int getEventResizeHeight(long eventPtr); public int getResizeHeight() { return getEventResizeHeight(ptr); } private static native void freeEvent(long eventPtr); @Override public void finalize() throws Throwable { freeEvent(ptr); super.finalize(); } }