1cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich/* 2cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Copyright (C) 2007 The Android Open Source Project 3cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * 4cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License"); 5cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * you may not use this file except in compliance with the License. 6cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * You may obtain a copy of the License at 7cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * 8cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * http://www.apache.org/licenses/LICENSE-2.0 9cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * 10cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Unless required by applicable law or agreed to in writing, software 11cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS, 12cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * See the License for the specific language governing permissions and 14cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * limitations under the License. 15cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 16cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 17cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichpackage com.android.quake; 18cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 19cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// Wrapper for native quake application 20cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 21cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichpublic class QuakeLib { 22cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 23cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int KEY_PRESS = 1; 24cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int KEY_RELEASE = 0; 25cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 26cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int MOTION_DOWN = 0; 27cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int MOTION_UP = 1; 28cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int MOTION_MOVE = 2; 29cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int MOTION_CANCEL = 3; 30cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 31cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // copied from Quake keys.h 32cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // these are the key numbers that should be passed to Key_Event 33cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 34cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 35cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // these are the key numbers that should be passed to Key_Event 36cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 37cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_TAB = 9; 38cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_ENTER = 13; 39cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_ESCAPE = 27; 40cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_SPACE = 32; 41cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 42cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // normal keys should be passed as lowercased ascii 43cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 44cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_BACKSPACE = 127; 45cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_UPARROW = 128; 46cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_DOWNARROW = 129; 47cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_LEFTARROW = 130; 48cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_RIGHTARROW = 131; 49cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 50cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_ALT = 132; 51cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_CTRL = 133; 52cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_SHIFT = 134; 53cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F1 = 135; 54cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F2 = 136; 55cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F3 = 137; 56cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F4 = 138; 57cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F5 = 139; 58cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F6 = 140; 59cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F7 = 141; 60cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F8 = 142; 61cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F9 = 143; 62cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F10 = 144; 63cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F11 = 145; 64cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_F12 = 146; 65cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_INS = 147; 66cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_DEL = 148; 67cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_PGDN = 149; 68cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_PGUP = 150; 69cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_HOME = 151; 70cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_END = 152; 71cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 72cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_PAUSE = 255; 73cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 74cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 75cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // mouse buttons generate virtual keys 76cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 77cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_MOUSE1 = 200; 78cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_MOUSE2 = 201; 79cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_MOUSE3 = 202; 80cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 81cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 82cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // joystick buttons 83cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 84cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_JOY1 = 203; 85cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_JOY2 = 204; 86cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_JOY3 = 205; 87cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_JOY4 = 206; 88cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 89cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 90cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // aux keys are for multi-buttoned joysticks to generate so they can use 91cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // the normal binding process 92cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 93cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX1 = 207; 94cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX2 = 208; 95cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX3 = 209; 96cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX4 = 210; 97cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX5 = 211; 98cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX6 = 212; 99cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX7 = 213; 100cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX8 = 214; 101cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX9 = 215; 102cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX10 = 216; 103cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX11 = 217; 104cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX12 = 218; 105cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX13 = 219; 106cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX14 = 220; 107cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX15 = 221; 108cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX16 = 222; 109cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX17 = 223; 110cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX18 = 224; 111cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX19 = 225; 112cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX20 = 226; 113cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX21 = 227; 114cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX22 = 228; 115cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX23 = 229; 116cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX24 = 230; 117cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX25 = 231; 118cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX26 = 232; 119cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX27 = 233; 120cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX28 = 234; 121cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX29 = 235; 122cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX30 = 236; 123cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX31 = 237; 124cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_AUX32 = 238; 125cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 126cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // JACK: Intellimouse(c) Mouse Wheel Support 127cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 128cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_MWHEELUP = 239; 129cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public static final int K_MWHEELDOWN = 240; 130cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 131cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich static { 132cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich System.loadLibrary("quake"); 133cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 134cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 135cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public QuakeLib() { 136cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich } 137cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 138cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public native boolean init(); 139cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 140cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich /** 141cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Used to report key events 142cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param type KEY_PRESS or KEY_RELEASE 143cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param value the key code. 144cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @return true if the event was handled. 145cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 146cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public native boolean event(int type, int value); 147cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 148cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich /** 149cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Used to report touch-screen events 150cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param eventTime the time the event happened 151cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param action the kind of action being performed -- one of either 152cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * {@link #MOTION_DOWN}, {@link #MOTION_MOVE}, {@link #MOTION_UP}, 153cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * or {@link #MOTION_CANCEL} 154cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param x the x coordinate in pixels 155cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param y the y coordinate in pixels 156cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param pressure the pressure 0..1, can be more than 1 sometimes 157cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param size the size of the area pressed (radius in X or Y) 158cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param deviceId the id of the device generating the events 159cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @return true if the event was handled. 160cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 161cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public native boolean motionEvent(long eventTime, int action, 162cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float x, float y, float pressure, float size, int deviceId); 163cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 164cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich /** 165cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Used to report trackball events 166cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param eventTime the time the event happened 167cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param action the kind of action being performed -- one of either 168cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * {@link #MOTION_DOWN}, {@link #MOTION_MOVE}, {@link #MOTION_UP}, 169cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * or {@link #MOTION_CANCEL} 170cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param x the x motion in pixels 171cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param y the y motion in pixels 172cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @return true if the event was handled. 173cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 174cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public native boolean trackballEvent(long eventTime, int action, 175cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float x, float y); 176cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich /** 177cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param width the current view width 178cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @param height the current view height 179cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * @return true if quake is in "game" mode, false if it is in "menu" or 180cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * "typing" mode. 181cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 182cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public native boolean step(int width, int height); 183cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 184cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich /** 185cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Tell Quake to quit. It will write out its config files and so forth. 186cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */ 187cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich public native void quit(); 188cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} 189