UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
cl_input.cpp File Reference

Client input handling - bindable commands. More...

Go to the source code of this file.

Data Structures

struct  kbutton_t
 
struct  cursorChange_s
 

Macros

#define MAX_KEYQ   64
 
#define SCROLL_BORDER   4
 
#define MOUSE_YAW_SCALE   0.1
 
#define MOUSE_PITCH_SCALE   0.1
 

Typedefs

typedef struct cursorChange_s cursorChange_t
 

Enumerations

enum  { BATTLESCAPE_MOUSE_DRAGGING_TRIGGER_X = VID_NORM_WIDTH / 10, BATTLESCAPE_MOUSE_DRAGGING_TRIGGER_Y = VID_NORM_HEIGHT / 10 }
 

Functions

static void IN_KeyDown (kbutton_t *b)
 Handles the catch of a kbutton_t state. More...
 
static void IN_KeyUp (kbutton_t *b)
 Handles the release of a kbutton_t state. More...
 
static void IN_TurnLeftDown_f (void)
 
static void IN_TurnLeftUp_f (void)
 
static void IN_TurnRightDown_f (void)
 
static void IN_TurnRightUp_f (void)
 
static void IN_TurnUpDown_f (void)
 
static void IN_TurnUpUp_f (void)
 
static void IN_TurnDownDown_f (void)
 
static void IN_TurnDownUp_f (void)
 
static void IN_PanTiltDown_f (void)
 
static void IN_PanTiltUp_f (void)
 
static void IN_ShiftLeftDown_f (void)
 
static void IN_ShiftLeftUp_f (void)
 
static void IN_ShiftLeftUpDown_f (void)
 
static void IN_ShiftLeftUpUp_f (void)
 
static void IN_ShiftLeftDownDown_f (void)
 
static void IN_ShiftLeftDownUp_f (void)
 
static void IN_ShiftRightDown_f (void)
 
static void IN_ShiftRightUp_f (void)
 
static void IN_ShiftRightUpDown_f (void)
 
static void IN_ShiftRightUpUp_f (void)
 
static void IN_ShiftRightDownDown_f (void)
 
static void IN_ShiftRightDownUp_f (void)
 
static void IN_ShiftUpDown_f (void)
 
static void IN_ShiftUpUp_f (void)
 
static void IN_ShiftDownDown_f (void)
 
static void IN_ShiftDownUp_f (void)
 
static void IN_ZoomInDown_f (void)
 
static void IN_ZoomInUp_f (void)
 
static void IN_ZoomOutDown_f (void)
 
static void IN_ZoomOutUp_f (void)
 
static void CL_LevelUp_f (void)
 Switch one worldlevel up. More...
 
static void CL_LevelDown_f (void)
 Switch one worldlevel down. More...
 
static void CL_ZoomInQuant_f (void)
 
static void CL_ZoomOutQuant_f (void)
 
static void CL_WheelDown_f (void)
 
static void CL_WheelUp_f (void)
 
static void CL_SelectDown_f (void)
 Left mouse click. More...
 
static void CL_SelectUp_f (void)
 
static void CL_ProcessMouseDragging (void)
 
static void CL_ActionDown_f (void)
 Middle mouse click. More...
 
static void CL_ActionUp_f (void)
 
static void CL_TurnDown_f (void)
 Turn button is hit. More...
 
static void CL_TurnUp_f (void)
 
static void CL_HudRadarDown_f (void)
 
static void CL_HudRadarUp_f (void)
 
static void CL_RightClickDown_f (void)
 Right mouse button is hit in menu. More...
 
static void CL_RightClickUp_f (void)
 Right mouse button is freed in menu. More...
 
static void CL_MiddleClickDown_f (void)
 Middle mouse button is hit in menu. More...
 
static void CL_MiddleClickUp_f (void)
 Middle mouse button is freed in menu. More...
 
static void CL_LeftClickDown_f (void)
 Left mouse button is hit in menu. More...
 
static void CL_LeftClickUp_f (void)
 Left mouse button is freed in menu. More...
 
float CL_GetKeyMouseState (int dir)
 
static void IN_Parse (void)
 Called every frame to parse the input. More...
 
static void IN_PrintKey (const SDL_Event *event, int down)
 Debug function to print sdl key events. More...
 
static bool IN_TranslateKey (const unsigned int keycode, unsigned int *ascii)
 Translate the keys to ufo keys. More...
 
void IN_EventEnqueue (unsigned int keyNum, unsigned short keyUnicode, bool keyDown)
 
static bool IN_ToggleFullscreen (const bool full)
 
void IN_Frame (void)
 Handle input events like key presses and joystick movement as well as window events. More...
 
static void CL_PressKey_f (void)
 
void IN_SetMouseSpace (mouseSpace_t mspace)
 
void IN_Init (void)
 
void IN_SendKeyEvents (void)
 

Variables

struct {
   unsigned int   key
 
   unsigned short   unicode
 
   int   down
 
keyq [MAX_KEYQ]
 
static int keyq_head = 0
 
static int keyq_tail = 0
 
static cvar_tin_debug
 
cvar_tcl_isometric
 
mouseSpace_t mouseSpace
 
int mousePosX
 
int mousePosY
 
static int oldMousePosX
 
static int oldMousePosY
 
static int battlescapeMouseDraggingX
 
static int battlescapeMouseDraggingY
 
static bool battlescapeMouseDraggingPossible
 
static bool battlescapeMouseDraggingActive
 
static kbutton_t in_turnleft
 
static kbutton_t in_turnright
 
static kbutton_t in_shiftleft
 
static kbutton_t in_shiftright
 
static kbutton_t in_shiftup
 
static kbutton_t in_shiftdown
 
static kbutton_t in_zoomin
 
static kbutton_t in_zoomout
 
static kbutton_t in_turnup
 
static kbutton_t in_turndown
 
static kbutton_t in_pantilt
 
static cursorChange_t cursorChange
 

Detailed Description

Client input handling - bindable commands.

Note
Continuous button event tracking is complicated by the fact that two different input sources (say, mouse button 1 and the control key) can both press the same button, but the button should only be released when both of the pressing key have been released.

When a key event issues a button command (+forward, +attack, etc), it appends its key number as a parameter to the command so it can be matched up with the release.

Key_Event(unsigned int key, unsigned short unicode, bool down, unsigned time);

+mlook src time

Definition in file cl_input.cpp.

Macro Definition Documentation

#define MAX_KEYQ   64

Definition at line 61 of file cl_input.cpp.

Referenced by IN_EventEnqueue(), and IN_SendKeyEvents().

#define MOUSE_PITCH_SCALE   0.1

Definition at line 541 of file cl_input.cpp.

Referenced by CL_GetKeyMouseState().

#define MOUSE_YAW_SCALE   0.1

Definition at line 540 of file cl_input.cpp.

Referenced by CL_GetKeyMouseState().

#define SCROLL_BORDER   4

Definition at line 539 of file cl_input.cpp.

Referenced by CL_GetKeyMouseState().

Typedef Documentation

Enumeration Type Documentation

anonymous enum
Enumerator
BATTLESCAPE_MOUSE_DRAGGING_TRIGGER_X 
BATTLESCAPE_MOUSE_DRAGGING_TRIGGER_Y 

Definition at line 86 of file cl_input.cpp.

Function Documentation

static void CL_ActionDown_f ( void  )
static

Middle mouse click.

Definition at line 424 of file cl_input.cpp.

References CL_OnBattlescape(), and IN_KeyDown().

Referenced by IN_Init().

static void CL_ActionUp_f ( void  )
static
static void CL_HudRadarDown_f ( void  )
static
Todo:
only call/register it when we are on the battlescape

Definition at line 462 of file cl_input.cpp.

References CL_BattlescapeRunning(), and UI_PushWindow().

Referenced by IN_Init().

static void CL_HudRadarUp_f ( void  )
static
Todo:
only call/register it when we are on the battlescape

Definition at line 472 of file cl_input.cpp.

References CL_BattlescapeRunning(), and UI_CloseWindow().

Referenced by IN_Init().

static void CL_LeftClickDown_f ( void  )
static

Left mouse button is hit in menu.

Definition at line 522 of file cl_input.cpp.

References IN_GetMouseSpace, K_MOUSE1, mousePosX, mousePosY, MS_UI, and UI_MouseDown().

Referenced by IN_Init().

static void CL_LeftClickUp_f ( void  )
static

Left mouse button is freed in menu.

Definition at line 532 of file cl_input.cpp.

References IN_GetMouseSpace, K_MOUSE1, mousePosX, mousePosY, MS_UI, and UI_MouseUp().

Referenced by IN_Init().

static void CL_LevelDown_f ( void  )
static

Switch one worldlevel down.

Definition at line 349 of file cl_input.cpp.

References CL_OnBattlescape(), cl_worldlevel, Cvar_SetValue(), and cvar_s::integer.

Referenced by IN_Init().

static void CL_LevelUp_f ( void  )
static

Switch one worldlevel up.

Definition at line 339 of file cl_input.cpp.

References cl, CL_OnBattlescape(), cl_worldlevel, Cvar_SetValue(), cvar_s::integer, and clientBattleScape_s::mapMaxLevel.

Referenced by IN_Init().

static void CL_MiddleClickDown_f ( void  )
static

Middle mouse button is hit in menu.

Definition at line 502 of file cl_input.cpp.

References IN_GetMouseSpace, K_MOUSE3, mousePosX, mousePosY, MS_UI, and UI_MouseDown().

Referenced by IN_Init().

static void CL_MiddleClickUp_f ( void  )
static

Middle mouse button is freed in menu.

Definition at line 512 of file cl_input.cpp.

References IN_GetMouseSpace, K_MOUSE3, mousePosX, mousePosY, MS_UI, and UI_MouseUp().

Referenced by IN_Init().

static void CL_PressKey_f ( void  )
static

Simulate press of a key with a command.

Definition at line 1175 of file cl_input.cpp.

References Cmd_Argc(), Cmd_Argv(), Com_Printf(), IN_EventEnqueue(), and Key_StringToKeynum().

Referenced by IN_Init().

static void CL_RightClickDown_f ( void  )
static

Right mouse button is hit in menu.

Definition at line 482 of file cl_input.cpp.

References IN_GetMouseSpace, K_MOUSE2, mousePosX, mousePosY, MS_UI, and UI_MouseDown().

Referenced by IN_Init().

static void CL_RightClickUp_f ( void  )
static

Right mouse button is freed in menu.

Definition at line 492 of file cl_input.cpp.

References IN_GetMouseSpace, K_MOUSE2, mousePosX, mousePosY, MS_UI, and UI_MouseUp().

Referenced by IN_Init().

static void CL_SelectUp_f ( void  )
static
static void CL_TurnDown_f ( void  )
static

Turn button is hit.

Definition at line 444 of file cl_input.cpp.

References CL_ActorTurnMouse(), IN_GetMouseSpace, MS_UI, and MS_WORLD.

Referenced by IN_Init().

static void CL_TurnUp_f ( void  )
static

Definition at line 452 of file cl_input.cpp.

References IN_GetMouseSpace, IN_SetMouseSpace(), MS_NULL, and MS_UI.

Referenced by IN_Init().

static void CL_WheelDown_f ( void  )
static

Definition at line 366 of file cl_input.cpp.

References UI_MouseScroll().

Referenced by IN_Init().

static void CL_WheelUp_f ( void  )
static

Definition at line 371 of file cl_input.cpp.

References UI_MouseScroll().

Referenced by IN_Init().

static void CL_ZoomInQuant_f ( void  )
static

Definition at line 356 of file cl_input.cpp.

References CL_CameraZoomIn().

Referenced by IN_Init().

static void CL_ZoomOutQuant_f ( void  )
static

Definition at line 361 of file cl_input.cpp.

References CL_CameraZoomOut().

Referenced by IN_Init().

void IN_EventEnqueue ( unsigned int  keyNum,
unsigned short  keyUnicode,
bool  keyDown 
)
static void IN_KeyUp ( kbutton_t b)
static

Handles the release of a kbutton_t state.

See also
IN_KeyDown
CL_GetKeyMouseState
Note
Called from console callbacks with two parameters, the key and the milliseconds when the key was released
Parameters
[in,out]bthe button state to

Definition at line 163 of file cl_input.cpp.

References Cmd_Argv(), kbutton_t::down, kbutton_t::downtime, kbutton_t::msec, and kbutton_t::state.

Referenced by CL_ActionUp_f(), IN_PanTiltUp_f(), IN_ShiftDownUp_f(), IN_ShiftLeftDownUp_f(), IN_ShiftLeftUp_f(), IN_ShiftLeftUpUp_f(), IN_ShiftRightDownUp_f(), IN_ShiftRightUp_f(), IN_ShiftRightUpUp_f(), IN_ShiftUpUp_f(), IN_TurnDownUp_f(), IN_TurnLeftUp_f(), IN_TurnRightUp_f(), IN_TurnUpUp_f(), IN_ZoomInUp_f(), and IN_ZoomOutUp_f().

static void IN_PanTiltDown_f ( void  )
static

Definition at line 236 of file cl_input.cpp.

References IN_GetMouseSpace, IN_KeyDown(), and MS_WORLD.

Referenced by IN_Init().

static void IN_PanTiltUp_f ( void  )
static

Definition at line 242 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_Parse ( void  )
static

Called every frame to parse the input.

See also
CL_Frame

Definition at line 584 of file cl_input.cpp.

References ca_active, CL_ActorMouseTrace(), cls, IN_SetMouseSpace(), MS_NULL, MS_UI, MS_WORLD, client_static_s::state, UI_IsMouseOnWindow(), viddef, viddef_t::viewHeight, and viddef_t::viewWidth.

Referenced by IN_Frame().

static void IN_PrintKey ( const SDL_Event *  event,
int  down 
)
inlinestatic

Debug function to print sdl key events.

Definition at line 609 of file cl_input.cpp.

References Com_Printf(), cvar_s::integer, and unicode.

Referenced by IN_Frame().

void IN_SendKeyEvents ( void  )
See also
CL_SendCommand

Definition at line 1284 of file cl_input.cpp.

References CL_Milliseconds(), down, key, Key_Event(), keyq, keyq_head, keyq_tail, MAX_KEYQ, and unicode.

Referenced by CL_SendCommand().

static void IN_ShiftDownDown_f ( void  )
static

Definition at line 310 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftDownUp_f ( void  )
static

Definition at line 314 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftLeftDown_f ( void  )
static

Definition at line 246 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftLeftDownDown_f ( void  )
static

Definition at line 264 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftLeftDownUp_f ( void  )
static

Definition at line 269 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftLeftUp_f ( void  )
static

Definition at line 250 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftLeftUpDown_f ( void  )
static

Definition at line 254 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftLeftUpUp_f ( void  )
static

Definition at line 259 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftRightDown_f ( void  )
static

Definition at line 274 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftRightDownDown_f ( void  )
static

Definition at line 292 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftRightDownUp_f ( void  )
static

Definition at line 297 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftRightUp_f ( void  )
static

Definition at line 278 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftRightUpDown_f ( void  )
static

Definition at line 282 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftRightUpUp_f ( void  )
static

Definition at line 287 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ShiftUpDown_f ( void  )
static

Definition at line 302 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ShiftUpUp_f ( void  )
static

Definition at line 306 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static bool IN_ToggleFullscreen ( const bool  full)
static

Definition at line 917 of file cl_input.cpp.

References cls.

Referenced by IN_Frame().

static void IN_TurnDownDown_f ( void  )
static

Definition at line 228 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_TurnDownUp_f ( void  )
static

Definition at line 232 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_TurnLeftDown_f ( void  )
static

Definition at line 204 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_TurnLeftUp_f ( void  )
static

Definition at line 208 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_TurnRightDown_f ( void  )
static

Definition at line 212 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_TurnRightUp_f ( void  )
static

Definition at line 216 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_TurnUpDown_f ( void  )
static

Definition at line 220 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_TurnUpUp_f ( void  )
static

Definition at line 224 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ZoomInDown_f ( void  )
static

Definition at line 318 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ZoomInUp_f ( void  )
static

Definition at line 322 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

static void IN_ZoomOutDown_f ( void  )
static

Definition at line 326 of file cl_input.cpp.

References IN_KeyDown().

Referenced by IN_Init().

static void IN_ZoomOutUp_f ( void  )
static

Definition at line 330 of file cl_input.cpp.

References IN_KeyUp().

Referenced by IN_Init().

Variable Documentation

bool battlescapeMouseDraggingActive
static

Definition at line 85 of file cl_input.cpp.

Referenced by CL_ProcessMouseDragging(), CL_SelectDown_f(), and CL_SelectUp_f().

bool battlescapeMouseDraggingPossible
static

Definition at line 85 of file cl_input.cpp.

Referenced by CL_ProcessMouseDragging(), CL_SelectDown_f(), and CL_SelectUp_f().

int battlescapeMouseDraggingX
static

Definition at line 83 of file cl_input.cpp.

Referenced by CL_ProcessMouseDragging(), and CL_SelectDown_f().

int battlescapeMouseDraggingY
static

Definition at line 84 of file cl_input.cpp.

Referenced by CL_ProcessMouseDragging(), and CL_SelectDown_f().

cvar_t* cl_isometric
cursorChange_t cursorChange
static

Definition at line 1193 of file cl_input.cpp.

cvar_t* in_debug
static

Definition at line 76 of file cl_input.cpp.

kbutton_t in_pantilt
static

Definition at line 108 of file cl_input.cpp.

kbutton_t in_shiftdown
static

Definition at line 105 of file cl_input.cpp.

kbutton_t in_shiftleft
static

Definition at line 104 of file cl_input.cpp.

kbutton_t in_shiftright
static

Definition at line 104 of file cl_input.cpp.

kbutton_t in_shiftup
static

Definition at line 105 of file cl_input.cpp.

kbutton_t in_turndown
static

Definition at line 107 of file cl_input.cpp.

kbutton_t in_turnleft
static

Definition at line 104 of file cl_input.cpp.

kbutton_t in_turnright
static

Definition at line 104 of file cl_input.cpp.

kbutton_t in_turnup
static

Definition at line 107 of file cl_input.cpp.

kbutton_t in_zoomin
static

Definition at line 106 of file cl_input.cpp.

kbutton_t in_zoomout
static

Definition at line 106 of file cl_input.cpp.

struct { ... } keyq[MAX_KEYQ]
int keyq_head = 0
static

Definition at line 73 of file cl_input.cpp.

Referenced by IN_EventEnqueue(), and IN_SendKeyEvents().

int keyq_tail = 0
static

Definition at line 74 of file cl_input.cpp.

Referenced by IN_SendKeyEvents().

mouseSpace_t mouseSpace

Definition at line 79 of file cl_input.cpp.

Referenced by IN_SetMouseSpace().

int oldMousePosX
static

Definition at line 81 of file cl_input.cpp.

Referenced by CL_GetKeyMouseState(), and IN_Frame().

int oldMousePosY
static

Definition at line 81 of file cl_input.cpp.

Referenced by CL_GetKeyMouseState(), and IN_Frame().

unsigned short unicode

Definition at line 69 of file cl_input.cpp.

Referenced by IN_Frame(), IN_PrintKey(), IN_SendKeyEvents(), Key_Console(), and Key_Event().