ReactOS 0.4.16-dev-122-g325d74c
input.h
Go to the documentation of this file.
1#pragma once
2
3#include <ndk/kbd.h>
4
5typedef struct tagKBDNLSLAYER
6{
10 struct _VK_TO_FUNCTION_TABLE *pVkToF;
14
15typedef struct tagKBDFILE
16{
25
26typedef struct tagKL
27{
29 struct tagKL *pklNext;
30 struct tagKL *pklPrev;
39} KL, *PKL;
40
41typedef struct _ATTACHINFO
42{
47
48extern PATTACHINFO gpai;
49
50/* Key States */
51#define KS_DOWN_BIT 0x80
52#define KS_LOCK_BIT 0x01
53/* Scan Codes */
54#define SC_KEY_UP 0x8000
55/* lParam bits */
56#define LP_DO_NOT_CARE_BIT (1<<25) // For GetKeyNameText
57
58/* General */
61BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
65#define ThreadHasInputAccess(W32Thread) (TRUE)
66
67/* Keyboard */
69VOID NTAPI UserInitKeyboard(HANDLE hKeyboardDevice);
72BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected);
79
80/* Mouse */
83BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected);
84
85/* IMM */
88
89extern DWORD gSystemFS;
93extern BYTE gafAsyncKeyState[256 * 2 / 8]; // 2 bits per key
94
95#define GET_KS_BYTE(vk) ((vk) * 2 / 8)
96#define GET_KS_DOWN_BIT(vk) (1 << (((vk) % 4)*2))
97#define GET_KS_LOCK_BIT(vk) (1 << (((vk) % 4)*2 + 1))
98#define IS_KEY_DOWN(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)
99#define IS_KEY_LOCKED(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)
100#define SET_KEY_DOWN(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
101 ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \
102 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))
103#define SET_KEY_LOCKED(ks, vk, down) (ks)[GET_KS_BYTE(vk)] = ((down) ? \
104 ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \
105 ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
106
107extern PKL gspklBaseLayout;
#define CODE_SEG(...)
LONG NTSTATUS
Definition: precomp.h:26
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
UINT_PTR HKL
Definition: msctf.idl:143
unsigned int UINT
Definition: ndis.h:50
#define FASTCALL
Definition: nt_native.h:50
unsigned short USHORT
Definition: pedump.c:61
PTHREADINFO pti2
Definition: input.h:45
struct _ATTACHINFO * paiNext
Definition: input.h:43
PTHREADINFO pti1
Definition: input.h:44
Definition: ntuser.h:180
Definition: kbd.h:95
Definition: ntuser.h:694
ULONG Size
Definition: input.h:22
HANDLE hBase
Definition: input.h:20
struct _KBDTABLES * pKbdTbl
Definition: input.h:21
PKBDNLSLAYER pKbdNlsTbl
Definition: input.h:23
struct tagKBDFILE * pkfNext
Definition: input.h:18
HEAD head
Definition: input.h:17
WCHAR awchKF[20]
Definition: input.h:19
INT NumOfMouseVKey
Definition: input.h:11
USHORT LayoutInformation
Definition: input.h:8
PUSHORT pusMouseVKey
Definition: input.h:12
USHORT OEMIdentifier
Definition: input.h:7
UINT NumOfVkToF
Definition: input.h:9
struct _VK_TO_FUNCTION_TABLE * pVkToF
Definition: input.h:10
Definition: input.h:27
DWORD dwKL_Flags
Definition: input.h:31
WCHAR wchDiacritic
Definition: input.h:37
USHORT CodePage
Definition: input.h:36
PIMEINFOEX piiex
Definition: input.h:38
DWORD dwFontSigs
Definition: input.h:34
PKBDFILE spkf
Definition: input.h:33
HEAD head
Definition: input.h:28
HKL hkl
Definition: input.h:32
struct tagKL * pklNext
Definition: input.h:29
UINT iBaseCharset
Definition: input.h:35
struct tagKL * pklPrev
Definition: input.h:30
#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
NTSTATUS NTAPI InitInputImpl(VOID)
Definition: input.c:360
PATTACHINFO gpai
Definition: input.c:17
KEYBOARD_ATTRIBUTES gKeyboardInfo
Definition: keyboard.c:17
VOID NTAPI UserProcessKeyboardInput(PKEYBOARD_INPUT_DATA pKeyInput)
Definition: keyboard.c:1191
VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA pMouseInputData)
Definition: mouse.c:40
NTSTATUS FASTCALL UserAttachThreadInput(PTHREADINFO, PTHREADINFO, BOOL)
Definition: input.c:480
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:326
struct tagKBDNLSLAYER KBDNLSLAYER
INT gLayoutToggleKeyState
Definition: keyboard.c:20
BYTE gafAsyncKeyState[256 *2/8]
Definition: keyboard.c:13
UINT FASTCALL IntImmProcessKey(PUSER_MESSAGE_QUEUE, PWND, UINT, WPARAM, LPARAM)
Definition: ime.c:569
BOOL NTAPI UserSendKeyboardInput(KEYBDINPUT *pKbdInput, BOOL bInjected)
Definition: keyboard.c:1110
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:375
struct tagKBDFILE * PKBDFILE
DWORD gdwLayoutToggleKey
Definition: keyboard.c:21
struct tagKL KL
VOID FASTCALL DoTheScreenSaver(VOID)
Definition: input.c:48
HANDLE ghKeyboardDevice
Definition: input.c:19
VOID NTAPI RawInputThreadMain(VOID)
Definition: input.c:124
struct tagKL * PKL
PTHREADINFO ptiRawInput
Definition: input.c:15
BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected)
Definition: mouse.c:168
VOID NTAPI UserInitKeyboard(HANDLE hKeyboardDevice)
Definition: keyboard.c:163
struct _ATTACHINFO * PATTACHINFO
struct tagKBDFILE KBDFILE
INT gLanguageToggleKeyState
Definition: keyboard.c:18
struct tagKBDNLSLAYER * PKBDNLSLAYER
struct _ATTACHINFO ATTACHINFO
PKL W32kGetDefaultKeyLayout(VOID)
Definition: kbdlayout.c:512
BOOL FASTCALL IsRemoveAttachThread(PTHREADINFO)
Definition: input.c:437
BOOL NTAPI UserSetDefaultInputLang(HKL hKl)
Definition: kbdlayout.c:583
NTSTATUS NTAPI InitKeyboardImpl(VOID)
Definition: keyboard.c:33
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193