Attribute VB_Name = "modHotkeys"
Private Enum VIRTKEYS
VIRT_SHIFT = 1
VIRT_CTRL
VIRT_CTRLSHIFT
VIRT_ALT
VIRT_ALTSHIFT
VIRT_ALTCTRL
VIRT_ALTCTRLSHIFT
End Enum
Private Enum FKEYS
KEY_F1 = 112
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_F12
End Enum
Private Enum LKEYS
KEY_A = 65
KEY_B
KEY_C
KEY_D
KEY_E
KEY_F
KEY_G
KEY_H
KEY_I
KEY_J
KEY_K
KEY_L
KEY_M
KEY_N
KEY_O
KEY_P
KEY_Q
KEY_R
KEY_S
KEY_T
KEY_U
KEY_V
KEY_W
KEY_X
KEY_Y
KEY_Z
End Enum
Private Function GetKeyString(intValue As Integer) As String
Select Case intValue
Case 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123
GetKeyString = "f" & CStr(intValue - 111)
Case 9
GetKeyString = "tab"
Case 13
GetKeyString = "enter"
Case Else
GetKeyString = Chr(intValue)
End Select
End Function
Public Function HandleHotkey(intShift As Integer, intCharX As Integer, Optional serverID As Integer = 0) As Boolean
If intShift = 0 Then Exit Function
Dim intChar As Integer, KeyPressed As String
intChar = intCharX
KeyPressed = GetKeyString(intChar)
If intChar = 16 Or intChar = 17 Or intChar = 18 Then 'alt, ctrl, shift : ignore
HandleHotkey = False
Exit Function
End If
Dim params(1) As String, localVars(2) As String, res As Integer
params(0) = "blah"
Select Case intShift
Case VIRT_CTRL ' Control key...not so obviously
Select Case KeyPressed
Case "B"
CLIENT.mnu_Format_Bold_Click
HandleHotkey = True
Case "U"
CLIENT.mnu_Format_Underline_Click
HandleHotkey = True
Case "R"
CLIENT.mnu_Format_Reverse_Click
HandleHotkey = True
Case "O"
CLIENT.mnu_Format_Cancel_Click
HandleHotkey = True
Case "K"
CLIENT.mnu_Format_Color_Click
HandleHotkey = True
Case "N"
CLIENT.mnu_Connect_NewServer_Click
HandleHotkey = True
Case "S"
frmSexIDE.Show
Case Else
localVars(1) = "virtkey:ctrl"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("ctrl", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
End Select
Case VIRT_SHIFT
localVars(1) = "virtkey:shift"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("shift", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
Case VIRT_CTRLSHIFT
localVars(1) = "virtkey:ctrl+shift"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("shift", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
Case VIRT_ALT
localVars(1) = "virtkey:alt"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("shift", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
Case VIRT_ALTSHIFT
localVars(1) = "virtkey:alt+shift"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("shift", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
Case VIRT_ALTCTRL
localVars(1) = "virtkey:alt+ctrl"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("shift", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
Case VIRT_ALTCTRLSHIFT
localVars(1) = "virtkey:alt+ctrl+shift"
localVars(2) = "key:" & KeyPressed
If scriptEngine.ExecuteHotkey("shift", KeyPressed, params(), serverID, localVars()) Then
HandleHotkey = True
Else
HandleHotkey = False
End If
Case Else
HandleHotkey = False
End Select
End Function