[bmx] Virtual Keys by plash [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:38

Previous topic - Next topic

BlitzBot

Title : Virtual Keys
Author : plash
Posted : 1+ years ago

Description : Feel free to improve.

Code :
Code (blitzmax) Select
SuperStrict

Const KEYEVENTF_KEYUP:Byte = $00000002

'#Region Virtual Keys
Const VK_0:Byte = $30
Const VK_1:Byte = $31
Const VK_2:Byte = $32
Const VK_3:Byte = $33
Const VK_4:Byte = $34
Const VK_5:Byte = $35
Const VK_6:Byte = $36
Const VK_7:Byte = $37
Const VK_8:Byte = $38
Const VK_9:Byte = $39
Const VK_A:Byte = $41
Const VK_B:Byte = $42
Const VK_C:Byte = $43
Const VK_D:Byte = $44
Const VK_E:Byte = $45
Const VK_F:Byte = $46
Const VK_G:Byte = $47
Const VK_H:Byte = $48
Const VK_I:Byte = $49
Const VK_J:Byte = $4A
Const VK_K:Byte = $4B
Const VK_L:Byte = $4C
Const VK_M:Byte = $4D
Const VK_N:Byte = $4E
Const VK_O:Byte = $4F
Const VK_P:Byte = $50
Const VK_Q:Byte = $51
Const VK_R:Byte = $52
Const VK_S:Byte = $53
Const VK_T:Byte = $54
Const VK_U:Byte = $55
Const VK_V:Byte = $56
Const VK_W:Byte = $57
Const VK_X:Byte = $58
Const VK_Y:Byte = $59
Const VK_Z:Byte = $5A
Const VK_ADD:Byte = $6B
Const VK_ATTN:Byte = $F6
Const VK_BACK:Byte = $8
Const VK_CANCEL:Byte = $3
Const VK_CAPITAL:Byte = $14
Const VK_CLEAR:Byte = $C
Const VK_CONTROL:Byte = $11
Const VK_CRSEL:Byte = $F7
Const VK_DECIMAL:Byte = $6E
Const VK_DELETE:Byte = $2E
Const VK_DIVIDE:Byte = $6F
Const VK_DOWN:Byte = $28
Const VK_END:Byte = $23
Const VK_EREOF:Byte = $F9
Const VK_ESCAPE:Byte = $1B
Const VK_EXECUTE:Byte = $2B
Const VK_EXSEL:Byte = $F8
Const VK_F1:Byte = $70
Const VK_F10:Byte = $79
Const VK_F11:Byte = $7A
Const VK_F12:Byte = $7B
Const VK_F13:Byte = $7C
Const VK_F14:Byte = $7D
Const VK_F15:Byte = $7E
Const VK_F16:Byte = $7F
Const VK_F17:Byte = $80
Const VK_F18:Byte = $81
Const VK_F19:Byte = $82
Const VK_F2:Byte = $71
Const VK_F20:Byte = $83
Const VK_F21:Byte = $84
Const VK_F22:Byte = $85
Const VK_F23:Byte = $86
Const VK_F24:Byte = $87
Const VK_F3:Byte = $72
Const VK_F4:Byte = $73
Const VK_F5:Byte = $74
Const VK_F6:Byte = $75
Const VK_F7:Byte = $76
Const VK_F8:Byte = $77
Const VK_F9:Byte = $78
Const VK_HELP:Byte = $2F
Const VK_HOME:Byte = $24
Const VK_INSERT:Byte = $2D
Const VK_LBUTTON:Byte = $1
Const VK_LCONTROL:Byte = $A2
Const VK_LEFT:Byte = $25
Const VK_LMENU:Byte = $A4
Const VK_LSHIFT:Byte = $A0
Const VK_MBUTTON:Byte = $4
Const VK_MENU:Byte = $12
Const VK_MULTIPLY:Byte = $6A
Const VK_NEXT:Byte = $22
Const VK_NONAME:Byte = $FC
Const VK_NUMLOCK:Byte = $90
Const VK_NUMPAD0:Byte = $60
Const VK_NUMPAD1:Byte = $61
Const VK_NUMPAD2:Byte = $62
Const VK_NUMPAD3:Byte = $63
Const VK_NUMPAD4:Byte = $64
Const VK_NUMPAD5:Byte = $65
Const VK_NUMPAD6:Byte = $66
Const VK_NUMPAD7:Byte = $67
Const VK_NUMPAD8:Byte = $68
Const VK_NUMPAD9:Byte = $69
Const VK_OEM_CLEAR:Byte = $FE
Const VK_PA1:Byte = $FD
Const VK_PAUSE:Byte = $13
Const VK_PLAY:Byte = $FA
Const VK_PRINT:Byte = $2A
Const VK_PRIOR:Byte = $21
Const VK_PROCESSKEY:Byte = $E5
Const VK_RBUTTON:Byte = $2
Const VK_RCONTROL:Byte = $A3
Const VK_RETURN:Byte = $D
Const VK_RIGHT:Byte = $27
Const VK_RMENU:Byte = $A5
Const VK_RSHIFT:Byte = $A1
Const VK_SCROLL:Byte = $91
Const VK_SELECT:Byte = $29
Const VK_SEPARATOR:Byte = $6C
Const VK_SHIFT:Byte = $10
Const VK_SNAPSHOT:Byte = $2C
Const VK_SPACE:Byte = $20
Const VK_SUBTRACT:Byte = $6D
Const VK_TAB:Byte = $9
Const VK_UP:Byte = $26
Const VK_ZOOM:Byte = $FB
'#End Region

Extern "win32"
Function keybd_event(bVk:Byte, bScan:Byte, dwFlags:Byte, dwExtraInfo:Int)
End Extern

'Example: KeyStroke VK_A
Function KeyStroke(VK_KEYV:Byte)
keybd_event(VK_KEYV, 0, 0, 0)
keybd_event(VK_KEYV, 0, KEYEVENTF_KEYUP, 0)
End Function


Comments :


grable(Posted 1+ years ago)

 You can turn the keyboard LEDs on/off with this funtion too ;)these are the vk constants:
VK_NUMLOCK
VK_CAPITAL
VK_SCROLL



WendellM(Posted 1+ years ago)

 Handy - thanks.I have a good ol' 101-key keyboard which I love, but the one thing that I wish I could do with it is [Windows]+[D] to show the desktop easily (rather than having to right-click on the taskbar).  By defining the Windows keys (I found the values in Eikon's B+/B3D <a href="codearcs1519-2.html?code=1227" >Virtual Keys</a>), this does the trick:Const VK_LWIN:Byte = $5B
Const VK_RWIN:Byte = $5C

keybd_event(VK_LWIN, 0, 0, 0)
keybd_event(VK_D, 0, 0, 0)
keybd_event(VK_D, 0, KEYEVENTF_KEYUP, 0)
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
I don't know if I'll try to actually put it into practice, but it's nice to see it in action.


duquette(Posted 1+ years ago)

 What is this, is this a different way to read keys pressed on your keyboard?


degac(Posted 1+ years ago)

 You are not 'reading' the key pressed. You are PRESSING the key via software.'...add the rest of the above
Local timer:Int = MilliSecs()

While Not AppTerminate()

If MilliSecs() > timer + 1500
KeyStroke(VK_A)
timer = MilliSecs()  
End If

Wend
You should note in the 'output' window (or in the textarea - if you don't stop the debug mode) of the IDE an 'a' every 1.5 seconds.


plash(Posted 1+ years ago)

 You can read the state of any key (win32) using GetAsyncKeyState.My <a href="codearcs44e7.html?code=2248" target="_blank">automax module</a> uses it for its hotkey system. [/i]