Read all characters of a keyboard
- Kwai chang caine
- Always Here
- Posts: 5353
- Joined: Sun Nov 05, 2006 11:42 pm
- Location: Lyon - France
Read all characters of a keyboard
Hello at all
If i use a loop 0/255 value of the #Vk_Constant (CTRL/ALT/SHIFT/ALTGR/WIN pressed or not) with the SendInput_() API, am i sure i obtain all the characters a machine can write ?
Or i need use the list of all the scancode of the keyboard ?
Have a good day
If i use a loop 0/255 value of the #Vk_Constant (CTRL/ALT/SHIFT/ALTGR/WIN pressed or not) with the SendInput_() API, am i sure i obtain all the characters a machine can write ?
Or i need use the list of all the scancode of the keyboard ?
Have a good day
The happiness is a road...
Not a destination
Not a destination
Re: Read all characters of a keyboard
Code: Select all
;
; https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
;
EnableExplicit
Enumeration
#DisableGadget
#ListIconGadget
EndEnumeration
Define.i Event, Exit, i
Dim KeyArray.a(255)
OpenWindow(#ListIconGadget, 0, 0, 400, 600, "KeyboardState", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CheckBoxGadget(#DisableGadget, 10, 10, 100, 20, "Stop scrolling")
ListIconGadget(#ListIconGadget, 10, 40, 380, 550, "Index", 50, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#ListIconGadget, 1, "Name", 200)
AddGadgetColumn(#ListIconGadget, 2, "Value", 50)
AddGadgetColumn(#ListIconGadget, 3, "State", 50)
For i = 0 To 255
AddGadgetItem(#ListIconGadget, i, Str(i))
Next i
SetGadgetItemText(#ListIconGadget, $01, "VK_LBUTTON", 1) ; Left mouse button
SetGadgetItemText(#ListIconGadget, $02, "VK_RBUTTON", 1) ; Right mouse button
SetGadgetItemText(#ListIconGadget, $03, "VK_CANCEL", 1) ; Control-Break processing
SetGadgetItemText(#ListIconGadget, $04, "VK_MBUTTON", 1) ; Middle mouse button (three-button mouse)
SetGadgetItemText(#ListIconGadget, $05, "VK_XBUTTON1", 1) ; X1 mouse button
SetGadgetItemText(#ListIconGadget, $06, "VK_XBUTTON2", 1) ; X2 mouse button
; 07 Undefined
SetGadgetItemText(#ListIconGadget, $08, "VK_BACK", 1) ; BACKSPACE key
SetGadgetItemText(#ListIconGadget, $09, "VK_TAB", 1) ; TAB key
; 0A-0B Reserved
SetGadgetItemText(#ListIconGadget, $0C, "VK_CLEAR", 1) ; CLEAR key
SetGadgetItemText(#ListIconGadget, $0D, "VK_RETURN", 1) ; ENTER key
; 0E-0F Undefined
SetGadgetItemText(#ListIconGadget, $10, "VK_SHIFT", 1) ; SHIFT key
SetGadgetItemText(#ListIconGadget, $11, "VK_CONTROL", 1) ; CTRL key
SetGadgetItemText(#ListIconGadget, $12, "VK_MENU", 1) ; ALT key
SetGadgetItemText(#ListIconGadget, $13, "VK_PAUSE", 1) ; PAUSE key
SetGadgetItemText(#ListIconGadget, $14, "VK_CAPITAL", 1) ; CAPS LOCK key
SetGadgetItemText(#ListIconGadget, $15, "VK_KANA_HANGUEL_HANGUL", 1) ; IME Kana mode
SetGadgetItemText(#ListIconGadget, $16, "VK_IME_ON", 1) ; IME On
SetGadgetItemText(#ListIconGadget, $17, "VK_JUNJA", 1) ; IME Junja mode
SetGadgetItemText(#ListIconGadget, $18, "VK_FINAL", 1) ; IME final mode
SetGadgetItemText(#ListIconGadget, $19, "VK_HANJA_KANJI", 1) ; IME Hanja mode
SetGadgetItemText(#ListIconGadget, $1A, "VK_IME_OFF", 1) ; IME Off
SetGadgetItemText(#ListIconGadget, $1B, "VK_ESCAPE", 1) ; ESC key
SetGadgetItemText(#ListIconGadget, $1C, "VK_CONVERT", 1) ; IME convert
SetGadgetItemText(#ListIconGadget, $1D, "VK_NONCONVERT", 1) ; IME nonconvert
SetGadgetItemText(#ListIconGadget, $1E, "VK_ACCEPT", 1) ; IME accept
SetGadgetItemText(#ListIconGadget, $1F, "VK_MODECHANGE", 1) ; IME mode change request
SetGadgetItemText(#ListIconGadget, $20, "VK_SPACE", 1) ; SPACEBAR
SetGadgetItemText(#ListIconGadget, $21, "VK_PRIOR", 1) ; PAGE UP key
SetGadgetItemText(#ListIconGadget, $22, "VK_NEXT", 1) ; PAGE DOWN key
SetGadgetItemText(#ListIconGadget, $23, "VK_END", 1) ; End key
SetGadgetItemText(#ListIconGadget, $24, "VK_HOME", 1) ; HOME key
SetGadgetItemText(#ListIconGadget, $25, "VK_LEFT", 1) ; LEFT ARROW key
SetGadgetItemText(#ListIconGadget, $26, "VK_UP", 1) ; UP ARROW key
SetGadgetItemText(#ListIconGadget, $27, "VK_RIGHT", 1) ; RIGHT ARROW key
SetGadgetItemText(#ListIconGadget, $28, "VK_DOWN", 1) ; DOWN ARROW key
SetGadgetItemText(#ListIconGadget, $29, "VK_SELECT", 1) ; Select key
SetGadgetItemText(#ListIconGadget, $2A, "VK_PRINT", 1) ; PRINT key
SetGadgetItemText(#ListIconGadget, $2B, "VK_EXECUTE", 1) ; EXECUTE key
SetGadgetItemText(#ListIconGadget, $2C, "VK_SNAPSHOT", 1) ; PRINT SCREEN key
SetGadgetItemText(#ListIconGadget, $2D, "VK_INSERT", 1) ; INS key
SetGadgetItemText(#ListIconGadget, $2E, "VK_DELETE", 1) ; DEL key
SetGadgetItemText(#ListIconGadget, $2F, "VK_HELP", 1) ; HELP key
SetGadgetItemText(#ListIconGadget, $30, "0 key", 1)
SetGadgetItemText(#ListIconGadget, $31, "1 key", 1)
SetGadgetItemText(#ListIconGadget, $32, "2 key", 1)
SetGadgetItemText(#ListIconGadget, $33, "3 key", 1)
SetGadgetItemText(#ListIconGadget, $34, "4 key", 1)
SetGadgetItemText(#ListIconGadget, $35, "5 key", 1)
SetGadgetItemText(#ListIconGadget, $36, "6 key", 1)
SetGadgetItemText(#ListIconGadget, $37, "7 key", 1)
SetGadgetItemText(#ListIconGadget, $38, "8 key", 1)
SetGadgetItemText(#ListIconGadget, $39, "9 key", 1)
; 3A-40, "Undefined
SetGadgetItemText(#ListIconGadget, $41, "A key", 1)
SetGadgetItemText(#ListIconGadget, $42, "B key", 1)
SetGadgetItemText(#ListIconGadget, $43, "C key", 1)
SetGadgetItemText(#ListIconGadget, $44, "D key", 1)
SetGadgetItemText(#ListIconGadget, $45, "E key", 1)
SetGadgetItemText(#ListIconGadget, $46, "F key", 1)
SetGadgetItemText(#ListIconGadget, $47, "G key", 1)
SetGadgetItemText(#ListIconGadget, $48, "H key", 1)
SetGadgetItemText(#ListIconGadget, $49, "I key", 1)
SetGadgetItemText(#ListIconGadget, $4A, "J key", 1)
SetGadgetItemText(#ListIconGadget, $4B, "K key", 1)
SetGadgetItemText(#ListIconGadget, $4C, "L key", 1)
SetGadgetItemText(#ListIconGadget, $4D, "M key", 1)
SetGadgetItemText(#ListIconGadget, $4E, "N key", 1)
SetGadgetItemText(#ListIconGadget, $4F, "O key", 1)
SetGadgetItemText(#ListIconGadget, $50, "P key", 1)
SetGadgetItemText(#ListIconGadget, $51, "Q key", 1)
SetGadgetItemText(#ListIconGadget, $52, "R key", 1)
SetGadgetItemText(#ListIconGadget, $53, "S key", 1)
SetGadgetItemText(#ListIconGadget, $54, "T key", 1)
SetGadgetItemText(#ListIconGadget, $55, "U key", 1)
SetGadgetItemText(#ListIconGadget, $56, "V key", 1)
SetGadgetItemText(#ListIconGadget, $57, "W key", 1)
SetGadgetItemText(#ListIconGadget, $58, "X key", 1)
SetGadgetItemText(#ListIconGadget, $59, "Y key", 1)
SetGadgetItemText(#ListIconGadget, $5A, "Z key", 1)
SetGadgetItemText(#ListIconGadget, $5B, "VK_LWIN", 1) ; Left Windows key (Natural keyboard)
SetGadgetItemText(#ListIconGadget, $5C, "VK_RWIN", 1) ; Right Windows key (Natural keyboard)
SetGadgetItemText(#ListIconGadget, $5D, "VK_APPS", 1) ; Applications key (Natural keyboard)
; 5E, "Reserved
SetGadgetItemText(#ListIconGadget, $5F, "VK_SLEEP", 1) ; Computer Sleep key
SetGadgetItemText(#ListIconGadget, $60, "VK_NUMPAD0", 1) ; Numeric keypad 0 key
SetGadgetItemText(#ListIconGadget, $61, "VK_NUMPAD1", 1) ; Numeric keypad 1 key
SetGadgetItemText(#ListIconGadget, $62, "VK_NUMPAD2", 1) ; Numeric keypad 2 key
SetGadgetItemText(#ListIconGadget, $63, "VK_NUMPAD3", 1) ; Numeric keypad 3 key
SetGadgetItemText(#ListIconGadget, $64, "VK_NUMPAD4", 1) ; Numeric keypad 4 key
SetGadgetItemText(#ListIconGadget, $65, "VK_NUMPAD5", 1) ; Numeric keypad 5 key
SetGadgetItemText(#ListIconGadget, $66, "VK_NUMPAD6", 1) ; Numeric keypad 6 key
SetGadgetItemText(#ListIconGadget, $67, "VK_NUMPAD7", 1) ; Numeric keypad 7 key
SetGadgetItemText(#ListIconGadget, $68, "VK_NUMPAD8", 1) ; Numeric keypad 8 key
SetGadgetItemText(#ListIconGadget, $69, "VK_NUMPAD9", 1) ; Numeric keypad 9 key
SetGadgetItemText(#ListIconGadget, $6A, "VK_MULTIPLY", 1) ; Multiply key
SetGadgetItemText(#ListIconGadget, $6B, "VK_ADD", 1) ; Add key
SetGadgetItemText(#ListIconGadget, $6C, "VK_SEPARATOR", 1) ; Separator key
SetGadgetItemText(#ListIconGadget, $6D, "VK_SUBTRACT", 1) ; Subtract key
SetGadgetItemText(#ListIconGadget, $6E, "VK_DECIMAL", 1) ; Decimal key
SetGadgetItemText(#ListIconGadget, $6F, "VK_DIVIDE", 1) ; Divide key
SetGadgetItemText(#ListIconGadget, $70, "VK_F1", 1) ; F1 key
SetGadgetItemText(#ListIconGadget, $71, "VK_F2", 1) ; F2 key
SetGadgetItemText(#ListIconGadget, $72, "VK_F3", 1) ; F3 key
SetGadgetItemText(#ListIconGadget, $73, "VK_F4", 1) ; F4 key
SetGadgetItemText(#ListIconGadget, $74, "VK_F5", 1) ; F5 key
SetGadgetItemText(#ListIconGadget, $75, "VK_F6", 1) ; F6 key
SetGadgetItemText(#ListIconGadget, $76, "VK_F7", 1) ; F7 key
SetGadgetItemText(#ListIconGadget, $77, "VK_F8", 1) ; F8 key
SetGadgetItemText(#ListIconGadget, $78, "VK_F9", 1) ; F9 key
SetGadgetItemText(#ListIconGadget, $79, "VK_F10", 1) ; F10 key
SetGadgetItemText(#ListIconGadget, $7A, "VK_F11", 1) ; F11 key
SetGadgetItemText(#ListIconGadget, $7B, "VK_F12", 1) ; F12 key
SetGadgetItemText(#ListIconGadget, $7C, "VK_F13", 1) ; F13 key
SetGadgetItemText(#ListIconGadget, $7D, "VK_F14", 1) ; F14 key
SetGadgetItemText(#ListIconGadget, $7E, "VK_F15", 1) ; F15 key
SetGadgetItemText(#ListIconGadget, $7F, "VK_F16", 1) ; F16 key
SetGadgetItemText(#ListIconGadget, $80, "VK_F17", 1) ; F17 key
SetGadgetItemText(#ListIconGadget, $81, "VK_F18", 1) ; F18 key
SetGadgetItemText(#ListIconGadget, $82, "VK_F19", 1) ; F19 key
SetGadgetItemText(#ListIconGadget, $83, "VK_F20", 1) ; F20 key
SetGadgetItemText(#ListIconGadget, $84, "VK_F21", 1) ; F21 key
SetGadgetItemText(#ListIconGadget, $85, "VK_F22", 1) ; F22 key
SetGadgetItemText(#ListIconGadget, $86, "VK_F23", 1) ; F23 key
SetGadgetItemText(#ListIconGadget, $87, "VK_F24", 1) ; F24 key
; 88-8F, "Unassigned
SetGadgetItemText(#ListIconGadget, $90, "VK_NUMLOCK", 1) ; NUM LOCK key
SetGadgetItemText(#ListIconGadget, $91, "VK_SCROLL", 1) ; SCROLL LOCK key
; 92-96, "OEM specific
; 97-9F, "Unassigned
SetGadgetItemText(#ListIconGadget, $A0, "VK_LSHIFT", 1) ; Left SHIFT key
SetGadgetItemText(#ListIconGadget, $A1, "VK_RSHIFT", 1) ; Right SHIFT key
SetGadgetItemText(#ListIconGadget, $A2, "VK_LCONTROL", 1) ; Left CONTROL key
SetGadgetItemText(#ListIconGadget, $A3, "VK_RCONTROL", 1) ; Right CONTROL key
SetGadgetItemText(#ListIconGadget, $A4, "VK_LMENU", 1) ; Left ALT key
SetGadgetItemText(#ListIconGadget, $A5, "VK_RMENU", 1) ; Right ALT key
SetGadgetItemText(#ListIconGadget, $A6, "VK_BROWSER_BACK", 1) ; Browser Back key
SetGadgetItemText(#ListIconGadget, $A7, "VK_BROWSER_FORWARD", 1) ; Browser Forward key
SetGadgetItemText(#ListIconGadget, $A8, "VK_BROWSER_REFRESH", 1) ; Browser Refresh key
SetGadgetItemText(#ListIconGadget, $A9, "VK_BROWSER_STOP", 1) ; Browser Stop key
SetGadgetItemText(#ListIconGadget, $AA, "VK_BROWSER_SEARCH", 1) ; Browser Search key
SetGadgetItemText(#ListIconGadget, $AB, "VK_BROWSER_FAVORITES", 1) ; Browser Favorites key
SetGadgetItemText(#ListIconGadget, $AC, "VK_BROWSER_HOME", 1) ; Browser Start And Home key
SetGadgetItemText(#ListIconGadget, $AD, "VK_VOLUME_MUTE", 1) ; Volume Mute key
SetGadgetItemText(#ListIconGadget, $AE, "VK_VOLUME_DOWN", 1) ; Volume Down key
SetGadgetItemText(#ListIconGadget, $AF, "VK_VOLUME_UP", 1) ; Volume Up key
SetGadgetItemText(#ListIconGadget, $B0, "VK_MEDIA_NEXT_TRACK", 1) ; Next Track key
SetGadgetItemText(#ListIconGadget, $B1, "VK_MEDIA_PREV_TRACK", 1) ; Previous Track key
SetGadgetItemText(#ListIconGadget, $B2, "VK_MEDIA_STOP", 1) ; Stop Media key
SetGadgetItemText(#ListIconGadget, $B3, "VK_MEDIA_PLAY_PAUSE", 1) ; Play/Pause Media key
SetGadgetItemText(#ListIconGadget, $B4, "VK_LAUNCH_MAIL", 1) ; Start Mail key
SetGadgetItemText(#ListIconGadget, $B5, "VK_LAUNCH_MEDIA_SELECT", 1) ; Select Media key
SetGadgetItemText(#ListIconGadget, $B6, "VK_LAUNCH_APP1", 1) ; Start Application 1 key
SetGadgetItemText(#ListIconGadget, $B7, "VK_LAUNCH_APP2", 1) ; Start Application 2 key
; B8-B9, "Reserved
SetGadgetItemText(#ListIconGadget, $BA, "VK_OEM_1", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
SetGadgetItemText(#ListIconGadget, $BB, "VK_OEM_PLUS", 1) ; For any country/region, the '+' key
SetGadgetItemText(#ListIconGadget, $BC, "VK_OEM_COMMA", 1) ; For any country/region, the ',' key
SetGadgetItemText(#ListIconGadget, $BD, "VK_OEM_MINUS", 1) ; For any country/region, the '-' key
SetGadgetItemText(#ListIconGadget, $BE, "VK_OEM_PERIOD", 1) ; For any country/region, the '.' key
SetGadgetItemText(#ListIconGadget, $BF, "VK_OEM_2", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
SetGadgetItemText(#ListIconGadget, $C0, "VK_OEM_3", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
; C1-D7, "Reserved
; D8-DA, "Unassigned
SetGadgetItemText(#ListIconGadget, $DB, "VK_OEM_4", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
SetGadgetItemText(#ListIconGadget, $DC, "VK_OEM_5", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key
SetGadgetItemText(#ListIconGadget, $DD, "VK_OEM_6", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
SetGadgetItemText(#ListIconGadget, $DE, "VK_OEM_7", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
SetGadgetItemText(#ListIconGadget, $DF, "VK_OEM_8", 1) ; Used For miscellaneous characters; it can vary by keyboard.
; E0, "Reserved
; E1, "OEM specific
SetGadgetItemText(#ListIconGadget, $E2, "VK_OEM_102", 1) ; The <> keys on the US standard keyboard, Or the \\| key on the non-US 102-key keyboard
; E3-E4, "OEM specific
SetGadgetItemText(#ListIconGadget, $E5, "VK_PROCESSKEY", 1) ; IME PROCESS key
; E6, "OEM specific
SetGadgetItemText(#ListIconGadget, $E7, "VK_PACKET", 1) ; Used To pass Unicode characters As If they were keystrokes. The SetGadgetItemText(#ListIconGadget, 1, "VK_PACKET key is the low word of a 32-bit Virtual key value used For non-keyboard input methods. For more information, see Remark in keyBDINPUT, SendInput, WM_KEYDOWN, And WM_KEYUP
; E8, "Unassigned
; E9-F5, "OEM specific
SetGadgetItemText(#ListIconGadget, $F6, "VK_ATTN", 1) ; Attn key
SetGadgetItemText(#ListIconGadget, $F7, "VK_CRSEL", 1) ; CrSel key
SetGadgetItemText(#ListIconGadget, $F8, "VK_EXSEL", 1) ; ExSel key
SetGadgetItemText(#ListIconGadget, $F9, "VK_EREOF", 1) ; Erase EOF key
SetGadgetItemText(#ListIconGadget, $FA, "VK_PLAY", 1) ; Play key
SetGadgetItemText(#ListIconGadget, $FB, "VK_ZOOM", 1) ; Zoom key
SetGadgetItemText(#ListIconGadget, $FC, "VK_NONAME", 1) ; Reserved
SetGadgetItemText(#ListIconGadget, $FD, "VK_PA1", 1) ; PA1 key
SetGadgetItemText(#ListIconGadget, $FE, "VK_OEM_CLEAR", 1) ; Clear key
Repeat
Event = WindowEvent()
While Event
Select Event
Case #PB_Event_CloseWindow
Exit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case #DisableGadget
DisableGadget(#ListIconGadget, GetGadgetState(#DisableGadget))
SetActiveGadget(-1)
EndSelect
EndSelect
Event = WindowEvent()
Wend
GetKeyboardState_(@KeyArray(0))
For i = 0 To 255
SetGadgetItemText(#ListIconGadget, i, Str(KeyArray(i)), 2)
If KeyArray(i) & %10000000
SetGadgetItemText(#ListIconGadget, i, "down", 3)
Else
SetGadgetItemText(#ListIconGadget, i, "up", 3)
EndIf
Next i
Delay(50)
Until Exit
Re: Read all characters of a keyboard
Hi KCC
I am not sure about what you are after
Next just an add to infratec snippet
Hope you are satisfied for now
I am not sure about what you are after
Next just an add to infratec snippet
Hope you are satisfied for now
Code: Select all
Global Hook, Dim Key.s(256)
Procedure KeyboardHook(nCode, wParam,lParam)
*k.KBDLLHOOKSTRUCT = lParam
If nCode < 0
ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam)
EndIf
If wParam=#WM_KEYDOWN Or wParam=#WM_SYSKEYDOWN Or wParam=#WM_DEADCHAR Or wParam=#WM_SYSCHAR
Select *k\vkCode
Case 8
Debug "Back Space"
CtrlChar = 1
Case 9
Debug "TAB"
Case 13
Debug "ENTER"
Case 19
Debug "PAUSE"
Case 27
Debug "ESC"
CtrlChar = 1
Case 33
Debug "PgUp"
Case 34
Debug "PgDn"
Case 35
Debug "END"
Case 36
Debug "HOME"
Case 36
Debug "Left Arrow"
Case 37
Debug "Left Arrow"
Case 39
Debug "Right Arrow"
Case 38
Debug "Up Arrow"
Case 40
Debug "Down Arrow"
Case 44
Debug "SCREENSHOT"
Case 45
Debug "INS"
Case 46
Debug "DEL"
Case 91
Debug "Window"
Case 93
Debug "Menu"
Case 112 To 123
Debug "F"+Str(*k\vkCode-111)
Case 144
Debug "NumLk"
Case 162
Debug "Left Ctrl"
Case 163
Debug "Right Ctrl"
Case 164
Debug "Alt"
Case 165
Debug "Alt Graph"
EndSelect
GetKeyboardState_(@Key())
ToAscii_(*k\vkCode,*k\scanCode, @Key(), @Ascii.w,0)
If Ascii = 0 Or CtrlChar = 1
CtrlChar = 0
ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam)
Else
Debug Chr(Ascii)
EndIf
EndIf
ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam)
EndProcedure
OpenWindow(0, 0, 0, 400,300, "Keyboard Hook", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
hook=SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyboardHook(), GetModuleHandle_(0), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
UnhookWindowsHookEx_(hook)
End
Egypt my love
- Kwai chang caine
- Always Here
- Posts: 5353
- Joined: Sun Nov 05, 2006 11:42 pm
- Location: Lyon - France
Re: Read all characters of a keyboard
@INFRATEC
Thanks INFRATEC for your nice and very useful code, i keep it for a future tool i want to create in the future
But i have try this time to not too much chaffe the eyes of the friends of forum, trying to do like everybody, ask my question in 1 or 2 lines only (This is an exploit for KCC )
But apparently, short question, is again worst than a long to make me understand
On my chinese machine the keys are not on the same place than a normal keyboard, because it is too small
Furthermore, some keys are even deleted, like ALTGR for example
And there are also the FN key who adding numerous characters....
Brief...i say to me, if it's possible to ask at the keyboard to press each key in normal, after with CTRL, with ALT, SHIFT, FN, etc ...
In one world, all it's possible to write with the keyboard
Like this i can see some characters hidden because what is incised on the keys, not are the real character writting when i press it
Like that, i can know on what keys it is, with all informations (Character (if exist) ScanCode, VkCode, state, etc ...)
Is it the case with your code ? all it's possible is showing ? or it show the state of the keyboard for see if a key is pressed or not ?
@RASHAD
Thanks to, for your add to the INFRATEC code
You will not be too much of two masters, to manage to find the codes which correspond to the stupid ideas which germinate in the sick and impotent brain of KCC
Thanks INFRATEC for your nice and very useful code, i keep it for a future tool i want to create in the future
But i have try this time to not too much chaffe the eyes of the friends of forum, trying to do like everybody, ask my question in 1 or 2 lines only (This is an exploit for KCC )
But apparently, short question, is again worst than a long to make me understand
On my chinese machine the keys are not on the same place than a normal keyboard, because it is too small
Furthermore, some keys are even deleted, like ALTGR for example
And there are also the FN key who adding numerous characters....
Brief...i say to me, if it's possible to ask at the keyboard to press each key in normal, after with CTRL, with ALT, SHIFT, FN, etc ...
In one world, all it's possible to write with the keyboard
Like this i can see some characters hidden because what is incised on the keys, not are the real character writting when i press it
Like that, i can know on what keys it is, with all informations (Character (if exist) ScanCode, VkCode, state, etc ...)
Is it the case with your code ? all it's possible is showing ? or it show the state of the keyboard for see if a key is pressed or not ?
@RASHAD
Thanks to, for your add to the INFRATEC code
You will not be too much of two masters, to manage to find the codes which correspond to the stupid ideas which germinate in the sick and impotent brain of KCC
The happiness is a road...
Not a destination
Not a destination
Re: Read all characters of a keyboard
I am looking for a solution to reliably figure out if for example "?" is pressed on a keyboard, no matter if its a German, Italian or English keyboard etc. This code seems to be doing the trick but as soon as i unfocus the window and type into for example notepad it does not recognize special characters like "?" anymore.RASHAD wrote: ↑Sun Jan 29, 2023 5:14 pm Hi KCC
I am not sure about what you are after
Next just an add to infratec snippet
Hope you are satisfied for nowCode: Select all
Global Hook, Dim Key.s(256) Procedure KeyboardHook(nCode, wParam,lParam) *k.KBDLLHOOKSTRUCT = lParam If nCode < 0 ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam) EndIf If wParam=#WM_KEYDOWN Or wParam=#WM_SYSKEYDOWN Or wParam=#WM_DEADCHAR Or wParam=#WM_SYSCHAR Select *k\vkCode Case 8 Debug "Back Space" CtrlChar = 1 Case 9 Debug "TAB" Case 13 Debug "ENTER" Case 19 Debug "PAUSE" Case 27 Debug "ESC" CtrlChar = 1 Case 33 Debug "PgUp" Case 34 Debug "PgDn" Case 35 Debug "END" Case 36 Debug "HOME" Case 36 Debug "Left Arrow" Case 37 Debug "Left Arrow" Case 39 Debug "Right Arrow" Case 38 Debug "Up Arrow" Case 40 Debug "Down Arrow" Case 44 Debug "SCREENSHOT" Case 45 Debug "INS" Case 46 Debug "DEL" Case 91 Debug "Window" Case 93 Debug "Menu" Case 112 To 123 Debug "F"+Str(*k\vkCode-111) Case 144 Debug "NumLk" Case 162 Debug "Left Ctrl" Case 163 Debug "Right Ctrl" Case 164 Debug "Alt" Case 165 Debug "Alt Graph" EndSelect GetKeyboardState_(@Key()) ToAscii_(*k\vkCode,*k\scanCode, @Key(), @Ascii.w,0) If Ascii = 0 Or CtrlChar = 1 CtrlChar = 0 ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam) Else Debug Chr(Ascii) EndIf EndIf ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam) EndProcedure OpenWindow(0, 0, 0, 400,300, "Keyboard Hook", #PB_Window_SystemMenu|#PB_Window_ScreenCentered) hook=SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyboardHook(), GetModuleHandle_(0), 0) Repeat Select WaitWindowEvent() Case #PB_Event_CloseWindow Quit = 1 EndSelect Until Quit = 1 UnhookWindowsHookEx_(hook) End
On a German keyboard for example its "SHIFT + ß" Key to get "?" and this code works and displays "?" but inside notepad it will just display "ß" as input, how can i fix that?
Re: Read all characters of a keyboard
Hi novablue
You need to read the Unicode character
Here it's
I hope it's what you asked for
You need to read the Unicode character
Here it's
I hope it's what you asked for
Code: Select all
Global Hook, Dim Key.s(256),Dim txt.s(10)
Procedure KeyboardHook(nCode, wParam,lParam)
*k.KBDLLHOOKSTRUCT = lParam
If nCode < 0
ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam)
EndIf
If wParam = #WM_KEYDOWN
GetKeyState_(#VK_SHIFT)
GetKeyState_(#VK_CONTROL)
GetKeyState_(#VK_MENU)
GetKeyboardState_(@Key())
ToUnicode_(*k\vkCode,*k\scanCode, @Key(), @txt, SizeOf(txt)/SizeOf(character) - 1,0)
If txt = 0
ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam)
Else
Debug txt
Debug Chr(txt)
EndIf
EndIf
ProcedureReturn CallNextHookEx_(hook, nCode, wParam,lParam)
EndProcedure
OpenWindow(0, 0, 0, 400,300, "Keyboard Hook", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
hook=SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyboardHook(), GetModuleHandle_(0), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
UnhookWindowsHookEx_(hook)
End
Egypt my love
Re: Read all characters of a keyboard
It is working great, thanks!
Re: Read all characters of a keyboard
Just be aware that using a keyboard hook will get your app flagged as malware by anti-virus apps. Happens to me all the time.
Here's what VirusTotal says about my main app, and why my app is "dangerous":
Here's what VirusTotal says about my main app, and why my app is "dangerous":
Re: Read all characters of a keyboard
Yes that's a general problem these days with most av software. I accepted a long time ago that almost all my apps get randomly flagged no matter what they do.