| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.quake; |
| |
| // Wrapper for native quake application |
| |
| public class QuakeLib { |
| |
| public static final int KEY_PRESS = 1; |
| public static final int KEY_RELEASE = 0; |
| |
| public static final int MOTION_DOWN = 0; |
| public static final int MOTION_UP = 1; |
| public static final int MOTION_MOVE = 2; |
| public static final int MOTION_CANCEL = 3; |
| |
| // copied from Quake keys.h |
| // these are the key numbers that should be passed to Key_Event |
| // |
| // |
| // these are the key numbers that should be passed to Key_Event |
| // |
| public static final int K_TAB = 9; |
| public static final int K_ENTER = 13; |
| public static final int K_ESCAPE = 27; |
| public static final int K_SPACE = 32; |
| |
| // normal keys should be passed as lowercased ascii |
| |
| public static final int K_BACKSPACE = 127; |
| public static final int K_UPARROW = 128; |
| public static final int K_DOWNARROW = 129; |
| public static final int K_LEFTARROW = 130; |
| public static final int K_RIGHTARROW = 131; |
| |
| public static final int K_ALT = 132; |
| public static final int K_CTRL = 133; |
| public static final int K_SHIFT = 134; |
| public static final int K_F1 = 135; |
| public static final int K_F2 = 136; |
| public static final int K_F3 = 137; |
| public static final int K_F4 = 138; |
| public static final int K_F5 = 139; |
| public static final int K_F6 = 140; |
| public static final int K_F7 = 141; |
| public static final int K_F8 = 142; |
| public static final int K_F9 = 143; |
| public static final int K_F10 = 144; |
| public static final int K_F11 = 145; |
| public static final int K_F12 = 146; |
| public static final int K_INS = 147; |
| public static final int K_DEL = 148; |
| public static final int K_PGDN = 149; |
| public static final int K_PGUP = 150; |
| public static final int K_HOME = 151; |
| public static final int K_END = 152; |
| |
| public static final int K_PAUSE = 255; |
| |
| // |
| // mouse buttons generate virtual keys |
| // |
| public static final int K_MOUSE1 = 200; |
| public static final int K_MOUSE2 = 201; |
| public static final int K_MOUSE3 = 202; |
| |
| // |
| // joystick buttons |
| // |
| public static final int K_JOY1 = 203; |
| public static final int K_JOY2 = 204; |
| public static final int K_JOY3 = 205; |
| public static final int K_JOY4 = 206; |
| |
| // |
| // aux keys are for multi-buttoned joysticks to generate so they can use |
| // the normal binding process |
| // |
| public static final int K_AUX1 = 207; |
| public static final int K_AUX2 = 208; |
| public static final int K_AUX3 = 209; |
| public static final int K_AUX4 = 210; |
| public static final int K_AUX5 = 211; |
| public static final int K_AUX6 = 212; |
| public static final int K_AUX7 = 213; |
| public static final int K_AUX8 = 214; |
| public static final int K_AUX9 = 215; |
| public static final int K_AUX10 = 216; |
| public static final int K_AUX11 = 217; |
| public static final int K_AUX12 = 218; |
| public static final int K_AUX13 = 219; |
| public static final int K_AUX14 = 220; |
| public static final int K_AUX15 = 221; |
| public static final int K_AUX16 = 222; |
| public static final int K_AUX17 = 223; |
| public static final int K_AUX18 = 224; |
| public static final int K_AUX19 = 225; |
| public static final int K_AUX20 = 226; |
| public static final int K_AUX21 = 227; |
| public static final int K_AUX22 = 228; |
| public static final int K_AUX23 = 229; |
| public static final int K_AUX24 = 230; |
| public static final int K_AUX25 = 231; |
| public static final int K_AUX26 = 232; |
| public static final int K_AUX27 = 233; |
| public static final int K_AUX28 = 234; |
| public static final int K_AUX29 = 235; |
| public static final int K_AUX30 = 236; |
| public static final int K_AUX31 = 237; |
| public static final int K_AUX32 = 238; |
| |
| // JACK: Intellimouse(c) Mouse Wheel Support |
| |
| public static final int K_MWHEELUP = 239; |
| public static final int K_MWHEELDOWN = 240; |
| |
| static { |
| System.loadLibrary("quake"); |
| } |
| |
| public QuakeLib() { |
| } |
| |
| public native boolean init(); |
| |
| /** |
| * Used to report key events |
| * @param type KEY_PRESS or KEY_RELEASE |
| * @param value the key code. |
| * @return true if the event was handled. |
| */ |
| public native boolean event(int type, int value); |
| |
| /** |
| * Used to report touch-screen events |
| * @param eventTime the time the event happened |
| * @param action the kind of action being performed -- one of either |
| * {@link #MOTION_DOWN}, {@link #MOTION_MOVE}, {@link #MOTION_UP}, |
| * or {@link #MOTION_CANCEL} |
| * @param x the x coordinate in pixels |
| * @param y the y coordinate in pixels |
| * @param pressure the pressure 0..1, can be more than 1 sometimes |
| * @param size the size of the area pressed (radius in X or Y) |
| * @param deviceId the id of the device generating the events |
| * @return true if the event was handled. |
| */ |
| public native boolean motionEvent(long eventTime, int action, |
| float x, float y, float pressure, float size, int deviceId); |
| |
| /** |
| * Used to report trackball events |
| * @param eventTime the time the event happened |
| * @param action the kind of action being performed -- one of either |
| * {@link #MOTION_DOWN}, {@link #MOTION_MOVE}, {@link #MOTION_UP}, |
| * or {@link #MOTION_CANCEL} |
| * @param x the x motion in pixels |
| * @param y the y motion in pixels |
| * @return true if the event was handled. |
| */ |
| public native boolean trackballEvent(long eventTime, int action, |
| float x, float y); |
| /** |
| * @param width the current view width |
| * @param height the current view height |
| * @return true if quake is in "game" mode, false if it is in "menu" or |
| * "typing" mode. |
| */ |
| public native boolean step(int width, int height); |
| |
| /** |
| * Tell Quake to quit. It will write out its config files and so forth. |
| */ |
| public native void quit(); |
| } |