5 typedef struct tagKBDNLSLAYER
8 USHORT LayoutInformation
;
10 struct _VK_TO_FUNCTION_TABLE
*pVkToF
;
13 } KBDNLSLAYER
, *PKBDNLSLAYER
;
15 typedef struct tagKBDFILE
18 struct tagKBDFILE
*pkfNext
;
21 struct _KBDTABLES
*pKbdTbl
;
23 PKBDNLSLAYER pKbdNlsTbl
;
29 struct tagKL
*pklNext
;
30 struct tagKL
*pklPrev
;
41 typedef struct _ATTACHINFO
43 struct _ATTACHINFO
*paiNext
;
46 } ATTACHINFO
, *PATTACHINFO
;
48 extern PATTACHINFO gpai
;
50 /* Keyboard layout undocumented flags */
51 #define KLF_UNLOAD 0x20000000
54 #define KS_DOWN_BIT 0x80
55 #define KS_LOCK_BIT 0x01
57 #define SC_KEY_UP 0x8000
59 #define LP_DO_NOT_CARE_BIT (1<<25) // For GetKeyNameText
62 INIT_FUNCTION NTSTATUS NTAPI
InitInputImpl(VOID
);
63 BOOL FASTCALL
IntBlockInput(PTHREADINFO W32Thread
, BOOL BlockIt
);
64 DWORD NTAPI
CreateSystemThreads(UINT Type
);
65 BOOL FASTCALL
UserAttachThreadInput(PTHREADINFO
,PTHREADINFO
,BOOL
);
66 VOID FASTCALL
DoTheScreenSaver(VOID
);
67 #define ThreadHasInputAccess(W32Thread) (TRUE)
70 INIT_FUNCTION NTSTATUS NTAPI
InitKeyboardImpl(VOID
);
71 VOID NTAPI
UserInitKeyboard(HANDLE hKeyboardDevice
);
72 PKL
W32kGetDefaultKeyLayout(VOID
);
73 VOID NTAPI
UserProcessKeyboardInput(PKEYBOARD_INPUT_DATA pKeyInput
);
74 BOOL NTAPI
UserSendKeyboardInput(KEYBDINPUT
*pKbdInput
, BOOL bInjected
);
75 PKL NTAPI
UserHklToKbl(HKL hKl
);
76 BOOL NTAPI
UserSetDefaultInputLang(HKL hKl
);
79 WORD FASTCALL
UserGetMouseButtonsState(VOID
);
80 VOID NTAPI
UserProcessMouseInput(PMOUSE_INPUT_DATA pMouseInputData
);
81 BOOL NTAPI
UserSendMouseInput(MOUSEINPUT
*pMouseInput
, BOOL bInjected
);
83 extern HANDLE ghKeyboardDevice
;
84 extern PTHREADINFO ptiRawInput
;
85 extern BYTE gafAsyncKeyState
[256 * 2 / 8]; // 2 bits per key
87 #define GET_KS_BYTE(vk) ((vk) * 2 / 8)
88 #define GET_KS_DOWN_BIT(vk) (1 << (((vk) % 4)*2))
89 #define GET_KS_LOCK_BIT(vk) (1 << (((vk) % 4)*2 + 1))
90 #define IS_KEY_DOWN(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)
91 #define IS_KEY_LOCKED(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)
92 #define SET_KEY_DOWN(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
93 ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \
94 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))
95 #define SET_KEY_LOCKED(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
96 ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \
97 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
100 extern PKL gspklBaseLayout
;