/* input.h: generalised input events layer for Fuse
Copyright (c) 2004 Philip Kendall
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Author contact information:
E-mail: philip-fuse@shadowmagic.org.uk
*/
#ifndef FUSE_INPUT_H
#define FUSE_INPUT_H
typedef enum input_event_type {
INPUT_EVENT_KEYPRESS,
INPUT_EVENT_KEYRELEASE,
INPUT_EVENT_JOYSTICK_PRESS,
INPUT_EVENT_JOYSTICK_RELEASE,
} input_event_type;
typedef enum input_key {
INPUT_KEY_NONE = 0x00,
INPUT_KEY_Tab = 0x09,
INPUT_KEY_Return = 0x0d,
INPUT_KEY_Escape = 0x1b,
INPUT_KEY_space = 0x20,
INPUT_KEY_exclam,
INPUT_KEY_quotedbl,
INPUT_KEY_numbersign,
INPUT_KEY_dollar,
INPUT_KEY_percent,
INPUT_KEY_ampersand,
INPUT_KEY_apostrophe,
INPUT_KEY_parenleft,
INPUT_KEY_parenright,
INPUT_KEY_asterisk,
INPUT_KEY_plus,
INPUT_KEY_comma = 0x2c,
INPUT_KEY_minus = 0x2d,
INPUT_KEY_period = 0x2e,
INPUT_KEY_slash = 0x2f,
INPUT_KEY_0 = 0x30,
INPUT_KEY_1,
INPUT_KEY_2,
INPUT_KEY_3,
INPUT_KEY_4,
INPUT_KEY_5,
INPUT_KEY_6,
INPUT_KEY_7,
INPUT_KEY_8,
INPUT_KEY_9,
INPUT_KEY_colon = 0x3a,
INPUT_KEY_semicolon,
INPUT_KEY_less,
INPUT_KEY_equal,
INPUT_KEY_greater,
INPUT_KEY_question,
INPUT_KEY_at,
INPUT_KEY_A = 0x41,
INPUT_KEY_B,
INPUT_KEY_C,
INPUT_KEY_D,
INPUT_KEY_E,
INPUT_KEY_F,
INPUT_KEY_G,
INPUT_KEY_H,
INPUT_KEY_I,
INPUT_KEY_J,
INPUT_KEY_K,
INPUT_KEY_L,
INPUT_KEY_M,
INPUT_KEY_N,
INPUT_KEY_O,
INPUT_KEY_P,
INPUT_KEY_Q,
INPUT_KEY_R,
INPUT_KEY_S,
INPUT_KEY_T,
INPUT_KEY_U,
INPUT_KEY_V,
INPUT_KEY_W,
INPUT_KEY_X,
INPUT_KEY_Y,
INPUT_KEY_Z,
INPUT_KEY_bracketleft,
INPUT_KEY_backslash,
INPUT_KEY_bracketright,
INPUT_KEY_asciicircum = 0x5e,
INPUT_KEY_dead_circumflex = 0x5e,
INPUT_KEY_underscore = 0x5f,
INPUT_KEY_a = 0x61,
INPUT_KEY_b,
INPUT_KEY_c,
INPUT_KEY_d,
INPUT_KEY_e,
INPUT_KEY_f,
INPUT_KEY_g,
INPUT_KEY_h,
INPUT_KEY_i,
INPUT_KEY_j,
INPUT_KEY_k,
INPUT_KEY_l,
INPUT_KEY_m,
INPUT_KEY_n,
INPUT_KEY_o,
INPUT_KEY_p,
INPUT_KEY_q,
INPUT_KEY_r,
INPUT_KEY_s,
INPUT_KEY_t,
INPUT_KEY_u,
INPUT_KEY_v,
INPUT_KEY_w,
INPUT_KEY_x,
INPUT_KEY_y,
INPUT_KEY_z,
INPUT_KEY_braceleft,
INPUT_KEY_bar,
INPUT_KEY_braceright,
INPUT_KEY_asciitilde,
INPUT_KEY_BackSpace = 0x7f,
INPUT_KEY_KP_Enter = 0x8d,
INPUT_KEY_Up = 0x100,
INPUT_KEY_Down,
INPUT_KEY_Left,
INPUT_KEY_Right,
INPUT_KEY_Insert,
INPUT_KEY_Delete,
INPUT_KEY_Home,
INPUT_KEY_End,
INPUT_KEY_Page_Up,
INPUT_KEY_Page_Down,
INPUT_KEY_Caps_Lock,
INPUT_KEY_F1,
INPUT_KEY_F2,
INPUT_KEY_F3,
INPUT_KEY_F4,
INPUT_KEY_F5,
INPUT_KEY_F6,
INPUT_KEY_F7,
INPUT_KEY_F8,
INPUT_KEY_F9,
INPUT_KEY_F10,
INPUT_KEY_F11,
INPUT_KEY_F12,
INPUT_KEY_Shift_L = 0x1000,
INPUT_KEY_Shift_R,
INPUT_KEY_Control_L,
INPUT_KEY_Control_R,
INPUT_KEY_Alt_L,
INPUT_KEY_Alt_R,
INPUT_KEY_Meta_L,
INPUT_KEY_Meta_R,
INPUT_KEY_Super_L,
INPUT_KEY_Super_R,
INPUT_KEY_Hyper_L,
INPUT_KEY_Hyper_R,
INPUT_KEY_Mode_switch,
INPUT_JOYSTICK_UP = 0x1100,
INPUT_JOYSTICK_DOWN,
INPUT_JOYSTICK_LEFT,
INPUT_JOYSTICK_RIGHT,
INPUT_JOYSTICK_FIRE_1,
INPUT_JOYSTICK_FIRE_2,
INPUT_JOYSTICK_FIRE_3,
INPUT_JOYSTICK_FIRE_4,
INPUT_JOYSTICK_FIRE_5,
INPUT_JOYSTICK_FIRE_6,
INPUT_JOYSTICK_FIRE_7,
INPUT_JOYSTICK_FIRE_8,
INPUT_JOYSTICK_FIRE_9,
INPUT_JOYSTICK_FIRE_10,
INPUT_JOYSTICK_FIRE_11,
INPUT_JOYSTICK_FIRE_12,
INPUT_JOYSTICK_FIRE_13,
INPUT_JOYSTICK_FIRE_14,
INPUT_JOYSTICK_FIRE_15,
} input_key;
typedef struct input_event_key_t {
input_key native_key;
input_key spectrum_key;
} input_event_key_t;
typedef struct input_event_joystick_t {
int which;
input_key button;
} input_event_joystick_t;
typedef struct input_event_t {
input_event_type type;
union {
input_event_key_t key;
input_event_joystick_t joystick;
} types;
} input_event_t;
int input_event( const input_event_t *event );
#endif /* #ifndef FUSE_INPUT_H */