parent
24b229aec9
commit
c634499a87
|
@ -2509,7 +2509,7 @@ int _check_move(int* a1)
|
||||||
|
|
||||||
if (isInCombat()) {
|
if (isInCombat()) {
|
||||||
if (*a1 != -1) {
|
if (*a1 != -1) {
|
||||||
if (gPressedPhysicalKeys[DIK_LCONTROL] || gPressedPhysicalKeys[DIK_RCONTROL]) {
|
if (gPressedPhysicalKeys[SDL_SCANCODE_RCTRL] || gPressedPhysicalKeys[SDL_SCANCODE_LCTRL]) {
|
||||||
int hitMode;
|
int hitMode;
|
||||||
bool aiming;
|
bool aiming;
|
||||||
interfaceGetCurrentHitMode(&hitMode, &aiming);
|
interfaceGetCurrentHitMode(&hitMode, &aiming);
|
||||||
|
|
2482
src/core.cc
2482
src/core.cc
File diff suppressed because it is too large
Load Diff
17
src/core.h
17
src/core.h
|
@ -6,6 +6,8 @@
|
||||||
#include "geometry.h"
|
#include "geometry.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
|
#include <SDL_scancode.h>
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#define MOUSE_DEFAULT_CURSOR_WIDTH 8
|
#define MOUSE_DEFAULT_CURSOR_WIDTH 8
|
||||||
|
@ -416,7 +418,7 @@ typedef struct LogicalKeyEntry {
|
||||||
} LogicalKeyEntry;
|
} LogicalKeyEntry;
|
||||||
|
|
||||||
typedef struct KeyboardEvent {
|
typedef struct KeyboardEvent {
|
||||||
unsigned char scanCode;
|
int scanCode;
|
||||||
unsigned short modifiers;
|
unsigned short modifiers;
|
||||||
} KeyboardEvent;
|
} KeyboardEvent;
|
||||||
|
|
||||||
|
@ -466,9 +468,9 @@ extern int _vcr_registered_atexit;
|
||||||
extern File* _vcr_file;
|
extern File* _vcr_file;
|
||||||
extern int _vcr_buffer_end;
|
extern int _vcr_buffer_end;
|
||||||
|
|
||||||
extern unsigned char gNormalizedQwertyKeys[256];
|
extern int gNormalizedQwertyKeys[SDL_NUM_SCANCODES];
|
||||||
extern InputEvent gInputEventQueue[40];
|
extern InputEvent gInputEventQueue[40];
|
||||||
extern STRUCT_6ABF50 _GNW95_key_time_stamps[256];
|
extern STRUCT_6ABF50 _GNW95_key_time_stamps[SDL_NUM_SCANCODES];
|
||||||
extern int _input_mx;
|
extern int _input_mx;
|
||||||
extern int _input_my;
|
extern int _input_my;
|
||||||
extern HHOOK _GNW95_keyboardHandle;
|
extern HHOOK _GNW95_keyboardHandle;
|
||||||
|
@ -521,8 +523,8 @@ extern void (*_zero_mem)();
|
||||||
extern bool gMmxSupported;
|
extern bool gMmxSupported;
|
||||||
extern unsigned char gLastVideoModePalette[268];
|
extern unsigned char gLastVideoModePalette[268];
|
||||||
extern KeyboardEvent gKeyboardEventsQueue[KEY_QUEUE_SIZE];
|
extern KeyboardEvent gKeyboardEventsQueue[KEY_QUEUE_SIZE];
|
||||||
extern LogicalKeyEntry gLogicalKeyEntries[256];
|
extern LogicalKeyEntry gLogicalKeyEntries[SDL_NUM_SCANCODES];
|
||||||
extern unsigned char gPressedPhysicalKeys[256];
|
extern unsigned char gPressedPhysicalKeys[SDL_NUM_SCANCODES];
|
||||||
extern unsigned int _kb_idle_start_time;
|
extern unsigned int _kb_idle_start_time;
|
||||||
extern KeyboardEvent gLastKeyboardEvent;
|
extern KeyboardEvent gLastKeyboardEvent;
|
||||||
extern int gKeyboardLayout;
|
extern int gKeyboardLayout;
|
||||||
|
@ -554,10 +556,7 @@ unsigned int getTicksSince(unsigned int a1);
|
||||||
unsigned int getTicksBetween(unsigned int a1, unsigned int a2);
|
unsigned int getTicksBetween(unsigned int a1, unsigned int a2);
|
||||||
unsigned int _get_bk_time();
|
unsigned int _get_bk_time();
|
||||||
void buildNormalizedQwertyKeys();
|
void buildNormalizedQwertyKeys();
|
||||||
void _GNW95_hook_input(int a1);
|
|
||||||
int _GNW95_input_init();
|
int _GNW95_input_init();
|
||||||
int _GNW95_hook_keyboard(int a1);
|
|
||||||
LRESULT CALLBACK _GNW95_keyboard_hook(int nCode, WPARAM wParam, LPARAM lParam);
|
|
||||||
void _GNW95_process_message();
|
void _GNW95_process_message();
|
||||||
void _GNW95_clear_time_stamps();
|
void _GNW95_clear_time_stamps();
|
||||||
void _GNW95_process_key(KeyboardData* data);
|
void _GNW95_process_key(KeyboardData* data);
|
||||||
|
@ -615,7 +614,7 @@ void keyboardEnable();
|
||||||
int keyboardIsDisabled();
|
int keyboardIsDisabled();
|
||||||
void keyboardSetLayout(int new_language);
|
void keyboardSetLayout(int new_language);
|
||||||
int keyboardGetLayout();
|
int keyboardGetLayout();
|
||||||
void _kb_simulate_key(int a1);
|
void _kb_simulate_key(KeyboardData* data);
|
||||||
int _kb_next_ascii_English_US();
|
int _kb_next_ascii_English_US();
|
||||||
int keyboardDequeueLogicalKeyCode();
|
int keyboardDequeueLogicalKeyCode();
|
||||||
void keyboardBuildQwertyConfiguration();
|
void keyboardBuildQwertyConfiguration();
|
||||||
|
|
518
src/dinput.cc
518
src/dinput.cc
|
@ -1,337 +1,14 @@
|
||||||
#include <initguid.h>
|
|
||||||
|
|
||||||
#include "dinput.h"
|
#include "dinput.h"
|
||||||
|
|
||||||
// NOTE: There is no such define in DirectX SDK. I've taken it from Wine at
|
#include <SDL.h>
|
||||||
// https://github.com/wine-mirror/wine/blob/master/dlls/dinput/data_formats.c.
|
|
||||||
#define DIDFT_OPTIONAL 0x80000000
|
|
||||||
|
|
||||||
// NOTE: This define is different in the newer DirectX. Check DirectX SDK 3.0
|
|
||||||
// at https://github.com/masonmc/dxsdk3/blob/master/sdk/inc/dinput.h.
|
|
||||||
#undef DIDFT_ANYINSTANCE
|
|
||||||
#define DIDFT_ANYINSTANCE 0x0000FF00
|
|
||||||
|
|
||||||
// 0x4FCE90
|
|
||||||
static const DIOBJECTDATAFORMAT dfDIMouse[] = {
|
|
||||||
{ &GUID_XAxis, DIMOFS_X, DIDFT_ANYINSTANCE | DIDFT_AXIS, 0 },
|
|
||||||
{ &GUID_YAxis, DIMOFS_Y, DIDFT_ANYINSTANCE | DIDFT_AXIS, 0 },
|
|
||||||
{ &GUID_ZAxis, DIMOFS_Z, DIDFT_OPTIONAL | DIDFT_ANYINSTANCE | DIDFT_AXIS, 0 },
|
|
||||||
{ NULL, DIMOFS_BUTTON0, DIDFT_ANYINSTANCE | DIDFT_BUTTON, 0 },
|
|
||||||
{ NULL, DIMOFS_BUTTON1, DIDFT_ANYINSTANCE | DIDFT_BUTTON, 0 },
|
|
||||||
{ NULL, DIMOFS_BUTTON2, DIDFT_OPTIONAL | DIDFT_ANYINSTANCE | DIDFT_BUTTON, 0 },
|
|
||||||
{ NULL, DIMOFS_BUTTON3, DIDFT_OPTIONAL | DIDFT_ANYINSTANCE | DIDFT_BUTTON, 0 },
|
|
||||||
};
|
|
||||||
|
|
||||||
// 0x4FCF00
|
|
||||||
const DIDATAFORMAT c_dfDIMouse = {
|
|
||||||
sizeof(DIDATAFORMAT),
|
|
||||||
sizeof(DIOBJECTDATAFORMAT),
|
|
||||||
DIDF_RELAXIS,
|
|
||||||
sizeof(DIMOUSESTATE),
|
|
||||||
sizeof(dfDIMouse) / sizeof(dfDIMouse[0]),
|
|
||||||
(LPDIOBJECTDATAFORMAT)dfDIMouse
|
|
||||||
};
|
|
||||||
|
|
||||||
// 0x4FCF20
|
|
||||||
static const DIOBJECTDATAFORMAT dfDIKeyboard[] = {
|
|
||||||
{ &GUID_Key, 0, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(0), 0 },
|
|
||||||
{ &GUID_Key, 1, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(1), 0 },
|
|
||||||
{ &GUID_Key, 2, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(2), 0 },
|
|
||||||
{ &GUID_Key, 3, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(3), 0 },
|
|
||||||
{ &GUID_Key, 4, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(4), 0 },
|
|
||||||
{ &GUID_Key, 5, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(5), 0 },
|
|
||||||
{ &GUID_Key, 6, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(6), 0 },
|
|
||||||
{ &GUID_Key, 7, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(7), 0 },
|
|
||||||
{ &GUID_Key, 8, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(8), 0 },
|
|
||||||
{ &GUID_Key, 9, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(9), 0 },
|
|
||||||
{ &GUID_Key, 10, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(10), 0 },
|
|
||||||
{ &GUID_Key, 11, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(11), 0 },
|
|
||||||
{ &GUID_Key, 12, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(12), 0 },
|
|
||||||
{ &GUID_Key, 13, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(13), 0 },
|
|
||||||
{ &GUID_Key, 14, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(14), 0 },
|
|
||||||
{ &GUID_Key, 15, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(15), 0 },
|
|
||||||
{ &GUID_Key, 16, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(16), 0 },
|
|
||||||
{ &GUID_Key, 17, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(17), 0 },
|
|
||||||
{ &GUID_Key, 18, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(18), 0 },
|
|
||||||
{ &GUID_Key, 19, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(19), 0 },
|
|
||||||
{ &GUID_Key, 20, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(20), 0 },
|
|
||||||
{ &GUID_Key, 21, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(21), 0 },
|
|
||||||
{ &GUID_Key, 22, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(22), 0 },
|
|
||||||
{ &GUID_Key, 23, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(23), 0 },
|
|
||||||
{ &GUID_Key, 24, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(24), 0 },
|
|
||||||
{ &GUID_Key, 25, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(25), 0 },
|
|
||||||
{ &GUID_Key, 26, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(26), 0 },
|
|
||||||
{ &GUID_Key, 27, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(27), 0 },
|
|
||||||
{ &GUID_Key, 28, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(28), 0 },
|
|
||||||
{ &GUID_Key, 29, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(29), 0 },
|
|
||||||
{ &GUID_Key, 30, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(30), 0 },
|
|
||||||
{ &GUID_Key, 31, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(31), 0 },
|
|
||||||
{ &GUID_Key, 32, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(32), 0 },
|
|
||||||
{ &GUID_Key, 33, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(33), 0 },
|
|
||||||
{ &GUID_Key, 34, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(34), 0 },
|
|
||||||
{ &GUID_Key, 35, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(35), 0 },
|
|
||||||
{ &GUID_Key, 36, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(36), 0 },
|
|
||||||
{ &GUID_Key, 37, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(37), 0 },
|
|
||||||
{ &GUID_Key, 38, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(38), 0 },
|
|
||||||
{ &GUID_Key, 39, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(39), 0 },
|
|
||||||
{ &GUID_Key, 40, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(40), 0 },
|
|
||||||
{ &GUID_Key, 41, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(41), 0 },
|
|
||||||
{ &GUID_Key, 42, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(42), 0 },
|
|
||||||
{ &GUID_Key, 43, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(43), 0 },
|
|
||||||
{ &GUID_Key, 44, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(44), 0 },
|
|
||||||
{ &GUID_Key, 45, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(45), 0 },
|
|
||||||
{ &GUID_Key, 46, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(46), 0 },
|
|
||||||
{ &GUID_Key, 47, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(47), 0 },
|
|
||||||
{ &GUID_Key, 48, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(48), 0 },
|
|
||||||
{ &GUID_Key, 49, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(49), 0 },
|
|
||||||
{ &GUID_Key, 50, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(50), 0 },
|
|
||||||
{ &GUID_Key, 51, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(51), 0 },
|
|
||||||
{ &GUID_Key, 52, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(52), 0 },
|
|
||||||
{ &GUID_Key, 53, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(53), 0 },
|
|
||||||
{ &GUID_Key, 54, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(54), 0 },
|
|
||||||
{ &GUID_Key, 55, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(55), 0 },
|
|
||||||
{ &GUID_Key, 56, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(56), 0 },
|
|
||||||
{ &GUID_Key, 57, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(57), 0 },
|
|
||||||
{ &GUID_Key, 58, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(58), 0 },
|
|
||||||
{ &GUID_Key, 59, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(59), 0 },
|
|
||||||
{ &GUID_Key, 60, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(60), 0 },
|
|
||||||
{ &GUID_Key, 61, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(61), 0 },
|
|
||||||
{ &GUID_Key, 62, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(62), 0 },
|
|
||||||
{ &GUID_Key, 63, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(63), 0 },
|
|
||||||
{ &GUID_Key, 64, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(64), 0 },
|
|
||||||
{ &GUID_Key, 65, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(65), 0 },
|
|
||||||
{ &GUID_Key, 66, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(66), 0 },
|
|
||||||
{ &GUID_Key, 67, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(67), 0 },
|
|
||||||
{ &GUID_Key, 68, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(68), 0 },
|
|
||||||
{ &GUID_Key, 69, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(69), 0 },
|
|
||||||
{ &GUID_Key, 70, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(70), 0 },
|
|
||||||
{ &GUID_Key, 71, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(71), 0 },
|
|
||||||
{ &GUID_Key, 72, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(72), 0 },
|
|
||||||
{ &GUID_Key, 73, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(73), 0 },
|
|
||||||
{ &GUID_Key, 74, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(74), 0 },
|
|
||||||
{ &GUID_Key, 75, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(75), 0 },
|
|
||||||
{ &GUID_Key, 76, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(76), 0 },
|
|
||||||
{ &GUID_Key, 77, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(77), 0 },
|
|
||||||
{ &GUID_Key, 78, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(78), 0 },
|
|
||||||
{ &GUID_Key, 79, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(79), 0 },
|
|
||||||
{ &GUID_Key, 80, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(80), 0 },
|
|
||||||
{ &GUID_Key, 81, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(81), 0 },
|
|
||||||
{ &GUID_Key, 82, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(82), 0 },
|
|
||||||
{ &GUID_Key, 83, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(83), 0 },
|
|
||||||
{ &GUID_Key, 84, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(84), 0 },
|
|
||||||
{ &GUID_Key, 85, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(85), 0 },
|
|
||||||
{ &GUID_Key, 86, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(86), 0 },
|
|
||||||
{ &GUID_Key, 87, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(87), 0 },
|
|
||||||
{ &GUID_Key, 88, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(88), 0 },
|
|
||||||
{ &GUID_Key, 89, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(89), 0 },
|
|
||||||
{ &GUID_Key, 90, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(90), 0 },
|
|
||||||
{ &GUID_Key, 91, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(91), 0 },
|
|
||||||
{ &GUID_Key, 92, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(92), 0 },
|
|
||||||
{ &GUID_Key, 93, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(93), 0 },
|
|
||||||
{ &GUID_Key, 94, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(94), 0 },
|
|
||||||
{ &GUID_Key, 95, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(95), 0 },
|
|
||||||
{ &GUID_Key, 96, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(96), 0 },
|
|
||||||
{ &GUID_Key, 97, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(97), 0 },
|
|
||||||
{ &GUID_Key, 98, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(98), 0 },
|
|
||||||
{ &GUID_Key, 99, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(99), 0 },
|
|
||||||
{ &GUID_Key, 100, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(100), 0 },
|
|
||||||
{ &GUID_Key, 101, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(101), 0 },
|
|
||||||
{ &GUID_Key, 102, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(102), 0 },
|
|
||||||
{ &GUID_Key, 103, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(103), 0 },
|
|
||||||
{ &GUID_Key, 104, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(104), 0 },
|
|
||||||
{ &GUID_Key, 105, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(105), 0 },
|
|
||||||
{ &GUID_Key, 106, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(106), 0 },
|
|
||||||
{ &GUID_Key, 107, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(107), 0 },
|
|
||||||
{ &GUID_Key, 108, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(108), 0 },
|
|
||||||
{ &GUID_Key, 109, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(109), 0 },
|
|
||||||
{ &GUID_Key, 110, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(110), 0 },
|
|
||||||
{ &GUID_Key, 111, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(111), 0 },
|
|
||||||
{ &GUID_Key, 112, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(112), 0 },
|
|
||||||
{ &GUID_Key, 113, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(113), 0 },
|
|
||||||
{ &GUID_Key, 114, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(114), 0 },
|
|
||||||
{ &GUID_Key, 115, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(115), 0 },
|
|
||||||
{ &GUID_Key, 116, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(116), 0 },
|
|
||||||
{ &GUID_Key, 117, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(117), 0 },
|
|
||||||
{ &GUID_Key, 118, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(118), 0 },
|
|
||||||
{ &GUID_Key, 119, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(119), 0 },
|
|
||||||
{ &GUID_Key, 120, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(120), 0 },
|
|
||||||
{ &GUID_Key, 121, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(121), 0 },
|
|
||||||
{ &GUID_Key, 122, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(122), 0 },
|
|
||||||
{ &GUID_Key, 123, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(123), 0 },
|
|
||||||
{ &GUID_Key, 124, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(124), 0 },
|
|
||||||
{ &GUID_Key, 125, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(125), 0 },
|
|
||||||
{ &GUID_Key, 126, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(126), 0 },
|
|
||||||
{ &GUID_Key, 127, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(127), 0 },
|
|
||||||
{ &GUID_Key, 128, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(128), 0 },
|
|
||||||
{ &GUID_Key, 129, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(129), 0 },
|
|
||||||
{ &GUID_Key, 130, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(130), 0 },
|
|
||||||
{ &GUID_Key, 131, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(131), 0 },
|
|
||||||
{ &GUID_Key, 132, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(132), 0 },
|
|
||||||
{ &GUID_Key, 133, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(133), 0 },
|
|
||||||
{ &GUID_Key, 134, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(134), 0 },
|
|
||||||
{ &GUID_Key, 135, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(135), 0 },
|
|
||||||
{ &GUID_Key, 136, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(136), 0 },
|
|
||||||
{ &GUID_Key, 137, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(137), 0 },
|
|
||||||
{ &GUID_Key, 138, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(138), 0 },
|
|
||||||
{ &GUID_Key, 139, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(139), 0 },
|
|
||||||
{ &GUID_Key, 140, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(140), 0 },
|
|
||||||
{ &GUID_Key, 141, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(141), 0 },
|
|
||||||
{ &GUID_Key, 142, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(142), 0 },
|
|
||||||
{ &GUID_Key, 143, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(143), 0 },
|
|
||||||
{ &GUID_Key, 144, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(144), 0 },
|
|
||||||
{ &GUID_Key, 145, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(145), 0 },
|
|
||||||
{ &GUID_Key, 146, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(146), 0 },
|
|
||||||
{ &GUID_Key, 147, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(147), 0 },
|
|
||||||
{ &GUID_Key, 148, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(148), 0 },
|
|
||||||
{ &GUID_Key, 149, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(149), 0 },
|
|
||||||
{ &GUID_Key, 150, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(150), 0 },
|
|
||||||
{ &GUID_Key, 151, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(151), 0 },
|
|
||||||
{ &GUID_Key, 152, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(152), 0 },
|
|
||||||
{ &GUID_Key, 153, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(153), 0 },
|
|
||||||
{ &GUID_Key, 154, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(154), 0 },
|
|
||||||
{ &GUID_Key, 155, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(155), 0 },
|
|
||||||
{ &GUID_Key, 156, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(156), 0 },
|
|
||||||
{ &GUID_Key, 157, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(157), 0 },
|
|
||||||
{ &GUID_Key, 158, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(158), 0 },
|
|
||||||
{ &GUID_Key, 159, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(159), 0 },
|
|
||||||
{ &GUID_Key, 160, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(160), 0 },
|
|
||||||
{ &GUID_Key, 161, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(161), 0 },
|
|
||||||
{ &GUID_Key, 162, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(162), 0 },
|
|
||||||
{ &GUID_Key, 163, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(163), 0 },
|
|
||||||
{ &GUID_Key, 164, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(164), 0 },
|
|
||||||
{ &GUID_Key, 165, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(165), 0 },
|
|
||||||
{ &GUID_Key, 166, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(166), 0 },
|
|
||||||
{ &GUID_Key, 167, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(167), 0 },
|
|
||||||
{ &GUID_Key, 168, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(168), 0 },
|
|
||||||
{ &GUID_Key, 169, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(169), 0 },
|
|
||||||
{ &GUID_Key, 170, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(170), 0 },
|
|
||||||
{ &GUID_Key, 171, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(171), 0 },
|
|
||||||
{ &GUID_Key, 172, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(172), 0 },
|
|
||||||
{ &GUID_Key, 173, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(173), 0 },
|
|
||||||
{ &GUID_Key, 174, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(174), 0 },
|
|
||||||
{ &GUID_Key, 175, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(175), 0 },
|
|
||||||
{ &GUID_Key, 176, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(176), 0 },
|
|
||||||
{ &GUID_Key, 177, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(177), 0 },
|
|
||||||
{ &GUID_Key, 178, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(178), 0 },
|
|
||||||
{ &GUID_Key, 179, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(179), 0 },
|
|
||||||
{ &GUID_Key, 180, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(180), 0 },
|
|
||||||
{ &GUID_Key, 181, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(181), 0 },
|
|
||||||
{ &GUID_Key, 182, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(182), 0 },
|
|
||||||
{ &GUID_Key, 183, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(183), 0 },
|
|
||||||
{ &GUID_Key, 184, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(184), 0 },
|
|
||||||
{ &GUID_Key, 185, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(185), 0 },
|
|
||||||
{ &GUID_Key, 186, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(186), 0 },
|
|
||||||
{ &GUID_Key, 187, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(187), 0 },
|
|
||||||
{ &GUID_Key, 188, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(188), 0 },
|
|
||||||
{ &GUID_Key, 189, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(189), 0 },
|
|
||||||
{ &GUID_Key, 190, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(190), 0 },
|
|
||||||
{ &GUID_Key, 191, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(191), 0 },
|
|
||||||
{ &GUID_Key, 192, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(192), 0 },
|
|
||||||
{ &GUID_Key, 193, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(193), 0 },
|
|
||||||
{ &GUID_Key, 194, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(194), 0 },
|
|
||||||
{ &GUID_Key, 195, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(195), 0 },
|
|
||||||
{ &GUID_Key, 196, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(196), 0 },
|
|
||||||
{ &GUID_Key, 197, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(197), 0 },
|
|
||||||
{ &GUID_Key, 198, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(198), 0 },
|
|
||||||
{ &GUID_Key, 199, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(199), 0 },
|
|
||||||
{ &GUID_Key, 200, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(200), 0 },
|
|
||||||
{ &GUID_Key, 201, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(201), 0 },
|
|
||||||
{ &GUID_Key, 202, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(202), 0 },
|
|
||||||
{ &GUID_Key, 203, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(203), 0 },
|
|
||||||
{ &GUID_Key, 204, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(204), 0 },
|
|
||||||
{ &GUID_Key, 205, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(205), 0 },
|
|
||||||
{ &GUID_Key, 206, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(206), 0 },
|
|
||||||
{ &GUID_Key, 207, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(207), 0 },
|
|
||||||
{ &GUID_Key, 208, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(208), 0 },
|
|
||||||
{ &GUID_Key, 209, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(209), 0 },
|
|
||||||
{ &GUID_Key, 210, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(210), 0 },
|
|
||||||
{ &GUID_Key, 211, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(211), 0 },
|
|
||||||
{ &GUID_Key, 212, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(212), 0 },
|
|
||||||
{ &GUID_Key, 213, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(213), 0 },
|
|
||||||
{ &GUID_Key, 214, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(214), 0 },
|
|
||||||
{ &GUID_Key, 215, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(215), 0 },
|
|
||||||
{ &GUID_Key, 216, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(216), 0 },
|
|
||||||
{ &GUID_Key, 217, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(217), 0 },
|
|
||||||
{ &GUID_Key, 218, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(218), 0 },
|
|
||||||
{ &GUID_Key, 219, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(219), 0 },
|
|
||||||
{ &GUID_Key, 220, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(220), 0 },
|
|
||||||
{ &GUID_Key, 221, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(221), 0 },
|
|
||||||
{ &GUID_Key, 222, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(222), 0 },
|
|
||||||
{ &GUID_Key, 223, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(223), 0 },
|
|
||||||
{ &GUID_Key, 224, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(224), 0 },
|
|
||||||
{ &GUID_Key, 225, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(225), 0 },
|
|
||||||
{ &GUID_Key, 226, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(226), 0 },
|
|
||||||
{ &GUID_Key, 227, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(227), 0 },
|
|
||||||
{ &GUID_Key, 228, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(228), 0 },
|
|
||||||
{ &GUID_Key, 229, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(229), 0 },
|
|
||||||
{ &GUID_Key, 230, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(230), 0 },
|
|
||||||
{ &GUID_Key, 231, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(231), 0 },
|
|
||||||
{ &GUID_Key, 232, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(232), 0 },
|
|
||||||
{ &GUID_Key, 233, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(233), 0 },
|
|
||||||
{ &GUID_Key, 234, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(234), 0 },
|
|
||||||
{ &GUID_Key, 235, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(235), 0 },
|
|
||||||
{ &GUID_Key, 236, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(236), 0 },
|
|
||||||
{ &GUID_Key, 237, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(237), 0 },
|
|
||||||
{ &GUID_Key, 238, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(238), 0 },
|
|
||||||
{ &GUID_Key, 239, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(239), 0 },
|
|
||||||
{ &GUID_Key, 240, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(240), 0 },
|
|
||||||
{ &GUID_Key, 241, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(241), 0 },
|
|
||||||
{ &GUID_Key, 242, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(242), 0 },
|
|
||||||
{ &GUID_Key, 243, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(243), 0 },
|
|
||||||
{ &GUID_Key, 244, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(244), 0 },
|
|
||||||
{ &GUID_Key, 245, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(245), 0 },
|
|
||||||
{ &GUID_Key, 246, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(246), 0 },
|
|
||||||
{ &GUID_Key, 247, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(247), 0 },
|
|
||||||
{ &GUID_Key, 248, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(248), 0 },
|
|
||||||
{ &GUID_Key, 249, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(249), 0 },
|
|
||||||
{ &GUID_Key, 250, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(250), 0 },
|
|
||||||
{ &GUID_Key, 251, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(251), 0 },
|
|
||||||
{ &GUID_Key, 252, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(252), 0 },
|
|
||||||
{ &GUID_Key, 253, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(253), 0 },
|
|
||||||
{ &GUID_Key, 254, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(254), 0 },
|
|
||||||
{ &GUID_Key, 255, DIDFT_OPTIONAL | DIDFT_BUTTON | DIDFT_MAKEINSTANCE(255), 0 },
|
|
||||||
};
|
|
||||||
|
|
||||||
// 0x4FDF20
|
|
||||||
static const DIDATAFORMAT c_dfDIKeyboard = {
|
|
||||||
sizeof(DIDATAFORMAT),
|
|
||||||
sizeof(DIOBJECTDATAFORMAT),
|
|
||||||
DIDF_RELAXIS,
|
|
||||||
256,
|
|
||||||
sizeof(dfDIKeyboard) / sizeof(dfDIKeyboard[0]),
|
|
||||||
(LPDIOBJECTDATAFORMAT)dfDIKeyboard
|
|
||||||
};
|
|
||||||
|
|
||||||
// 0x51E458
|
|
||||||
LPDIRECTINPUTA gDirectInput = NULL;
|
|
||||||
|
|
||||||
// 0x51E45C
|
|
||||||
LPDIRECTINPUTDEVICEA gMouseDevice = NULL;
|
|
||||||
|
|
||||||
// 0x51E460
|
|
||||||
LPDIRECTINPUTDEVICEA gKeyboardDevice = NULL;
|
|
||||||
|
|
||||||
// 0x51E464
|
|
||||||
int gKeyboardDeviceDataIndex = 0;
|
|
||||||
|
|
||||||
// 0x51E468
|
|
||||||
int gKeyboardDeviceDataLength = 0;
|
|
||||||
|
|
||||||
// 0x6B2560
|
|
||||||
DIDEVICEOBJECTDATA gKeyboardDeviceData[KEYBOARD_DEVICE_DATA_CAPACITY];
|
|
||||||
|
|
||||||
// 0x4E0400
|
// 0x4E0400
|
||||||
bool directInputInit()
|
bool directInputInit()
|
||||||
{
|
{
|
||||||
if (gDirectInput != NULL) {
|
if (SDL_InitSubSystem(SDL_INIT_EVENTS) != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT hr = gDirectInputCreateAProc(gInstance, DIRECTINPUT_VERSION, &gDirectInput, NULL);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mouseDeviceInit()) {
|
if (!mouseDeviceInit()) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -344,13 +21,7 @@ bool directInputInit()
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
|
||||||
keyboardDeviceFree();
|
directInputFree();
|
||||||
mouseDeviceFree();
|
|
||||||
|
|
||||||
if (gDirectInput != NULL) {
|
|
||||||
IDirectInput_Release(gDirectInput);
|
|
||||||
gDirectInput = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -358,69 +29,27 @@ err:
|
||||||
// 0x4E0478
|
// 0x4E0478
|
||||||
void directInputFree()
|
void directInputFree()
|
||||||
{
|
{
|
||||||
// NOTE: Uninline.
|
SDL_QuitSubSystem(SDL_INIT_EVENTS);
|
||||||
keyboardDeviceFree();
|
|
||||||
|
|
||||||
// NOTE: Uninline.
|
|
||||||
mouseDeviceFree();
|
|
||||||
|
|
||||||
if (gDirectInput != NULL) {
|
|
||||||
IDirectInput_Release(gDirectInput);
|
|
||||||
gDirectInput = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E04E8
|
// 0x4E04E8
|
||||||
bool mouseDeviceAcquire()
|
bool mouseDeviceAcquire()
|
||||||
{
|
{
|
||||||
if (gMouseDevice == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT hr = IDirectInputDevice_Acquire(gMouseDevice);
|
|
||||||
if (hr != DI_OK && hr != S_FALSE) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E0514
|
// 0x4E0514
|
||||||
bool mouseDeviceUnacquire()
|
bool mouseDeviceUnacquire()
|
||||||
{
|
{
|
||||||
if (gMouseDevice == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT hr = IDirectInputDevice_Unacquire(gMouseDevice);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E053C
|
// 0x4E053C
|
||||||
bool mouseDeviceGetData(MouseData* mouseState)
|
bool mouseDeviceGetData(MouseData* mouseState)
|
||||||
{
|
{
|
||||||
if (gMouseDevice == NULL) {
|
Uint32 buttons = SDL_GetRelativeMouseState(&(mouseState->x), &(mouseState->y));
|
||||||
return false;
|
mouseState->buttons[0] = (buttons & SDL_BUTTON(SDL_BUTTON_LEFT)) != 0;
|
||||||
}
|
mouseState->buttons[1] = (buttons & SDL_BUTTON(SDL_BUTTON_RIGHT)) != 0;
|
||||||
|
|
||||||
if (!mouseDeviceAcquire()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
DIMOUSESTATE dims;
|
|
||||||
HRESULT hr = IDirectInputDevice_GetDeviceState(gMouseDevice, sizeof(dims), &dims);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mouseState->x = dims.lX;
|
|
||||||
mouseState->y = dims.lY;
|
|
||||||
mouseState->buttons[0] = (dims.rgbButtons[0] & 0x80) != 0;
|
|
||||||
mouseState->buttons[1] = (dims.rgbButtons[1] & 0x80) != 0;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -428,173 +57,46 @@ bool mouseDeviceGetData(MouseData* mouseState)
|
||||||
// 0x4E05A8
|
// 0x4E05A8
|
||||||
bool keyboardDeviceAcquire()
|
bool keyboardDeviceAcquire()
|
||||||
{
|
{
|
||||||
if (gKeyboardDevice == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT hr = IDirectInputDevice_Acquire(gKeyboardDevice);
|
|
||||||
if (hr != DI_OK && hr != S_FALSE) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E05D4
|
// 0x4E05D4
|
||||||
bool keyboardDeviceUnacquire()
|
bool keyboardDeviceUnacquire()
|
||||||
{
|
{
|
||||||
if (gKeyboardDevice == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT hr = IDirectInputDevice_Unacquire(gKeyboardDevice);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E05FC
|
// 0x4E05FC
|
||||||
bool keyboardDeviceReset()
|
bool keyboardDeviceReset()
|
||||||
{
|
{
|
||||||
if (gKeyboardDevice == NULL) {
|
SDL_FlushEvents(SDL_KEYDOWN, SDL_TEXTINPUT);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!keyboardDeviceAcquire()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD items = -1;
|
|
||||||
HRESULT hr = IDirectInputDevice_GetDeviceData(gKeyboardDevice, sizeof(DIDEVICEOBJECTDATA), NULL, &items, 0);
|
|
||||||
if (hr != DI_OK && hr != DI_BUFFEROVERFLOW) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E0650
|
// 0x4E0650
|
||||||
bool keyboardDeviceGetData(KeyboardData* keyboardData)
|
bool keyboardDeviceGetData(KeyboardData* keyboardData)
|
||||||
{
|
{
|
||||||
if (gKeyboardDevice == NULL) {
|
return true;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!keyboardDeviceAcquire()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gKeyboardDeviceDataIndex >= gKeyboardDeviceDataLength) {
|
|
||||||
DWORD items = KEYBOARD_DEVICE_DATA_CAPACITY;
|
|
||||||
HRESULT hr = IDirectInputDevice_GetDeviceData(gKeyboardDevice, sizeof(DIDEVICEOBJECTDATA), gKeyboardDeviceData, &items, 0);
|
|
||||||
if (hr == DI_OK || hr == DI_BUFFEROVERFLOW) {
|
|
||||||
gKeyboardDeviceDataLength = items;
|
|
||||||
gKeyboardDeviceDataIndex = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gKeyboardDeviceDataIndex < gKeyboardDeviceDataLength) {
|
|
||||||
DIDEVICEOBJECTDATA* entry = &(gKeyboardDeviceData[gKeyboardDeviceDataIndex]);
|
|
||||||
keyboardData->key = entry->dwOfs & 0xFF;
|
|
||||||
keyboardData->down = (entry->dwData & 0x80) != 0;
|
|
||||||
gKeyboardDeviceDataIndex++;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E070C
|
// 0x4E070C
|
||||||
bool mouseDeviceInit()
|
bool mouseDeviceInit()
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
return SDL_SetRelativeMouseMode(SDL_TRUE) == 0;
|
||||||
|
|
||||||
hr = IDirectInput_CreateDevice(gDirectInput, GUID_SysMouse, &gMouseDevice, NULL);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = IDirectInputDevice_SetCooperativeLevel(gMouseDevice, gProgramWindow, DISCL_EXCLUSIVE | DISCL_FOREGROUND);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = IDirectInputDevice_SetDataFormat(gMouseDevice, &c_dfDIMouse);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
err:
|
|
||||||
|
|
||||||
// NOTE: Uninline.
|
|
||||||
mouseDeviceFree();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E078C
|
// 0x4E078C
|
||||||
void mouseDeviceFree()
|
void mouseDeviceFree()
|
||||||
{
|
{
|
||||||
if (gMouseDevice != NULL) {
|
|
||||||
IDirectInputDevice_Unacquire(gMouseDevice);
|
|
||||||
IDirectInputDevice_Release(gMouseDevice);
|
|
||||||
gMouseDevice = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E07B8
|
// 0x4E07B8
|
||||||
bool keyboardDeviceInit()
|
bool keyboardDeviceInit()
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
hr = IDirectInput_CreateDevice(gDirectInput, GUID_SysKeyboard, &gKeyboardDevice, NULL);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = IDirectInputDevice_SetCooperativeLevel(gKeyboardDevice, gProgramWindow, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = IDirectInputDevice_SetDataFormat(gKeyboardDevice, &c_dfDIKeyboard);
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
DIPROPDWORD dipdw;
|
|
||||||
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
|
|
||||||
dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
|
||||||
dipdw.diph.dwObj = 0;
|
|
||||||
dipdw.diph.dwHow = DIPH_DEVICE;
|
|
||||||
dipdw.dwData = KEYBOARD_DEVICE_DATA_CAPACITY;
|
|
||||||
|
|
||||||
hr = IDirectInputDevice_SetProperty(gKeyboardDevice, DIPROP_BUFFERSIZE, &(dipdw.diph));
|
|
||||||
if (hr != DI_OK) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
err:
|
|
||||||
|
|
||||||
// NOTE: Uninline.
|
|
||||||
keyboardDeviceFree();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4E0874
|
// 0x4E0874
|
||||||
void keyboardDeviceFree()
|
void keyboardDeviceFree()
|
||||||
{
|
{
|
||||||
if (gKeyboardDevice != NULL) {
|
|
||||||
IDirectInputDevice_Unacquire(gKeyboardDevice);
|
|
||||||
IDirectInputDevice_Release(gKeyboardDevice);
|
|
||||||
gKeyboardDevice = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
11
src/dinput.h
11
src/dinput.h
|
@ -3,8 +3,6 @@
|
||||||
|
|
||||||
#include "win32.h"
|
#include "win32.h"
|
||||||
|
|
||||||
#define KEYBOARD_DEVICE_DATA_CAPACITY (32)
|
|
||||||
|
|
||||||
typedef struct MouseData {
|
typedef struct MouseData {
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
|
@ -12,17 +10,10 @@ typedef struct MouseData {
|
||||||
} MouseData;
|
} MouseData;
|
||||||
|
|
||||||
typedef struct KeyboardData {
|
typedef struct KeyboardData {
|
||||||
char key;
|
int key;
|
||||||
char down;
|
char down;
|
||||||
} KeyboardData;
|
} KeyboardData;
|
||||||
|
|
||||||
extern LPDIRECTINPUTA gDirectInput;
|
|
||||||
extern LPDIRECTINPUTDEVICEA gMouseDevice;
|
|
||||||
extern LPDIRECTINPUTDEVICEA gKeyboardDevice;
|
|
||||||
extern int gKeyboardDeviceDataIndex;
|
|
||||||
extern int gKeyboardDeviceDataLength;
|
|
||||||
extern DIDEVICEOBJECTDATA gKeyboardDeviceData[KEYBOARD_DEVICE_DATA_CAPACITY];
|
|
||||||
|
|
||||||
bool directInputInit();
|
bool directInputInit();
|
||||||
void directInputFree();
|
void directInputFree();
|
||||||
bool mouseDeviceAcquire();
|
bool mouseDeviceAcquire();
|
||||||
|
|
|
@ -456,8 +456,8 @@ int gameHandleKey(int eventCode, bool isInCombatMode)
|
||||||
break;
|
break;
|
||||||
case KEY_TAB:
|
case KEY_TAB:
|
||||||
if (interfaceBarEnabled()
|
if (interfaceBarEnabled()
|
||||||
&& gPressedPhysicalKeys[DIK_LALT] == 0
|
&& gPressedPhysicalKeys[SDL_SCANCODE_LALT] == 0
|
||||||
&& gPressedPhysicalKeys[DIK_RALT] == 0) {
|
&& gPressedPhysicalKeys[SDL_SCANCODE_RALT] == 0) {
|
||||||
soundPlayFile("ib1p1xx1");
|
soundPlayFile("ib1p1xx1");
|
||||||
automapShow(true, false);
|
automapShow(true, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -876,7 +876,7 @@ void _gmouse_handle_event(int mouseX, int mouseY, int mouseState)
|
||||||
bool running;
|
bool running;
|
||||||
configGetBool(&gGameConfig, GAME_CONFIG_PREFERENCES_KEY, GAME_CONFIG_RUNNING_KEY, &running);
|
configGetBool(&gGameConfig, GAME_CONFIG_PREFERENCES_KEY, GAME_CONFIG_RUNNING_KEY, &running);
|
||||||
|
|
||||||
if (gPressedPhysicalKeys[DIK_LSHIFT] || gPressedPhysicalKeys[DIK_RSHIFT]) {
|
if (gPressedPhysicalKeys[SDL_SCANCODE_LSHIFT] || gPressedPhysicalKeys[SDL_SCANCODE_RSHIFT]) {
|
||||||
if (running) {
|
if (running) {
|
||||||
_dude_move(actionPoints);
|
_dude_move(actionPoints);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -788,7 +788,7 @@ int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter)
|
||||||
|
|
||||||
rc = _return_values[buttonIndex];
|
rc = _return_values[buttonIndex];
|
||||||
|
|
||||||
if (buttonIndex == MAIN_MENU_BUTTON_CREDITS && (gPressedPhysicalKeys[DIK_RSHIFT] != KEY_STATE_UP || gPressedPhysicalKeys[DIK_LSHIFT] != KEY_STATE_UP)) {
|
if (buttonIndex == MAIN_MENU_BUTTON_CREDITS && (gPressedPhysicalKeys[SDL_SCANCODE_RSHIFT] != KEY_STATE_UP || gPressedPhysicalKeys[SDL_SCANCODE_LSHIFT] != KEY_STATE_UP)) {
|
||||||
rc = MAIN_MENU_QUOTES;
|
rc = MAIN_MENU_QUOTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
119
src/win32.cc
119
src/win32.cc
|
@ -10,9 +10,6 @@
|
||||||
// 0x51E428
|
// 0x51E428
|
||||||
DirectDrawCreateProc* gDirectDrawCreateProc = NULL;
|
DirectDrawCreateProc* gDirectDrawCreateProc = NULL;
|
||||||
|
|
||||||
// 0x51E42C
|
|
||||||
DirectInputCreateAProc* gDirectInputCreateAProc = NULL;
|
|
||||||
|
|
||||||
// 0x51E430
|
// 0x51E430
|
||||||
DirectSoundCreateProc* gDirectSoundCreateProc = NULL;
|
DirectSoundCreateProc* gDirectSoundCreateProc = NULL;
|
||||||
|
|
||||||
|
@ -37,9 +34,6 @@ HANDLE _GNW95_mutex = NULL;
|
||||||
// 0x51E44C
|
// 0x51E44C
|
||||||
HMODULE gDDrawDLL = NULL;
|
HMODULE gDDrawDLL = NULL;
|
||||||
|
|
||||||
// 0x51E450
|
|
||||||
HMODULE gDInputDLL = NULL;
|
|
||||||
|
|
||||||
// 0x51E454
|
// 0x51E454
|
||||||
HMODULE gDSoundDLL = NULL;
|
HMODULE gDSoundDLL = NULL;
|
||||||
|
|
||||||
|
@ -51,22 +45,20 @@ int WINAPI WinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInst, _In_ LPST
|
||||||
_GNW95_mutex = CreateMutexA(0, TRUE, "GNW95MUTEX");
|
_GNW95_mutex = CreateMutexA(0, TRUE, "GNW95MUTEX");
|
||||||
if (GetLastError() == ERROR_SUCCESS) {
|
if (GetLastError() == ERROR_SUCCESS) {
|
||||||
ShowCursor(0);
|
ShowCursor(0);
|
||||||
if (_InitClass(hInst)) {
|
if (_InitInstance()) {
|
||||||
if (_InitInstance()) {
|
if (_LoadDirectX()) {
|
||||||
if (_LoadDirectX()) {
|
gInstance = hInst;
|
||||||
gInstance = hInst;
|
gCmdLine = lpCmdLine;
|
||||||
gCmdLine = lpCmdLine;
|
gCmdShow = nCmdShow;
|
||||||
gCmdShow = nCmdShow;
|
argsInit(&args);
|
||||||
argsInit(&args);
|
if (argsParse(&args, lpCmdLine)) {
|
||||||
if (argsParse(&args, lpCmdLine)) {
|
signal(1, _SignalHandler);
|
||||||
signal(1, _SignalHandler);
|
signal(3, _SignalHandler);
|
||||||
signal(3, _SignalHandler);
|
signal(5, _SignalHandler);
|
||||||
signal(5, _SignalHandler);
|
gProgramIsActive = true;
|
||||||
gProgramIsActive = true;
|
falloutMain(args.argc, args.argv);
|
||||||
falloutMain(args.argc, args.argv);
|
argsFree(&args);
|
||||||
argsFree(&args);
|
return 1;
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,24 +67,6 @@ int WINAPI WinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInst, _In_ LPST
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4DE7F4
|
|
||||||
ATOM _InitClass(HINSTANCE hInstance)
|
|
||||||
{
|
|
||||||
WNDCLASSA wc;
|
|
||||||
wc.style = 3;
|
|
||||||
wc.lpfnWndProc = _WindowProc;
|
|
||||||
wc.cbClsExtra = 0;
|
|
||||||
wc.cbWndExtra = 0;
|
|
||||||
wc.hInstance = hInstance;
|
|
||||||
wc.hIcon = NULL;
|
|
||||||
wc.hCursor = NULL;
|
|
||||||
wc.hbrBackground = NULL;
|
|
||||||
wc.lpszMenuName = NULL;
|
|
||||||
wc.lpszClassName = "GNW95 Class";
|
|
||||||
|
|
||||||
return RegisterClassA(&wc);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 0x4DE864
|
// 0x4DE864
|
||||||
bool _InitInstance()
|
bool _InitInstance()
|
||||||
{
|
{
|
||||||
|
@ -132,16 +106,6 @@ bool _LoadDirectX()
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
gDInputDLL = LoadLibraryA("DINPUT.DLL");
|
|
||||||
if (gDInputDLL == NULL) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
gDirectInputCreateAProc = (DirectInputCreateAProc*)GetProcAddress(gDInputDLL, "DirectInputCreateA");
|
|
||||||
if (gDirectInputCreateAProc == NULL) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
gDSoundDLL = LoadLibraryA("DSOUND.DLL");
|
gDSoundDLL = LoadLibraryA("DSOUND.DLL");
|
||||||
if (gDSoundDLL == NULL) {
|
if (gDSoundDLL == NULL) {
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -178,12 +142,6 @@ void _UnloadDirectX(void)
|
||||||
gDDrawDLL = NULL;
|
gDDrawDLL = NULL;
|
||||||
gDirectSoundCreateProc = NULL;
|
gDirectSoundCreateProc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gDInputDLL != NULL) {
|
|
||||||
FreeLibrary(gDInputDLL);
|
|
||||||
gDInputDLL = NULL;
|
|
||||||
gDirectInputCreateAProc = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4DE9F4
|
// 0x4DE9F4
|
||||||
|
@ -191,52 +149,3 @@ void _SignalHandler(int sig)
|
||||||
{
|
{
|
||||||
// TODO: Incomplete.
|
// TODO: Incomplete.
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4DE9FC
|
|
||||||
LRESULT CALLBACK _WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
switch (uMsg) {
|
|
||||||
case WM_DESTROY:
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
case WM_PAINT:
|
|
||||||
if (1) {
|
|
||||||
RECT updateRect;
|
|
||||||
if (GetUpdateRect(hWnd, &updateRect, FALSE)) {
|
|
||||||
Rect rect;
|
|
||||||
rect.left = updateRect.left;
|
|
||||||
rect.top = updateRect.top;
|
|
||||||
rect.right = updateRect.right - 1;
|
|
||||||
rect.bottom = updateRect.bottom - 1;
|
|
||||||
windowRefreshAll(&rect);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_ERASEBKGND:
|
|
||||||
return 1;
|
|
||||||
case WM_SETCURSOR:
|
|
||||||
if ((HWND)wParam == gProgramWindow) {
|
|
||||||
SetCursor(NULL);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_SYSCOMMAND:
|
|
||||||
switch (wParam & 0xFFF0) {
|
|
||||||
case SC_SCREENSAVE:
|
|
||||||
case SC_MONITORPOWER:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_ACTIVATEAPP:
|
|
||||||
gProgramIsActive = wParam;
|
|
||||||
if (wParam) {
|
|
||||||
_GNW95_hook_input(1);
|
|
||||||
windowRefreshAll(&_scr_size);
|
|
||||||
} else {
|
|
||||||
_GNW95_hook_input(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
|
||||||
}
|
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
#define DIRECTDRAW_VERSION 0x0300
|
#define DIRECTDRAW_VERSION 0x0300
|
||||||
#include <ddraw.h>
|
#include <ddraw.h>
|
||||||
|
|
||||||
#define DIRECTINPUT_VERSION 0x0300
|
|
||||||
#include <dinput.h>
|
|
||||||
#include <mmreg.h>
|
#include <mmreg.h>
|
||||||
|
|
||||||
#define DIRECTSOUND_VERSION 0x0300
|
#define DIRECTSOUND_VERSION 0x0300
|
||||||
|
@ -17,11 +15,9 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
typedef HRESULT(__stdcall DirectDrawCreateProc)(GUID*, LPDIRECTDRAW*, IUnknown*);
|
typedef HRESULT(__stdcall DirectDrawCreateProc)(GUID*, LPDIRECTDRAW*, IUnknown*);
|
||||||
typedef HRESULT(__stdcall DirectInputCreateAProc)(HINSTANCE, DWORD, LPDIRECTINPUTA*, IUnknown*);
|
|
||||||
typedef HRESULT(__stdcall DirectSoundCreateProc)(GUID*, LPDIRECTSOUND*, IUnknown*);
|
typedef HRESULT(__stdcall DirectSoundCreateProc)(GUID*, LPDIRECTSOUND*, IUnknown*);
|
||||||
|
|
||||||
extern DirectDrawCreateProc* gDirectDrawCreateProc;
|
extern DirectDrawCreateProc* gDirectDrawCreateProc;
|
||||||
extern DirectInputCreateAProc* gDirectInputCreateAProc;
|
|
||||||
extern DirectSoundCreateProc* gDirectSoundCreateProc;
|
extern DirectSoundCreateProc* gDirectSoundCreateProc;
|
||||||
extern HWND gProgramWindow;
|
extern HWND gProgramWindow;
|
||||||
extern HINSTANCE gInstance;
|
extern HINSTANCE gInstance;
|
||||||
|
@ -30,14 +26,11 @@ extern int gCmdShow;
|
||||||
extern bool gProgramIsActive;
|
extern bool gProgramIsActive;
|
||||||
extern HANDLE _GNW95_mutex;
|
extern HANDLE _GNW95_mutex;
|
||||||
extern HMODULE gDDrawDLL;
|
extern HMODULE gDDrawDLL;
|
||||||
extern HMODULE gDInputDLL;
|
|
||||||
extern HMODULE gDSoundDLL;
|
extern HMODULE gDSoundDLL;
|
||||||
|
|
||||||
ATOM _InitClass(HINSTANCE hInstance);
|
|
||||||
bool _InitInstance();
|
bool _InitInstance();
|
||||||
bool _LoadDirectX();
|
bool _LoadDirectX();
|
||||||
void _UnloadDirectX(void);
|
void _UnloadDirectX(void);
|
||||||
void _SignalHandler(int sig);
|
void _SignalHandler(int sig);
|
||||||
LRESULT CALLBACK _WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
||||||
|
|
||||||
#endif /* WIN32_H */
|
#endif /* WIN32_H */
|
||||||
|
|
Loading…
Reference in New Issue