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