Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
kbmouse.c
Go to the documentation of this file.
1/*
2 * Keyboard mouse pump.
3 *
4 * Retail object 0x452450-0x45292F (link order; see docs/ORDER.md).
5 */
6/* This unit owns storage declared in globals.h as statics. */
7#define KBMOUSE_C
8#include "game.h"
9
10int g_bKeyboardMouseEnabled = 0; /* 0x0049be68 */
11
12/* Function start: 0x452450 */
13/* Drive the mouse cursor from the numeric keypad when keyboard-mouse mode is
14 * on: the arrows and corners move it by the current speed, NumLock resets the
15 * speed and +/- change it, Shift doubles it, and Return and Space stand in for
16 * the two buttons. */
18{
19 short dx;
20 short buttons;
21 short speed;
22 short right;
23 short dy;
24 short x;
25 short y;
26 short left;
27 short top;
28 short bottom;
29
30 dx = 0;
31 dy = 0;
32 buttons = 0;
34 return;
35
37 if (GetShiftKeyState() != 0)
38 speed *= 2;
39 if (GetNumLockKeyState() != 0)
45 if (GetReturnKeyState() != 0)
46 buttons |= 4;
47 if (GetSpaceKeyState() != 0)
48 buttons |= 2;
49 if (GetLeftArrowKeyState() != 0)
50 dx = (short)-speed;
51 if (GetRightArrowKeyState() != 0)
52 dx = (short)(speed + dx);
53 if (GetUpArrowKeyState() != 0)
54 dy = (short)-speed;
55 if (GetDownArrowKeyState() != 0)
56 dy = (short)(speed + dy);
57 if (GetHomeKeyState() != 0) {
58 dx = (short)(dx - speed);
59 dy = (short)(dy - speed);
60 }
61 if (GetPageUpKeyState() != 0) {
62 dx = (short)(speed + dx);
63 dy = (short)(dy - speed);
64 }
65 if (GetEndKeyState() != 0) {
66 dx = (short)(dx - speed);
67 dy = (short)(speed + dy);
68 }
69 if (GetPageDownKeyState() != 0) {
70 dx = (short)(speed + dx);
71 dy = (short)(speed + dy);
72 }
73
74 if ((dx != 0 || dy != 0) &&
76 x = (short)(g_16_stEventQueuePointerData.x + dx);
77 y = (short)(g_16_stEventQueuePointerData.y + dy);
82 if (left > x)
83 x = left;
84 else if (right < x)
85 x = right;
86 if (top > y)
87 y = top;
88 else if (bottom < y)
89 y = bottom;
97 SetMousePosition(x, y);
98 }
99
100 if (buttons != g_nKeyboardMouseButtons) {
101 dx = (short)(g_nKeyboardMouseButtons & 2);
102 dy = (short)(buttons & 2);
103 if (dx == 0 && dy != 0) {
104 buttons &= 4;
107 buttons, 0, 0, 0);
110 } else if (dx != 0 && dy == 0) {
111 buttons &= 4;
114 buttons, 0, 0, 0);
115 }
116
117 dx = (short)(g_nKeyboardMouseButtons & 4);
118 dy = (short)(buttons & 4);
119 if (dx == 0 && dy != 0) {
120 buttons &= 2;
123 buttons, 1, 0, 0, 0);
126 } else if (dx != 0 && dy == 0) {
127 buttons &= 2;
130 buttons, 0, 0, 0, 0);
131 }
132 }
133 g_nKeyboardMouseButtons = buttons;
134}
int GetDownArrowKeyState(void)
Definition winmain.c:1082
int GetSpaceKeyState(void)
Definition winmain.c:1118
void SetMousePosition(int x, int y)
Definition winmain.c:975
int GetReturnKeyState(void)
Definition winmain.c:1112
int GetPageUpKeyState(void)
Definition winmain.c:1058
void SetPersonnelCursorPosition(int x, int y, short unused1, short unused2)
Definition main.c:16
int GetPageDownKeyState(void)
Definition winmain.c:1088
int GetNumLockKeyState(void)
Definition winmain.c:1094
int GetRightArrowKeyState(void)
Definition winmain.c:1070
void QueueInputEvent(int type, int x, int y, int value, int primaryButton, int secondaryButton, unsigned int ignored, unsigned int field14, unsigned int field18)
Definition eventmgr.c:653
void KeyboardMousePump(void)
Definition kbmouse.c:17
int GetNumpadPlusKeyState(void)
Definition winmain.c:1100
int GetHomeKeyState(void)
Definition winmain.c:1046
int GetNumpadMinusKeyState(void)
Definition winmain.c:1106
int GetEndKeyState(void)
Definition winmain.c:1076
int GetShiftKeyState(void)
Definition winmain.c:1124
int GetUpArrowKeyState(void)
Definition winmain.c:1052
int GetLeftArrowKeyState(void)
Definition winmain.c:1064
Shared Win32 declarations, types and library interfaces.
QueuedMouseState g_16_stEventQueuePointerData
Definition eventmgr.c:2525
KBMOUSE_STATIC int g_nKeyboardMouseButtons
Definition globals.h:941
int g_bKeyboardMouseEnabled
Definition kbmouse.c:10
int g_2_bIgnoreNextCursorMoveFlag
Definition eventmgr.c:2534
signed char g_cKeypadMouseSpeedValue
Definition eventmgr.c:2524
Viewport g_101_stScrViewInfo
Definition cockpt.c:3831
PersonnelMouseSample g_6_stPersonnelMouseData
Definition eventmgr.c:2561
unsigned char * pixels
Definition game.h:150
short right
Definition game.h:154
short bottom
Definition game.h:155
short left
Definition game.h:152
short top
Definition game.h:153