sync to trunk (44770)
[reactos.git] / reactos / subsystems / win32 / win32k / include / input.h
1 #ifndef _WIN32K_INPUT_H
2 #define _WIN32K_INPUT_H
3
4 #include <internal/kbd.h>
5
6 typedef struct _KBL
7 {
8 LIST_ENTRY List;
9 DWORD Flags;
10 WCHAR Name[KL_NAMELENGTH]; // used w GetKeyboardLayoutName same as wszKLID.
11 struct _KBDTABLES* KBTables; // KBDTABLES in ntoskrnl/include/internal/kbd.h
12 HANDLE hModule;
13 ULONG RefCount;
14 HKL hkl;
15 DWORD klid; // Low word - language id. High word - device id.
16 } KBL, *PKBL;
17
18 typedef struct _ATTACHINFO
19 {
20 struct _ATTACHINFO* paiNext;
21 PTHREADINFO pti1;
22 PTHREADINFO pti2;
23 } ATTACHINFO, *PATTACHINFO;
24
25 extern PATTACHINFO gpai;
26
27 #define KBL_UNLOAD 1
28 #define KBL_PRELOAD 2
29 #define KBL_RESET 4
30
31 NTSTATUS FASTCALL
32 InitInputImpl(VOID);
33 NTSTATUS FASTCALL
34 InitKeyboardImpl(VOID);
35 PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue(VOID);
36 VOID W32kUnregisterPrimitiveMessageQueue(VOID);
37 PKBL W32kGetDefaultKeyLayout(VOID);
38 VOID FASTCALL W32kKeyProcessMessage(LPMSG Msg, PKBDTABLES KeyLayout, BYTE Prefix);
39 BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
40 BOOL FASTCALL IntMouseInput(MOUSEINPUT *mi);
41 BOOL FASTCALL IntKeyboardInput(KEYBDINPUT *ki);
42
43 BOOL UserInitDefaultKeyboardLayout();
44 PKBL UserHklToKbl(HKL hKl);
45 BOOL FASTCALL UserAttachThreadInput(PTHREADINFO,PTHREADINFO,BOOL);
46 BOOL FASTCALL IntConnectThreadInput(PTHREADINFO,PTHREADINFO*,PUSER_MESSAGE_QUEUE*);
47
48 #define ThreadHasInputAccess(W32Thread) \
49 (TRUE)
50
51 extern PTHREADINFO ptiRawInput;
52
53 #endif /* _WIN32K_INPUT_H */