Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114#pragma once
#include <ndk/kbd.h> typedef struct tagKBDNLSLAYER{ USHORT OEMIdentifier; USHORT LayoutInformation; UINT NumOfVkToF; struct _VK_TO_FUNCTION_TABLE *pVkToF; INT NumOfMouseVKey; PUSHORT pusMouseVKey;} KBDNLSLAYER, *PKBDNLSLAYER; typedef struct tagKBDFILE{ HEAD head; struct tagKBDFILE *pkfNext; WCHAR awchKF[20]; HANDLE hBase; struct _KBDTABLES *pKbdTbl; ULONG Size; PKBDNLSLAYER pKbdNlsTbl;} KBDFILE, *PKBDFILE;
typedef struct tagKL{ HEAD head; struct tagKL *pklNext; struct tagKL *pklPrev; DWORD dwKL_Flags; HKL hkl; PKBDFILE spkf; DWORD dwFontSigs; UINT iBaseCharset; USHORT CodePage; WCHAR wchDiacritic; PIMEINFOEX piiex;} KL, *PKL;
typedef struct _ATTACHINFO{ struct _ATTACHINFO *paiNext; PTHREADINFO pti1; PTHREADINFO pti2;} ATTACHINFO, *PATTACHINFO;
extern PATTACHINFO gpai;
/* Key States */#define KS_DOWN_BIT 0x80#define KS_LOCK_BIT 0x01/* Scan Codes */#define SC_KEY_UP 0x8000/* lParam bits */#define LP_DO_NOT_CARE_BIT (1<<25) // For GetKeyNameText
/* General */CODE_SEG("INIT") NTSTATUS NTAPI InitInputImpl(VOID);VOID NTAPI RawInputThreadMain(VOID);BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);NTSTATUS FASTCALL UserAttachThreadInput(PTHREADINFO,PTHREADINFO,BOOL);BOOL FASTCALL IsRemoveAttachThread(PTHREADINFO);VOID FASTCALL DoTheScreenSaver(VOID);#define ThreadHasInputAccess(W32Thread) (TRUE)
/* Keyboard */CODE_SEG("INIT") NTSTATUS NTAPI InitKeyboardImpl(VOID);VOID NTAPI UserInitKeyboard(HANDLE hKeyboardDevice);PKL W32kGetDefaultKeyLayout(VOID);VOID NTAPI UserProcessKeyboardInput(PKEYBOARD_INPUT_DATA pKeyInput);BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected);PKL NTAPI UserHklToKbl(HKL hKl);BOOL NTAPI UserSetDefaultInputLang(HKL hKl);extern INT gLanguageToggleKeyState;extern DWORD gdwLanguageToggleKey;extern INT gLayoutToggleKeyState;extern DWORD gdwLayoutToggleKey;
/* Mouse */WORD FASTCALL UserGetMouseButtonsState(VOID);VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA pMouseInputData);BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected);
/* IMM */UINT FASTCALL IntImmProcessKey( _In_ PUSER_MESSAGE_QUEUE MessageQueue, _In_ PWND pWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam);VOID FASTCALL IntFreeImeHotKeys(VOID);
extern DWORD gSystemFS;extern UINT gSystemCPCharSet; extern HANDLE ghKeyboardDevice;extern PTHREADINFO ptiRawInput;extern BYTE gafAsyncKeyState[256 * 2 / 8]; // 2 bits per key
#define GET_KS_BYTE(vk) ((vk) * 2 / 8)#define GET_KS_DOWN_BIT(vk) (1 << (((vk) % 4)*2))#define GET_KS_LOCK_BIT(vk) (1 << (((vk) % 4)*2 + 1))#define IS_KEY_DOWN(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)#define IS_KEY_LOCKED(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)#define SET_KEY_DOWN(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \ ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \ ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))#define SET_KEY_LOCKED(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \ ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \ ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
extern PKL gspklBaseLayout;extern KEYBOARD_ATTRIBUTES gKeyboardInfo;