Wing Commander II
Reconstructed Win32 source (1996)
Toggle main menu visibility
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
10
int
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. */
17
void
KeyboardMousePump
(
void
)
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;
33
if
(
g_bKeyboardMouseEnabled
== 0)
34
return
;
35
36
speed =
g_cKeypadMouseSpeedValue
;
37
if
(
GetShiftKeyState
() != 0)
38
speed *= 2;
39
if
(
GetNumLockKeyState
() != 0)
40
g_cKeypadMouseSpeedValue
= 1;
41
if
(
GetNumpadPlusKeyState
() != 0 &&
g_cKeypadMouseSpeedValue
< 10)
42
g_cKeypadMouseSpeedValue
++;
43
if
(
GetNumpadMinusKeyState
() != 0 &&
g_cKeypadMouseSpeedValue
> 1)
44
g_cKeypadMouseSpeedValue
--;
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) &&
75
g_101_stScrViewInfo
.
pixels
!= 0) {
76
x = (short)(
g_16_stEventQueuePointerData
.
x
+ dx);
77
y = (short)(
g_16_stEventQueuePointerData
.
y
+ dy);
78
left =
g_101_stScrViewInfo
.
left
;
79
right =
g_101_stScrViewInfo
.
right
;
80
top =
g_101_stScrViewInfo
.
top
;
81
bottom =
g_101_stScrViewInfo
.
bottom
;
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;
90
g_16_stEventQueuePointerData
.
x
= x;
91
g_6_stPersonnelMouseData
.
x
=
g_16_stEventQueuePointerData
.
x
;
92
g_16_stEventQueuePointerData
.
y
= y;
93
g_6_stPersonnelMouseData
.
y
=
g_16_stEventQueuePointerData
.
y
;
94
SetPersonnelCursorPosition
(
g_16_stEventQueuePointerData
.
x
,
95
g_16_stEventQueuePointerData
.
y
, 0, 0);
96
g_2_bIgnoreNextCursorMoveFlag
= 1;
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;
105
QueueInputEvent
(1,
g_16_stEventQueuePointerData
.
x
,
106
g_16_stEventQueuePointerData
.
y
, 0, 1,
107
buttons, 0, 0, 0);
108
SetPersonnelCursorPosition
(
g_16_stEventQueuePointerData
.
x
,
109
g_16_stEventQueuePointerData
.
y
, 0, 0);
110
}
else
if
(dx != 0 && dy == 0) {
111
buttons &= 4;
112
QueueInputEvent
(2,
g_16_stEventQueuePointerData
.
x
,
113
g_16_stEventQueuePointerData
.
y
, 0, 0,
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;
121
QueueInputEvent
(1,
g_16_stEventQueuePointerData
.
x
,
122
g_16_stEventQueuePointerData
.
y
, 0,
123
buttons, 1, 0, 0, 0);
124
SetPersonnelCursorPosition
(
g_16_stEventQueuePointerData
.
x
,
125
g_16_stEventQueuePointerData
.
y
, 0, 0);
126
}
else
if
(dx != 0 && dy == 0) {
127
buttons &= 2;
128
QueueInputEvent
(2,
g_16_stEventQueuePointerData
.
x
,
129
g_16_stEventQueuePointerData
.
y
, 0,
130
buttons, 0, 0, 0, 0);
131
}
132
}
133
g_nKeyboardMouseButtons
= buttons;
134
}
GetDownArrowKeyState
int GetDownArrowKeyState(void)
Definition
winmain.c:1082
GetSpaceKeyState
int GetSpaceKeyState(void)
Definition
winmain.c:1118
SetMousePosition
void SetMousePosition(int x, int y)
Definition
winmain.c:975
GetReturnKeyState
int GetReturnKeyState(void)
Definition
winmain.c:1112
GetPageUpKeyState
int GetPageUpKeyState(void)
Definition
winmain.c:1058
SetPersonnelCursorPosition
void SetPersonnelCursorPosition(int x, int y, short unused1, short unused2)
Definition
main.c:16
GetPageDownKeyState
int GetPageDownKeyState(void)
Definition
winmain.c:1088
GetNumLockKeyState
int GetNumLockKeyState(void)
Definition
winmain.c:1094
GetRightArrowKeyState
int GetRightArrowKeyState(void)
Definition
winmain.c:1070
QueueInputEvent
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
KeyboardMousePump
void KeyboardMousePump(void)
Definition
kbmouse.c:17
GetNumpadPlusKeyState
int GetNumpadPlusKeyState(void)
Definition
winmain.c:1100
GetHomeKeyState
int GetHomeKeyState(void)
Definition
winmain.c:1046
GetNumpadMinusKeyState
int GetNumpadMinusKeyState(void)
Definition
winmain.c:1106
GetEndKeyState
int GetEndKeyState(void)
Definition
winmain.c:1076
GetShiftKeyState
int GetShiftKeyState(void)
Definition
winmain.c:1124
GetUpArrowKeyState
int GetUpArrowKeyState(void)
Definition
winmain.c:1052
GetLeftArrowKeyState
int GetLeftArrowKeyState(void)
Definition
winmain.c:1064
game.h
Shared Win32 declarations, types and library interfaces.
g_16_stEventQueuePointerData
QueuedMouseState g_16_stEventQueuePointerData
Definition
eventmgr.c:2525
g_nKeyboardMouseButtons
KBMOUSE_STATIC int g_nKeyboardMouseButtons
Definition
globals.h:941
g_bKeyboardMouseEnabled
int g_bKeyboardMouseEnabled
Definition
kbmouse.c:10
g_2_bIgnoreNextCursorMoveFlag
int g_2_bIgnoreNextCursorMoveFlag
Definition
eventmgr.c:2534
g_cKeypadMouseSpeedValue
signed char g_cKeypadMouseSpeedValue
Definition
eventmgr.c:2524
g_101_stScrViewInfo
Viewport g_101_stScrViewInfo
Definition
cockpt.c:3831
g_6_stPersonnelMouseData
PersonnelMouseSample g_6_stPersonnelMouseData
Definition
eventmgr.c:2561
PersonnelMouseSample::y
short y
Definition
globals.h:1037
PersonnelMouseSample::x
short x
Definition
globals.h:1036
QueuedMouseState::y
short y
Definition
globals.h:1009
QueuedMouseState::x
short x
Definition
globals.h:1008
Viewport::pixels
unsigned char * pixels
Definition
game.h:150
Viewport::right
short right
Definition
game.h:154
Viewport::bottom
short bottom
Definition
game.h:155
Viewport::left
short left
Definition
game.h:152
Viewport::top
short top
Definition
game.h:153
src
kbmouse.c
Generated by
1.18.0