2 * Keyboard related functions
4 * Copyright 1993 Bob Amstadt
10 extern BOOL MouseButtonsStates
[3];
11 extern BOOL AsyncMouseButtonsStates
[3];
12 extern BYTE KeyStateTable
[256];
13 extern BYTE AsyncKeyStateTable
[256];
15 /**********************************************************************
16 * GetKeyState [USER.106]
18 int GetKeyState(int keycode
)
22 return MouseButtonsStates
[0];
24 return MouseButtonsStates
[1];
26 return MouseButtonsStates
[2];
28 return KeyStateTable
[keycode
];
32 /**********************************************************************
33 * GetKeyboardState [USER.222]
35 void GetKeyboardState(BYTE FAR
*lpKeyState
)
37 if (lpKeyState
!= NULL
) {
38 KeyStateTable
[VK_LBUTTON
] = MouseButtonsStates
[0];
39 KeyStateTable
[VK_MBUTTON
] = MouseButtonsStates
[1];
40 KeyStateTable
[VK_RBUTTON
] = MouseButtonsStates
[2];
41 memcpy(lpKeyState
, KeyStateTable
, 256);
45 /**********************************************************************
46 * SetKeyboardState [USER.223]
48 void SetKeyboardState(BYTE FAR
*lpKeyState
)
50 if (lpKeyState
!= NULL
) {
51 memcpy(KeyStateTable
, lpKeyState
, 256);
52 MouseButtonsStates
[0] = KeyStateTable
[VK_LBUTTON
];
53 MouseButtonsStates
[1] = KeyStateTable
[VK_MBUTTON
];
54 MouseButtonsStates
[2] = KeyStateTable
[VK_RBUTTON
];
58 /**********************************************************************
59 * GetAsyncKeyState (USER.249)
61 * Determine if a key is or was pressed. retval has high-order
62 * byte set to 1 if currently pressed, low-order byte 1 if key has
65 * This uses the variable AsyncMouseButtonsStates and
66 * AsyncKeyStateTable (set in event.c) which have the mouse button
67 * number or key number (whichever is applicable) set to true if the
68 * mouse or key had been depressed since the last call to
71 int GetAsyncKeyState(int nKey
)
77 retval
= AsyncMouseButtonsStates
[0] |
78 (MouseButtonsStates
[0] << 8);
81 retval
= AsyncMouseButtonsStates
[1] |
82 (MouseButtonsStates
[1] << 8);
85 retval
= AsyncMouseButtonsStates
[2] |
86 (MouseButtonsStates
[2] << 8);
89 retval
= AsyncKeyStateTable
[nKey
] |
90 (KeyStateTable
[nKey
] << 8);
94 bzero(AsyncMouseButtonsStates
, 3); /* all states to false */
95 bzero(AsyncKeyStateTable
, 256);