34#if defined(BUILD_WOW6432) && !defined(_WIN64)
36# define KBD_LONG_POINTER __ptr64
37# define KBD_PTR(T) T KBD_LONG_POINTER
39# if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
40# error "WOW64 keyboard tables without __ptr64 require a little-endian target"
42# define KBD_LONG_POINTER
43# define KBD_PTR(T) union { T p; ULONG64 u64; } __attribute__((aligned(8)))
44# define KBD_PTR_IS_UNION 1
45# pragma GCC diagnostic ignored "-Wmissing-braces"
48# define KBD_LONG_POINTER
52#ifdef KBD_PTR_IS_UNION
53# define KBD_P(x) ((x).p)
64#define KBDMULTIVK 0x200
65#define KBDSPECIAL 0x400
66#define KBDNUMPAD 0x800
74#define SHFT_INVALID 0x0F
87#define TYPEDEF_VK_TO_WCHARS(i) \
88 typedef struct _VK_TO_WCHARS ## i { \
92 } VK_TO_WCHARS ## i, *PVK_TO_WCHARS ## i;
132#define TYPEDEF_LIGATURE(i) \
133typedef struct _LIGATURE ## i { \
135 WORD ModificationNumber; \
137} LIGATURE ## i, *PLIGATURE ## i;
146#define GET_KBD_VERSION(p) (HIWORD((p)->fLocaleFlags))
147#define KLLF_ALTGR 0x1
148#define KLLF_SHIFTLOCK 0x2
149#define KLLF_LRM_RLM 0x4
169#define WCH_NONE 0xf000
170#define WCH_DEAD 0xf001
171#define WCH_LGTR 0xf002
176#define CAPLOKALTGR 0x04
178#define GRPSELTAP 0x80
180#define VK_ABNT_C1 0xC1
181#define VK_ABNT_C2 0xC2
184#define SCANCODE_LSHIFT 0x2A
185#define SCANCODE_RSHIFT 0x36
186#define SCANCODE_CTRL 0x1D
187#define SCANCODE_ALT 0x38
199#define KBDTABLE_MULTI_MAX 8
210#define KBDNLS_TYPE_NULL 0
211#define KBDNLS_TYPE_NORMAL 1
212#define KBDNLS_TYPE_TOGGLE 2
214#define KBDNLS_INDEX_NORMAL 1
215#define KBDNLS_INDEX_ALT 2
219#define KBDNLS_NOEVENT 1
220#define KBDNLS_SEND_BASE_VK 2
221#define KBDNLS_SEND_PARAM_VK 3
222#define KBDNLS_KANALOCK 4
223#define KBDNLS_ALPHANUM 5
224#define KBDNLS_HIRAGANA 6
225#define KBDNLS_KATAKANA 7
226#define KBDNLS_SBCSDBCS 8
227#define KBDNLS_ROMAN 9
228#define KBDNLS_CODEINPUT 10
229#define KBDNLS_HELP_OR_END 11
230#define KBDNLS_HOME_OR_CLEAR 12
231#define KBDNLS_NUMPAD 13
232#define KBDNLS_KANAEVENT 14
233#define KBDNLS_CONV_OR_NONCONV 15
271#if defined(BUILD_WOW6432) && defined(C_ASSERT)
275C_ASSERT(
sizeof(DEADKEY_LPWSTR) == 8);
280#if (NTDDI_VERSION >= NTDDI_WINXP)
281#define VK_DBE_ALPHANUMERIC 0xF0
282#define VK_DBE_KATAKANA 0xF1
283#define VK_DBE_HIRAGANA 0xF2
284#define VK_DBE_SBCSCHAR 0xF3
285#define VK_DBE_DBCSCHAR 0xF4
286#define VK_DBE_ROMAN 0xF5
287#define VK_DBE_NOROMAN 0xF6
288#define VK_DBE_ENTERWORDREGISTERMODE 0xF7
289#define VK_DBE_ENTERIMECONFIGMODE 0xF8
290#define VK_DBE_FLUSHSTRING 0xF9
291#define VK_DBE_CODEINPUT 0xFA
292#define VK_DBE_NOCODEINPUT 0xFB
293#define VK_DBE_DETERMINESTRING 0xFC
294#define VK_DBE_ENTERDLGCONVERSIONMODE 0xFD
struct _VSC_LPWSTR * PVSC_LPWSTR
struct _VK_TO_WCHAR_TABLE VK_TO_WCHAR_TABLE
struct _VK_TO_BIT VK_TO_BIT
struct tagKBDTABLE_DESC * PKBDTABLE_DESC
struct _VK_TO_FUNCTION_TABLE VK_F
struct tagKBDTABLE_MULTI * PKBDTABLE_MULTI
struct _KBDTABLES * PKBDTABLES
struct _DEADKEY * PDEADKEY
struct tagKBDTABLES_FE KBDTABLES_FE
struct _KBDTABLES KBDTABLES
struct _VK_FUNCTION_PARAM VK_FPARAM
struct tagKBDTABLES_FE * PKBDTABLES_FE
struct tagKbdNlsLayer KBDNLSTABLES
struct _VK_TO_FUNCTION_TABLE * PVK_F
struct _MODIFIERS * PMODIFIERS
struct tagKBDTABLE_DESC KBDTABLE_DESC
struct tagKbdNlsLayer * PKBDNLSTABLES
struct _VK_TO_BIT * PVK_TO_BIT
#define KBDTABLE_MULTI_MAX
struct _VK_FUNCTION_PARAM * PVK_FPARAM
struct _VK_TO_WCHAR_TABLE * PVK_TO_WCHAR_TABLE
struct tagKBDTABLE_MULTI KBDTABLE_MULTI
struct _VSC_LPWSTR VSC_LPWSTR
#define TYPEDEF_VK_TO_WCHARS(i)
struct _MODIFIERS MODIFIERS
#define TYPEDEF_LIGATURE(i)
KBD_PTR(VSC_LPWSTR *) pKeyNamesExt
KBD_PTR(PVK_TO_WCHAR_TABLE) pVkToWcharTable
KBD_PTR(DEADKEY_LPWSTR *) pKeyNamesDead
KBD_PTR(PVSC_VK) pVSCtoVK_E0
KBD_PTR(PVSC_VK) pVSCtoVK_E1
KBD_PTR(USHORT *) pusVSCtoVK
KBD_PTR(VSC_LPWSTR *) pKeyNames
KBD_PTR(PMODIFIERS) pCharModifiers
KBD_PTR(PDEADKEY) pDeadKey
KBD_PTR(PLIGATURE1) pLigature
KBD_PTR(PVK_TO_BIT) pVkToBit
VK_FPARAM NLSFEProcAlt[8]
KBD_PTR(PVK_TO_WCHARS1) pVkToWchars
KBDTABLE_DESC aKbdTables[KBDTABLE_MULTI_MAX]
KBD_PTR(PUSHORT) pusMouseVKey