109 lines
3.2 KiB
C
109 lines
3.2 KiB
C
/*****************************************************************************
|
|
*
|
|
* DILib1.c
|
|
*
|
|
* Copyright (c) 1996 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* Abstract:
|
|
*
|
|
* Objects exported statically into our library.
|
|
*
|
|
* Contents:
|
|
*
|
|
* c_dfDIKeyboard
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#include "dinputpr.h"
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* @doc INTERNAL
|
|
*
|
|
* @global DIOBJECTDATAFORMAT | c_rgdoiDIKbd[] |
|
|
*
|
|
* Device object data formats for keyboard-style access.
|
|
*
|
|
* @doc EXTERNAL
|
|
*
|
|
* @global DIDATAFORMAT | c_dfDIKeyboard |
|
|
*
|
|
* A predefined <t DIDATAFORMAT> structure which describes a
|
|
* keyboard device. This object is provided in the
|
|
* DINPUT.LIB library file as a convenience.
|
|
*
|
|
* A pointer to this structure may be passed to
|
|
* <mf IDirectInputDevice::SetDataFormat> to indicate that
|
|
* the device will be accessed in the form of a keyboard.
|
|
*
|
|
* When a device has been set to the keyboard data format,
|
|
* the <mf IDirectInputDevice::GetDeviceState> function
|
|
* behaves in the same way as the Windows <f GetKeyboardState>
|
|
* function: The device state is stored in an array of
|
|
* 256 bytes, with each byte corresponding to the state
|
|
* of a key. For example, if high bit of the <c DIK_ENTER>'th
|
|
* byte is set, then the Enter key is being held down.
|
|
*
|
|
* When a device has been set to the keyboard data format,
|
|
* the <mf IDirectInputDevice::GetDeviceData> function
|
|
* returns a <t DIDEVICEOBJECTDATA> whose <p dwOfs>
|
|
* field is a <c DIK_*> value which describes the
|
|
* key which was pressed or released.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#pragma BEGIN_CONST_DATA
|
|
|
|
#define MAKEODF(b) \
|
|
{ &GUID_Key, b, \
|
|
DIDFT_BUTTON | DIDFT_MAKEINSTANCE(b) | 0x80000000, } \
|
|
|
|
#define MAKEODF16(b) \
|
|
MAKEODF(b+0x00), \
|
|
MAKEODF(b+0x01), \
|
|
MAKEODF(b+0x02), \
|
|
MAKEODF(b+0x03), \
|
|
MAKEODF(b+0x04), \
|
|
MAKEODF(b+0x05), \
|
|
MAKEODF(b+0x06), \
|
|
MAKEODF(b+0x07), \
|
|
MAKEODF(b+0x08), \
|
|
MAKEODF(b+0x09), \
|
|
MAKEODF(b+0x0A), \
|
|
MAKEODF(b+0x0B), \
|
|
MAKEODF(b+0x0C), \
|
|
MAKEODF(b+0x0D), \
|
|
MAKEODF(b+0x0E), \
|
|
MAKEODF(b+0x0F) \
|
|
|
|
static DIOBJECTDATAFORMAT c_rgodfDIKeyboard[] = {
|
|
MAKEODF16(0x00),
|
|
MAKEODF16(0x10),
|
|
MAKEODF16(0x20),
|
|
MAKEODF16(0x30),
|
|
MAKEODF16(0x40),
|
|
MAKEODF16(0x50),
|
|
MAKEODF16(0x60),
|
|
MAKEODF16(0x70),
|
|
MAKEODF16(0x80),
|
|
MAKEODF16(0x90),
|
|
MAKEODF16(0xA0),
|
|
MAKEODF16(0xB0),
|
|
MAKEODF16(0xC0),
|
|
MAKEODF16(0xD0),
|
|
MAKEODF16(0xE0),
|
|
MAKEODF16(0xF0),
|
|
};
|
|
|
|
|
|
const DIDATAFORMAT c_dfDIKeyboard = {
|
|
sizeof(DIDATAFORMAT),
|
|
sizeof(DIOBJECTDATAFORMAT),
|
|
DIDF_RELAXIS,
|
|
256,
|
|
cA(c_rgodfDIKeyboard),
|
|
c_rgodfDIKeyboard,
|
|
};
|
|
|
|
#pragma END_CONST_DATA
|