ReactOS 0.4.17-dev-1190-g4c812f4
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{
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/* Input devices */
52typedef struct _MOUSE_DEVICE_INFO
53{
57
59{
63
64typedef struct _HID_DEVICE_INFO
65{
70
71typedef struct _INPUT_DEVICE_INFO
72{
79 union
80 {
84 };
86
87/* Key States */
88#define KS_DOWN_BIT 0x80
89#define KS_LOCK_BIT 0x01
90/* Scan Codes */
91#define SC_KEY_UP 0x8000
92/* lParam bits */
93#define LP_DO_NOT_CARE_BIT (1<<25) // For GetKeyNameText
94
95/* General */
99BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
103#define ThreadHasInputAccess(W32Thread) (TRUE)
104
105/* Keyboard */
107VOID NTAPI UserInitKeyboard(HANDLE hKeyboardDevice);
110BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected);
116
117/* Mouse */
120BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected);
121
122/* Raw input */
125 DWORD dwType,
126 HANDLE hDevice,
129 UINT cbData);
131 PTHREADINFO *ppti,
132 HWND *phwndTarget,
133 WPARAM *pwParam);
134BOOL FASTCALL UserFreeRawInput(PUSER_MESSAGE_QUEUE MessageQueue, HRAWINPUT hRawInput);
137
138/* IMM */
140 _In_ PUSER_MESSAGE_QUEUE MessageQueue,
141 _In_ PWND pWnd,
142 _In_ UINT uMsg,
146
147extern DWORD gSystemFS;
148extern UINT gSystemCPCharSet;
151extern BYTE gafAsyncKeyState[256 * 2 / 8]; // 2 bits per key
154
156VOID
158{
161}
162
164VOID
166{
169}
170
171#define GET_KS_BYTE(vk) ((vk) * 2 / 8)
172#define GET_KS_DOWN_BIT(vk) (1 << (((vk) % 4)*2))
173#define GET_KS_LOCK_BIT(vk) (1 << (((vk) % 4)*2 + 1))
174#define IS_KEY_DOWN(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)
175#define IS_KEY_LOCKED(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)
176#define SET_KEY_DOWN(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
177 ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \
178 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))
179#define SET_KEY_LOCKED(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
180 ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \
181 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
182
183extern PKL gspklBaseLayout;
#define CODE_SEG(...)
unsigned char BOOLEAN
Definition: actypes.h:127
@ INIT
Definition: arabic.c:42
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
#define CONST
Definition: pedump.c:81
short WCHAR
Definition: pedump.c:58
unsigned short USHORT
Definition: pedump.c:61
NTSTATUS NTAPI InitRawInputImpl(VOID)
Definition: rawinput.c:309
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:66
HIDP_CAPS Caps
Definition: input.h:68
HID_COLLECTION_INFORMATION CollectionInformation
Definition: input.h:67
KEYBOARD_DEVICE_INFO Keyboard
Definition: input.h:82
ULONG DeviceType
Definition: input.h:78
MOUSE_DEVICE_INFO Mouse
Definition: input.h:81
HANDLE Handle
Definition: input.h:75
NTSTATUS Status
Definition: input.h:77
struct _INPUT_DEVICE_INFO * pNextDeviceInfo
Definition: input.h:73
HID_DEVICE_INFO Hid
Definition: input.h:83
IO_STATUS_BLOCK Iosb
Definition: input.h:76
UNICODE_STRING DeviceName
Definition: input.h:74
Definition: kbd.h:97
KEYBOARD_INPUT_DATA Data
Definition: input.h:61
KEYBOARD_ATTRIBUTES Attributes
Definition: input.h:60
MOUSE_INPUT_DATA Data
Definition: input.h:55
MOUSE_ATTRIBUTES Attributes
Definition: input.h:54
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
PCBYTE PBYTE SIZE_T cbData
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#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:404
struct _KEYBOARD_DEVICE_INFO KEYBOARD_DEVICE_INFO
PATTACHINFO gpai
Definition: input.c:24
KEYBOARD_ATTRIBUTES gKeyboardInfo
Definition: keyboard.c:17
struct _KEYBOARD_DEVICE_INFO * PKEYBOARD_DEVICE_INFO
BOOL FASTCALL UserFreeRawInput(PUSER_MESSAGE_QUEUE MessageQueue, HRAWINPUT hRawInput)
Definition: rawinput.c:364
BOOL FASTCALL UserGetRawInputTarget(DWORD dwType, PTHREADINFO *ppti, HWND *phwndTarget, WPARAM *pwParam)
Definition: rawinput.c:413
NTSTATUS FASTCALL UserAttachThreadInput(PTHREADINFO, PTHREADINFO, BOOL)
Definition: input.c:523
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
VOID FASTCALL UserCleanupRawInput(PUSER_MESSAGE_QUEUE MessageQueue)
Definition: rawinput.c:398
DWORD gdwLanguageToggleKey
Definition: keyboard.c:19
BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt)
Definition: input.c:419
VOID FASTCALL UserUpdatePrevRawInput(PTHREADINFO pti, CONST MSG *pMsg)
Definition: rawinput.c:379
struct tagKBDFILE * PKBDFILE
struct _HID_DEVICE_INFO HID_DEVICE_INFO
HRAWINPUT FASTCALL UserCreateRawInput(PTHREADINFO pti, DWORD dwType, HANDLE hDevice, WPARAM wParam, CONST VOID *pData, UINT cbData)
Definition: rawinput.c:323
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 UserProcessKeyboardInput(PINPUT_DEVICE_INFO pDeviceInfo, PKEYBOARD_INPUT_DATA pKeyInput)
Definition: keyboard.c:1474
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:165
VOID NTAPI UserProcessMouseInput(PINPUT_DEVICE_INFO pDeviceInfo, PMOUSE_INPUT_DATA pMouseInputData)
Definition: mouse.c:104
BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected)
Definition: mouse.c:235
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:157
PINPUT_DEVICE_INFO gpInputDeviceInfo
Definition: input.c:27
PKL W32kGetDefaultKeyLayout(VOID)
Definition: kbdlayout.c:512
BOOL FASTCALL IsRemoveAttachThread(PTHREADINFO)
Definition: input.c:481
BOOL gbEnableHexNumpad
Definition: keyboard.c:36
BOOL NTAPI UserSetDefaultInputLang(HKL hKl)
Definition: kbdlayout.c:583
PERESOURCE gpDeviceInfoListMutex
Definition: input.c:28
BOOLEAN RawInputEnabled
Definition: rawinput.c:38
NTSTATUS NTAPI InitKeyboardImpl(VOID)
Definition: keyboard.c:48
unsigned char BYTE
Definition: xxhash.c:193