ReactOS 0.4.17-dev-806-gffa4164
input.h
Go to the documentation of this file.
1#pragma once
2
3#include <ndk/kbd.h>
4#include <hidclass.h>
5
6typedef struct tagKBDNLSLAYER
7{
11 struct _VK_TO_FUNCTION_TABLE *pVkToF;
15
16typedef struct tagKBDFILE
17{
26
27typedef struct tagKL
28{
30 struct tagKL *pklNext;
31 struct tagKL *pklPrev;
40} KL, *PKL;
41
42typedef struct _ATTACHINFO
43{
48
49extern PATTACHINFO gpai;
50
51/* Key States */
52#define KS_DOWN_BIT 0x80
53#define KS_LOCK_BIT 0x01
54/* Scan Codes */
55#define SC_KEY_UP 0x8000
56/* lParam bits */
57#define LP_DO_NOT_CARE_BIT (1<<25) // For GetKeyNameText
58
59/* General */
62BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
66#define ThreadHasInputAccess(W32Thread) (TRUE)
67
68/* Keyboard */
70VOID NTAPI UserInitKeyboard(HANDLE hKeyboardDevice);
73BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected);
79
80/* Mouse */
83BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected);
84
85/* IMM */
87 _In_ PUSER_MESSAGE_QUEUE MessageQueue,
88 _In_ PWND pWnd,
89 _In_ UINT uMsg,
93
94/* Input devices */
96{
100
102{
106
107typedef struct _HID_DEVICE_INFO
108{
113
114typedef struct _INPUT_DEVICE_INFO
115{
122 union
123 {
127 };
129
130extern DWORD gSystemFS;
131extern UINT gSystemCPCharSet;
134extern BYTE gafAsyncKeyState[256 * 2 / 8]; // 2 bits per key
137
139VOID
141{
144}
145
147VOID
149{
152}
153
154#define GET_KS_BYTE(vk) ((vk) * 2 / 8)
155#define GET_KS_DOWN_BIT(vk) (1 << (((vk) % 4)*2))
156#define GET_KS_LOCK_BIT(vk) (1 << (((vk) % 4)*2 + 1))
157#define IS_KEY_DOWN(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)
158#define IS_KEY_LOCKED(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)
159#define SET_KEY_DOWN(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
160 ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \
161 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))
162#define SET_KEY_LOCKED(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
163 ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \
164 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
165
166extern PKL gspklBaseLayout;
#define CODE_SEG(...)
LONG NTSTATUS
Definition: precomp.h:26
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define ExAcquireResourceExclusiveLite(res, wait)
Definition: env_spec_w32.h:615
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned int UINT
Definition: sysinfo.c:13
struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA
Definition: hidpi.h:39
#define KeLeaveCriticalRegion()
Definition: ke_x.h:119
#define KeEnterCriticalRegion()
Definition: ke_x.h:88
LONG_PTR LPARAM
Definition: minwindef.h:175
UINT_PTR WPARAM
Definition: minwindef.h:174
UINT_PTR HKL
Definition: msctf.idl:125
#define _In_
Definition: no_sal2.h:158
#define FASTCALL
Definition: nt_native.h:50
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
Definition: resource.c:1822
short WCHAR
Definition: pedump.c:58
unsigned short USHORT
Definition: pedump.c:61
PTHREADINFO pti2
Definition: input.h:46
struct _ATTACHINFO * paiNext
Definition: input.h:44
PTHREADINFO pti1
Definition: input.h:45
Definition: ntuser.h:183
PHIDP_PREPARSED_DATA PreparsedData
Definition: input.h:109
HIDP_CAPS Caps
Definition: input.h:111
HID_COLLECTION_INFORMATION CollectionInformation
Definition: input.h:110
KEYBOARD_DEVICE_INFO Keyboard
Definition: input.h:125
ULONG DeviceType
Definition: input.h:121
MOUSE_DEVICE_INFO Mouse
Definition: input.h:124
HANDLE Handle
Definition: input.h:118
NTSTATUS Status
Definition: input.h:120
struct _INPUT_DEVICE_INFO * pNextDeviceInfo
Definition: input.h:116
HID_DEVICE_INFO Hid
Definition: input.h:126
IO_STATUS_BLOCK Iosb
Definition: input.h:119
UNICODE_STRING DeviceName
Definition: input.h:117
Definition: kbd.h:95
KEYBOARD_INPUT_DATA Data
Definition: input.h:104
KEYBOARD_ATTRIBUTES Attributes
Definition: input.h:103
MOUSE_INPUT_DATA Data
Definition: input.h:98
MOUSE_ATTRIBUTES Attributes
Definition: input.h:97
Definition: ntuser.h:698
ULONG Size
Definition: input.h:23
HANDLE hBase
Definition: input.h:21
struct _KBDTABLES * pKbdTbl
Definition: input.h:22
PKBDNLSLAYER pKbdNlsTbl
Definition: input.h:24
struct tagKBDFILE * pkfNext
Definition: input.h:19
HEAD head
Definition: input.h:18
WCHAR awchKF[20]
Definition: input.h:20
INT NumOfMouseVKey
Definition: input.h:12
USHORT LayoutInformation
Definition: input.h:9
PUSHORT pusMouseVKey
Definition: input.h:13
USHORT OEMIdentifier
Definition: input.h:8
UINT NumOfVkToF
Definition: input.h:10
struct _VK_TO_FUNCTION_TABLE * pVkToF
Definition: input.h:11
Definition: input.h:28
DWORD dwKL_Flags
Definition: input.h:32
WCHAR wchDiacritic
Definition: input.h:38
USHORT CodePage
Definition: input.h:37
PIMEINFOEX piiex
Definition: input.h:39
DWORD dwFontSigs
Definition: input.h:35
PKBDFILE spkf
Definition: input.h:34
HEAD head
Definition: input.h:29
HKL hkl
Definition: input.h:33
struct tagKL * pklNext
Definition: input.h:30
UINT iBaseCharset
Definition: input.h:36
struct tagKL * pklPrev
Definition: input.h:31
#define NTAPI
Definition: typedefs.h:36
int32_t INT
Definition: typedefs.h:58
uint16_t * PUSHORT
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define FORCEINLINE
Definition: wdftypes.h:67
NTSTATUS NTAPI InitInputImpl(VOID)
Definition: input.c:401
struct _KEYBOARD_DEVICE_INFO KEYBOARD_DEVICE_INFO
PATTACHINFO gpai
Definition: input.c:24
KEYBOARD_ATTRIBUTES gKeyboardInfo
Definition: keyboard.c:17
VOID NTAPI UserProcessKeyboardInput(PKEYBOARD_INPUT_DATA pKeyInput)
Definition: keyboard.c:1414
VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA pMouseInputData)
Definition: mouse.c:40
struct _KEYBOARD_DEVICE_INFO * PKEYBOARD_DEVICE_INFO
NTSTATUS FASTCALL UserAttachThreadInput(PTHREADINFO, PTHREADINFO, BOOL)
Definition: input.c:520
WORD FASTCALL UserGetMouseButtonsState(VOID)
Definition: mouse.c:22
DWORD gSystemFS
Definition: kbdlayout.c:24
PKL gspklBaseLayout
Definition: kbdlayout.c:22
VOID FASTCALL IntFreeImeHotKeys(VOID)
Definition: ime.c:345
struct tagKBDNLSLAYER KBDNLSLAYER
UINT FASTCALL IntImmProcessKey(_In_ PUSER_MESSAGE_QUEUE MessageQueue, _In_ PWND pWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
Definition: ime.c:603
BYTE gafAsyncKeyState[256 *2/8]
Definition: keyboard.c:13
BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected)
Definition: keyboard.c:1333
PKL NTAPI UserHklToKbl(HKL hKl)
Definition: kbdlayout.c:539
UINT gSystemCPCharSet
Definition: kbdlayout.c:25
DWORD gdwLanguageToggleKey
Definition: keyboard.c:19
BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt)
Definition: input.c:416
struct tagKBDFILE * PKBDFILE
struct _HID_DEVICE_INFO HID_DEVICE_INFO
DWORD gdwLayoutToggleKey
Definition: keyboard.c:21
struct tagKL KL
VOID FASTCALL DoTheScreenSaver(VOID)
Definition: input.c:66
HANDLE ghKeyboardDevice
Definition: input.c:26
VOID NTAPI RawInputThreadMain(VOID)
Definition: input.c:142
struct tagKL * PKL
PTHREADINFO ptiRawInput
Definition: input.c:22
struct _INPUT_DEVICE_INFO INPUT_DEVICE_INFO
FORCEINLINE VOID ReleaseDeviceInfoListMutex(VOID)
Definition: input.h:148
BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected)
Definition: mouse.c:168
VOID NTAPI UserInitKeyboard(HANDLE hKeyboardDevice)
Definition: keyboard.c:178
struct _MOUSE_DEVICE_INFO * PMOUSE_DEVICE_INFO
struct _INPUT_DEVICE_INFO * PINPUT_DEVICE_INFO
struct _ATTACHINFO * PATTACHINFO
struct _HID_DEVICE_INFO * PHID_DEVICE_INFO
struct tagKBDFILE KBDFILE
struct tagKBDNLSLAYER * PKBDNLSLAYER
struct _ATTACHINFO ATTACHINFO
struct _MOUSE_DEVICE_INFO MOUSE_DEVICE_INFO
FORCEINLINE VOID AcquireDeviceInfoListMutex(VOID)
Definition: input.h:140
PINPUT_DEVICE_INFO gpInputDeviceInfo
Definition: input.c:27
PKL W32kGetDefaultKeyLayout(VOID)
Definition: kbdlayout.c:512
BOOL FASTCALL IsRemoveAttachThread(PTHREADINFO)
Definition: input.c:478
BOOL gbEnableHexNumpad
Definition: keyboard.c:36
BOOL NTAPI UserSetDefaultInputLang(HKL hKl)
Definition: kbdlayout.c:583
PERESOURCE gpDeviceInfoListMutex
Definition: input.c:28
NTSTATUS NTAPI InitKeyboardImpl(VOID)
Definition: keyboard.c:48
unsigned char BYTE
Definition: xxhash.c:193