Update for latest compilers and libraries
This commit is contained in:
parent
f826941fda
commit
da319963b6
4 changed files with 117 additions and 14 deletions
|
@ -1,6 +1,19 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <winable.h>
|
||||||
|
#include <winuser.h>
|
||||||
|
|
||||||
|
// For some reason, these are not defined in winuser.h like they used to be...
|
||||||
|
#ifndef VK_OEM_MINUS
|
||||||
|
#define VK_OEM_MINUS 0xBD
|
||||||
|
#endif
|
||||||
|
#ifndef VK_OEM_COMMA
|
||||||
|
#define VK_OEM_COMMA 0xBC
|
||||||
|
#endif
|
||||||
|
#ifndef KEYEVENTF_SCANCODE
|
||||||
|
#define KEYEVENTF_SCANCODE 0x08
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAPVK_VK_TO_VSC 0
|
#define MAPVK_VK_TO_VSC 0
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,37 @@
|
||||||
#pragma once
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) Shaul Eizikovich. All rights reserved.
|
||||||
|
|
||||||
|
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
||||||
|
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
public.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
Public header file for the vJoy project
|
||||||
|
Developpers that need to interface with vJoy need to include this file
|
||||||
|
|
||||||
|
Author:
|
||||||
|
|
||||||
|
|
||||||
|
Environment:
|
||||||
|
|
||||||
|
kernel mode and User mode
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
|
||||||
|
Revision History:
|
||||||
|
|
||||||
|
|
||||||
|
--*/
|
||||||
|
#ifndef _PUBLIC_H
|
||||||
|
#define _PUBLIC_H
|
||||||
|
|
||||||
// Compilation directives
|
// Compilation directives
|
||||||
#define PPJOY_MODE
|
#define PPJOY_MODE
|
||||||
|
@ -10,10 +43,6 @@
|
||||||
|
|
||||||
#include <INITGUID.H> // Definitions for controlling GUID initialization
|
#include <INITGUID.H> // Definitions for controlling GUID initialization
|
||||||
|
|
||||||
// Sideband comunication with vJoy Device
|
|
||||||
//{781EF630-72B2-11d2-B852-00C04FAD5101}
|
|
||||||
DEFINE_GUID(GUID_DEVINTERFACE_VJOY, 0x781EF630, 0x72B2, 0x11d2, 0xB8, 0x52, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x01);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Usage example:
|
// Usage example:
|
||||||
// CreateFile(TEXT("\\\\.\\vJoy"), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
// CreateFile(TEXT("\\\\.\\vJoy"), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||||
|
@ -31,7 +60,7 @@ DEFINE_GUID(GUID_DEVINTERFACE_VJOY, 0x781EF630, 0x72B2, 0x11d2, 0xB8, 0x52, 0x00
|
||||||
#define VER_X_ 0
|
#define VER_X_ 0
|
||||||
#define VER_H_ 2
|
#define VER_H_ 2
|
||||||
#define VER_M_ 0
|
#define VER_M_ 0
|
||||||
#define VER_L_ 4
|
#define VER_L_ 5
|
||||||
|
|
||||||
#define STRINGIFY_1(x) #x
|
#define STRINGIFY_1(x) #x
|
||||||
#define STRINGIFY(x) STRINGIFY_1(x)
|
#define STRINGIFY(x) STRINGIFY_1(x)
|
||||||
|
@ -51,15 +80,34 @@ DEFINE_GUID(GUID_DEVINTERFACE_VJOY, 0x781EF630, 0x72B2, 0x11d2, 0xB8, 0x52, 0x00
|
||||||
#define SERIALNUMBER_STR MAKEWIDE(STRINGIFY(VER_H_)) L"." MAKEWIDE(STRINGIFY(VER_M_)) L"." MAKEWIDE(STRINGIFY(VER_L_))
|
#define SERIALNUMBER_STR MAKEWIDE(STRINGIFY(VER_H_)) L"." MAKEWIDE(STRINGIFY(VER_M_)) L"." MAKEWIDE(STRINGIFY(VER_L_))
|
||||||
|
|
||||||
// Function codes;
|
// Function codes;
|
||||||
#define LOAD_POSITIONS 0x910
|
//#define LOAD_POSITIONS 0x910
|
||||||
#define GETATTRIB 0x911
|
//#define GETATTRIB 0x911
|
||||||
|
// #define GET_FFB_DATA 0x00222912 // METHOD_OUT_DIRECT + FILE_DEVICE_UNKNOWN + FILE_ANY_ACCESS
|
||||||
|
//#define SET_FFB_STAT 0x913 // METHOD_NEITHER
|
||||||
|
//#define GET_FFB_STAT 0x916
|
||||||
|
|
||||||
|
#define F_LOAD_POSITIONS 0x910
|
||||||
|
#define F_GETATTRIB 0x911
|
||||||
|
#define F_GET_FFB_DATA 0x912
|
||||||
|
#define F_SET_FFB_STAT 0x913
|
||||||
|
#define F_GET_FFB_STAT 0x916
|
||||||
|
#define F_GET_DEV_INFO 0x917
|
||||||
// IO Device Control codes;
|
// IO Device Control codes;
|
||||||
#define IOCTL_VJOY_GET_ATTRIB CTL_CODE (FILE_DEVICE_UNKNOWN, GETATTRIB, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
#define IOCTL_VJOY_GET_ATTRIB CTL_CODE (FILE_DEVICE_UNKNOWN, GETATTRIB, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||||
|
#define LOAD_POSITIONS CTL_CODE (FILE_DEVICE_UNKNOWN, F_LOAD_POSITIONS, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||||
|
#define GET_FFB_DATA CTL_CODE (FILE_DEVICE_UNKNOWN, F_GET_FFB_DATA, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||||||
|
#define SET_FFB_STAT CTL_CODE (FILE_DEVICE_UNKNOWN, F_SET_FFB_STAT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||||
|
#define GET_FFB_STAT CTL_CODE (FILE_DEVICE_UNKNOWN, F_GET_FFB_STAT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||||
|
#define GET_DEV_INFO CTL_CODE (FILE_DEVICE_UNKNOWN, F_GET_DEV_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||||
|
|
||||||
#ifndef __HIDPORT_H__
|
#ifndef __HIDPORT_H__
|
||||||
// Copied from hidport.h
|
// Copied from hidport.h
|
||||||
|
#define IOCTL_HID_SET_FEATURE 0xB0191
|
||||||
|
#define IOCTL_HID_WRITE_REPORT 0xB000F
|
||||||
|
|
||||||
|
#define MAX_N_DEVICES 16 // Maximum number of vJoy devices
|
||||||
|
|
||||||
|
|
||||||
typedef struct _HID_DEVICE_ATTRIBUTES {
|
typedef struct _HID_DEVICE_ATTRIBUTES {
|
||||||
|
|
||||||
ULONG Size;
|
ULONG Size;
|
||||||
|
@ -153,12 +201,14 @@ typedef struct _JOYSTICK_POSITION_V2
|
||||||
DWORD bHatsEx1; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
|
DWORD bHatsEx1; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
|
||||||
DWORD bHatsEx2; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
|
DWORD bHatsEx2; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
|
||||||
DWORD bHatsEx3; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch LONG lButtonsEx1; // Buttons 33-64
|
DWORD bHatsEx3; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch LONG lButtonsEx1; // Buttons 33-64
|
||||||
|
|
||||||
/// JOYSTICK_POSITION_V2 Extenssion
|
/// JOYSTICK_POSITION_V2 Extenssion
|
||||||
LONG lButtonsEx1; // Buttons 33-64
|
LONG lButtonsEx1; // Buttons 33-64
|
||||||
LONG lButtonsEx2; // Buttons 65-96
|
LONG lButtonsEx2; // Buttons 65-96
|
||||||
LONG lButtonsEx3; // Buttons 97-128
|
LONG lButtonsEx3; // Buttons 97-128
|
||||||
} JOYSTICK_POSITION_V2, *PJOYSTICK_POSITION_V2;
|
} JOYSTICK_POSITION_V2, *PJOYSTICK_POSITION_V2;
|
||||||
|
|
||||||
|
|
||||||
// HID Descriptor definitions
|
// HID Descriptor definitions
|
||||||
#define HID_USAGE_X 0x30
|
#define HID_USAGE_X 0x30
|
||||||
#define HID_USAGE_Y 0x31
|
#define HID_USAGE_Y 0x31
|
||||||
|
@ -170,3 +220,8 @@ typedef struct _JOYSTICK_POSITION_V2
|
||||||
#define HID_USAGE_SL1 0x37
|
#define HID_USAGE_SL1 0x37
|
||||||
#define HID_USAGE_WHL 0x38
|
#define HID_USAGE_WHL 0x38
|
||||||
#define HID_USAGE_POV 0x39
|
#define HID_USAGE_POV 0x39
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,35 @@ enum VjdStat /* Declares an enumeration data type called BOOLEAN */
|
||||||
VJD_STAT_MISS, // The vJoy Device is missing. It either does not exist or the driver is down.
|
VJD_STAT_MISS, // The vJoy Device is missing. It either does not exist or the driver is down.
|
||||||
VJD_STAT_UNKN // Unknown
|
VJD_STAT_UNKN // Unknown
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Error codes for some of the functions */
|
||||||
|
#define NO_HANDLE_BY_INDEX -1
|
||||||
|
#define BAD_PREPARSED_DATA -2
|
||||||
|
#define NO_CAPS -3
|
||||||
|
#define BAD_N_BTN_CAPS -4
|
||||||
|
#define BAD_CALLOC -5
|
||||||
|
#define BAD_BTN_CAPS -6
|
||||||
|
#define BAD_BTN_RANGE -7
|
||||||
|
#define BAD_N_VAL_CAPS -8
|
||||||
|
#define BAD_ID_RANGE -9
|
||||||
|
#define NO_SUCH_AXIS -10
|
||||||
|
|
||||||
|
/* Environment Variables */
|
||||||
|
#define INTERFACE_LOG_LEVEL "VJOYINTERFACELOGLEVEL"
|
||||||
|
#define INTERFACE_LOG_FILE "VJOYINTERFACELOGFILE"
|
||||||
|
#define INTERFACE_DEF_LOG_FILE "vJoyInterface.log"
|
||||||
|
|
||||||
|
struct DEV_INFO {
|
||||||
|
BYTE DeviceID; // Device ID: Valid values are 1-16
|
||||||
|
BYTE nImplemented; // Number of implemented device: Valid values are 1-16
|
||||||
|
BYTE isImplemented; // Is this device implemented?
|
||||||
|
BYTE MaxDevices; // Maximum number of devices that may be implemented (16)
|
||||||
|
BYTE DriverFFB; // Does this driver support FFB (False)
|
||||||
|
BYTE DeviceFFB; // Does this device support FFB (False)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
typedef void (CALLBACK *RemovalCB)(BOOL, BOOL, PVOID);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
///////////////////////////// vJoy device (collection) Control interface /////////////////////////////////
|
///////////////////////////// vJoy device (collection) Control interface /////////////////////////////////
|
||||||
/*
|
/*
|
||||||
|
@ -40,6 +69,8 @@ VJOYINTERFACE_API BOOL __cdecl vJoyEnabled(void);
|
||||||
VJOYINTERFACE_API PVOID __cdecl GetvJoyProductString(void);
|
VJOYINTERFACE_API PVOID __cdecl GetvJoyProductString(void);
|
||||||
VJOYINTERFACE_API PVOID __cdecl GetvJoyManufacturerString(void);
|
VJOYINTERFACE_API PVOID __cdecl GetvJoyManufacturerString(void);
|
||||||
VJOYINTERFACE_API PVOID __cdecl GetvJoySerialNumberString(void);
|
VJOYINTERFACE_API PVOID __cdecl GetvJoySerialNumberString(void);
|
||||||
|
VJOYINTERFACE_API BOOL __cdecl DriverMatch(WORD * DllVer, WORD * DrvVer);
|
||||||
|
VJOYINTERFACE_API VOID __cdecl RegisterRemovalCB(RemovalCB cb, PVOID data);
|
||||||
|
|
||||||
|
|
||||||
///// vJoy Device properties
|
///// vJoy Device properties
|
||||||
|
@ -70,4 +101,4 @@ VJOYINTERFACE_API BOOL __cdecl ResetPovs(UINT rID); // Reset all POV Switches
|
||||||
VJOYINTERFACE_API BOOL __cdecl SetAxis(LONG Value, UINT rID, UINT Axis); // Write Value to a given axis defined in the specified VDJ
|
VJOYINTERFACE_API BOOL __cdecl SetAxis(LONG Value, UINT rID, UINT Axis); // Write Value to a given axis defined in the specified VDJ
|
||||||
VJOYINTERFACE_API BOOL __cdecl SetBtn(BOOL Value, UINT rID, UCHAR nBtn); // Write Value to a given button defined in the specified VDJ
|
VJOYINTERFACE_API BOOL __cdecl SetBtn(BOOL Value, UINT rID, UCHAR nBtn); // Write Value to a given button defined in the specified VDJ
|
||||||
VJOYINTERFACE_API BOOL __cdecl SetDiscPov(int Value, UINT rID, UCHAR nPov); // Write Value to a given descrete POV defined in the specified VDJ
|
VJOYINTERFACE_API BOOL __cdecl SetDiscPov(int Value, UINT rID, UCHAR nPov); // Write Value to a given descrete POV defined in the specified VDJ
|
||||||
VJOYINTERFACE_API BOOL __cdecl SetContPov(DWORD Value, UINT rID, UCHAR nPov); // Write Value to a given continuous POV defined in the specified VDJ
|
VJOYINTERFACE_API BOOL __cdecl SetContPov(DWORD Value, UINT rID, UCHAR nPov); // Write Value to a given continuous POV defined in the specified VDJ
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
#include "keys.h"
|
#include "keys.h"
|
||||||
|
|
||||||
|
// Sideband comunication with vJoy Device
|
||||||
|
//{781EF630-72B2-11d2-B852-00C04FAD5101}
|
||||||
|
DEFINE_GUID(GUID_DEVINTERFACE_VJOY, 0x781EF630, 0x72B2, 0x11d2, 0xB8, 0x52, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x01);
|
||||||
|
|
||||||
unsigned int lastKeys;
|
unsigned int lastKeys;
|
||||||
unsigned int currentKeys;
|
unsigned int currentKeys;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue