Attribute VB_Name = "Module1"
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef r_Destination As Any, ByRef r_Source As Any, ByVal v_Length As Long)
Public Declare Function InitCommonControlsEx Lib "comctl32.dll" (iccex As tagInitCommonControlsEx) As Boolean

Public Type KBDLLHOOKSTRUCT
 vkCode As Long 'a virtual-key code in the range 1 to 254
 scanCode As Long 'hardware scan code for the key
 flags As Long 'specifies the extended-key flag, event-injected flag, context code, and transition-state flag
 time As Long 'time stamp for this message
 dwExtraInfo As Long 'extra info associated with the message
End Type

Public Type tagInitCommonControlsEx
 lngSize As Long
 lngICC As Long
End Type

Public Const WH_KEYBOARD_LL As Long = 13
Public Const HC_ACTION As Long = 0
Public Const WM_KEYDOWN As Long = &H100
Public Const WM_KEYUP As Long = &H101
Public Const ICC_USEREX_CLASSES = &H200

Public temp_keycode_to_watch As Integer
Public keycode_to_watch As Integer
Public key_count As Long
Public hHook As Long
Public kbdllhs As KBDLLHOOKSTRUCT
Public frm1 As Form1

Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 If nCode = HC_ACTION Then
  Select Case wParam
   Case WM_KEYUP
    Call CopyMemory(kbdllhs, ByVal lParam, Len(kbdllhs))
    temp_keycode_to_watch = keycode_to_watch
    'SHIFT
    If (keycode_to_watch = 16) Then
     If (kbdllhs.vkCode = 160) Or (kbdllhs.vkCode = 161) Then
      temp_keycode_to_watch = kbdllhs.vkCode
     End If
    'CTRL
    ElseIf (keycode_to_watch = 17) Then
     If (kbdllhs.vkCode = 162) Or (kbdllhs.vkCode = 163) Then
      temp_keycode_to_watch = kbdllhs.vkCode
     End If
    'ALT
    ElseIf (keycode_to_watch = 18) Then
     If (kbdllhs.vkCode = 164) Or (kbdllhs.vkCode = 165) Then
      temp_keycode_to_watch = kbdllhs.vkCode
     End If
    End If
    If temp_keycode_to_watch = kbdllhs.vkCode Then
     key_count = key_count + 1
     frm1.lblCount.Caption = key_count
     If (key_count < 10) Then
      frm1.lblCount.Left = 2275
     ElseIf (key_count < 100) Then
      frm1.lblCount.Left = 1650
     ElseIf (key_count < 1000) Then
      frm1.lblCount.Left = 1200
     ElseIf (key_count < 10000) Then
      frm1.lblCount.Left = 720
     Else
      frm1.lblCount.Left = 120
     End If
    End If
  End Select
 End If
 LowLevelKeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function

Public Sub Main()
 On Error Resume Next
 Dim iccex As tagInitCommonControlsEx
 iccex.lngSize = LenB(iccex)
 iccex.lngICC = ICC_USEREX_CLASSES
 InitCommonControlsEx iccex
 Set frm1 = New Form1
 Load frm1
 frm1.Show
End Sub

Public Function WriteKeyCodeFromChar(someChar As String) As Integer
 If someChar = " " Then
  WriteKeyCodeFromChar = 32
 Else
  someChar = Trim(someChar)
  If UCase(someChar) = "NO KEY" Then
   WriteKeyCodeFromChar = 0
  ElseIf UCase(someChar) = "LMOUSE" Then
   WriteKeyCodeFromChar = 1
  ElseIf UCase(someChar) = "RMOUSE" Then
   WriteKeyCodeFromChar = 2
  ElseIf UCase(someChar) = "CANCEL" Then
   WriteKeyCodeFromChar = 3
  ElseIf UCase(someChar) = "MMOUSE" Then
   WriteKeyCodeFromChar = 4
  ElseIf UCase(someChar) = "FIRST X" Then
   WriteKeyCodeFromChar = 5
  ElseIf UCase(someChar) = "SECOND X" Then
   WriteKeyCodeFromChar = 6
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 7
  ElseIf UCase(someChar) = "BACKSPACE" Or UCase(someChar) = "BS" Then
   WriteKeyCodeFromChar = 8
  ElseIf UCase(someChar) = "TAB" Then
   WriteKeyCodeFromChar = 9
  ElseIf UCase(someChar) = "LINEFEED" Or UCase(someChar) = "LF" Then
   WriteKeyCodeFromChar = 10
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 11
  ElseIf UCase(someChar) = "CLEAR" Then
   WriteKeyCodeFromChar = 12
  ElseIf UCase(someChar) = "RETURN" Then
   WriteKeyCodeFromChar = 13
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 14
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 15
   
  ElseIf UCase(someChar) = "SHIFT" Or UCase(someChar) = "LSHIFT" Or UCase(someChar) = "RSHIFT" Then
   WriteKeyCodeFromChar = 16
  
  ElseIf UCase(someChar) = "CTRL" Or UCase(someChar) = "LCTRL" Or UCase(someChar) = "RCTRL" Then
   WriteKeyCodeFromChar = 17
   
  ElseIf UCase(someChar) = "ALT" Or UCase(someChar) = "LALT" Or UCase(someChar) = "RALT" Then
   WriteKeyCodeFromChar = 18
   
  ElseIf UCase(someChar) = "PAUSE" Then
   WriteKeyCodeFromChar = 19
  ElseIf UCase(someChar) = "CAPSLOCK" Then
   WriteKeyCodeFromChar = 20
  ElseIf UCase(someChar) = "IME_KANA" Then
   WriteKeyCodeFromChar = 21
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 22
  ElseIf UCase(someChar) = "IME_JUNJA" Then
   WriteKeyCodeFromChar = 23
  ElseIf UCase(someChar) = "IME_FINAL" Then
   WriteKeyCodeFromChar = 24
  ElseIf UCase(someChar) = "IME_HANJA" Then
   WriteKeyCodeFromChar = 25
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 26
  ElseIf UCase(someChar) = "ESC" Then
   WriteKeyCodeFromChar = 27
  ElseIf UCase(someChar) = "IME_CONV" Then
   WriteKeyCodeFromChar = 28
  ElseIf UCase(someChar) = "IME_NONC" Then
   WriteKeyCodeFromChar = 29
  ElseIf UCase(someChar) = "IME_ACPT" Then
   WriteKeyCodeFromChar = 30
  ElseIf UCase(someChar) = "IME_MODE" Then
   WriteKeyCodeFromChar = 31
  ElseIf UCase(someChar) = "SPACE" Or UCase(someChar) = "SPACEBAR" Then
   WriteKeyCodeFromChar = 32
  ElseIf UCase(someChar) = "PGUP" Then
   WriteKeyCodeFromChar = 33
  ElseIf UCase(someChar) = "PGDN" Then
   WriteKeyCodeFromChar = 34
  ElseIf UCase(someChar) = "END" Then
   WriteKeyCodeFromChar = 35
  ElseIf UCase(someChar) = "HOME" Then
   WriteKeyCodeFromChar = 36
  ElseIf UCase(someChar) = "LEFT" Then
   WriteKeyCodeFromChar = 37
  ElseIf UCase(someChar) = "UP" Then
   WriteKeyCodeFromChar = 38
  ElseIf UCase(someChar) = "RIGHT" Then
   WriteKeyCodeFromChar = 39
  ElseIf UCase(someChar) = "DOWN" Then
   WriteKeyCodeFromChar = 40
  ElseIf UCase(someChar) = "SELECT" Then
   WriteKeyCodeFromChar = 41
  ElseIf UCase(someChar) = "PRINT" Then
   WriteKeyCodeFromChar = 42
  ElseIf UCase(someChar) = "EXECUTE" Then
   WriteKeyCodeFromChar = 43
  ElseIf UCase(someChar) = "PRINTSCR" Then
   WriteKeyCodeFromChar = 44
  ElseIf UCase(someChar) = "INSERT" Then
   WriteKeyCodeFromChar = 45
  ElseIf UCase(someChar) = "DELETE" Then
   WriteKeyCodeFromChar = 46
  ElseIf UCase(someChar) = "HELP" Then
   WriteKeyCodeFromChar = 47
  ElseIf someChar = ")" Or someChar = "0" Then
   WriteKeyCodeFromChar = 48
  ElseIf someChar = "!" Or someChar = "1" Then
   WriteKeyCodeFromChar = 49
  ElseIf someChar = "@" Or someChar = "2" Then
   WriteKeyCodeFromChar = 50
  ElseIf someChar = "#" Or someChar = "3" Then
   WriteKeyCodeFromChar = 51
  ElseIf someChar = "$" Or someChar = "4" Then
   WriteKeyCodeFromChar = 52
  ElseIf someChar = "%" Or someChar = "5" Then
   WriteKeyCodeFromChar = 53
  ElseIf someChar = "^" Or someChar = "6" Then
   WriteKeyCodeFromChar = 54
  ElseIf someChar = "&" Or someChar = "7" Then
   WriteKeyCodeFromChar = 55
  ElseIf someChar = "*" Or someChar = "8" Then
   WriteKeyCodeFromChar = 56
  ElseIf someChar = "(" Or someChar = "9" Then
   WriteKeyCodeFromChar = 57
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 58
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 59
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 60
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 61
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 62
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 63
  ElseIf UCase(someChar) = "UNDEFINED" Then
   WriteKeyCodeFromChar = 64
  ElseIf UCase(someChar) = "A" Then
   WriteKeyCodeFromChar = 65
  ElseIf UCase(someChar) = "B" Then
   WriteKeyCodeFromChar = 66
  ElseIf UCase(someChar) = "C" Then
   WriteKeyCodeFromChar = 67
  ElseIf UCase(someChar) = "D" Then
   WriteKeyCodeFromChar = 68
  ElseIf UCase(someChar) = "E" Then
   WriteKeyCodeFromChar = 69
  ElseIf UCase(someChar) = "F" Then
   WriteKeyCodeFromChar = 70
  ElseIf UCase(someChar) = "G" Then
   WriteKeyCodeFromChar = 71
  ElseIf UCase(someChar) = "H" Then
   WriteKeyCodeFromChar = 72
  ElseIf UCase(someChar) = "I" Then
   WriteKeyCodeFromChar = 73
  ElseIf UCase(someChar) = "J" Then
   WriteKeyCodeFromChar = 74
  ElseIf UCase(someChar) = "K" Then
   WriteKeyCodeFromChar = 75
  ElseIf UCase(someChar) = "L" Then
   WriteKeyCodeFromChar = 76
  ElseIf UCase(someChar) = "M" Then
   WriteKeyCodeFromChar = 77
  ElseIf UCase(someChar) = "N" Then
   WriteKeyCodeFromChar = 78
  ElseIf UCase(someChar) = "O" Then
   WriteKeyCodeFromChar = 79
  ElseIf UCase(someChar) = "P" Then
   WriteKeyCodeFromChar = 80
  ElseIf UCase(someChar) = "Q" Then
   WriteKeyCodeFromChar = 81
  ElseIf UCase(someChar) = "R" Then
   WriteKeyCodeFromChar = 82
  ElseIf UCase(someChar) = "S" Then
   WriteKeyCodeFromChar = 83
  ElseIf UCase(someChar) = "T" Then
   WriteKeyCodeFromChar = 84
  ElseIf UCase(someChar) = "U" Then
   WriteKeyCodeFromChar = 85
  ElseIf UCase(someChar) = "V" Then
   WriteKeyCodeFromChar = 86
  ElseIf UCase(someChar) = "W" Then
   WriteKeyCodeFromChar = 87
  ElseIf UCase(someChar) = "X" Then
   WriteKeyCodeFromChar = 88
  ElseIf UCase(someChar) = "Y" Then
   WriteKeyCodeFromChar = 89
  ElseIf UCase(someChar) = "Z" Then
   WriteKeyCodeFromChar = 90
  ElseIf UCase(someChar) = "LWINDOWS" Then
   WriteKeyCodeFromChar = 91
  ElseIf UCase(someChar) = "RWINDOWS" Then
   WriteKeyCodeFromChar = 92
  ElseIf UCase(someChar) = "CONTEXT" Then
   WriteKeyCodeFromChar = 93
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 94
  ElseIf UCase(someChar) = "SLEEP" Then
   WriteKeyCodeFromChar = 95
  ElseIf UCase(someChar) = "INSERT" Or someChar = "0" Then
   WriteKeyCodeFromChar = 96
  ElseIf UCase(someChar) = "END" Or someChar = "1" Then
   WriteKeyCodeFromChar = 97
  ElseIf UCase(someChar) = "DOWN" Or someChar = "2" Then
   WriteKeyCodeFromChar = 98
  ElseIf UCase(someChar) = "PGDN" Or someChar = "3" Then
   WriteKeyCodeFromChar = 99
  ElseIf UCase(someChar) = "LEFT" Or someChar = "4" Then
   WriteKeyCodeFromChar = 100
  ElseIf someChar = "5" Then
   WriteKeyCodeFromChar = 101
  ElseIf UCase(someChar) = "RIGHT" Or someChar = "6" Then
   WriteKeyCodeFromChar = 102
  ElseIf UCase(someChar) = "HOME" Or someChar = "7" Then
   WriteKeyCodeFromChar = 103
  ElseIf UCase(someChar) = "UP" Or someChar = "8" Then
   WriteKeyCodeFromChar = 104
  ElseIf UCase(someChar) = "PGUP" Or someChar = "9" Then
   WriteKeyCodeFromChar = 105
  ElseIf someChar = "*" Then
   WriteKeyCodeFromChar = 106
  ElseIf someChar = "+" Then
   WriteKeyCodeFromChar = 107
  ElseIf UCase(someChar) = "SEPARATOR" Then
   WriteKeyCodeFromChar = 108
  ElseIf someChar = "-" Then
   WriteKeyCodeFromChar = 109
  ElseIf UCase(someChar) = "DEL" Then
   WriteKeyCodeFromChar = 110
  ElseIf someChar = "/" Then
   WriteKeyCodeFromChar = 111
  ElseIf UCase(someChar) = "F1" Then
   WriteKeyCodeFromChar = 112
  ElseIf UCase(someChar) = "F2" Then
   WriteKeyCodeFromChar = 113
  ElseIf UCase(someChar) = "F3" Then
   WriteKeyCodeFromChar = 114
  ElseIf UCase(someChar) = "F4" Then
   WriteKeyCodeFromChar = 115
  ElseIf UCase(someChar) = "F5" Then
   WriteKeyCodeFromChar = 116
  ElseIf UCase(someChar) = "F6" Then
   WriteKeyCodeFromChar = 117
  ElseIf UCase(someChar) = "F7" Then
   WriteKeyCodeFromChar = 118
  ElseIf UCase(someChar) = "F8" Then
   WriteKeyCodeFromChar = 119
  ElseIf UCase(someChar) = "F9" Then
   WriteKeyCodeFromChar = 120
  ElseIf UCase(someChar) = "F10" Then
   WriteKeyCodeFromChar = 121
  ElseIf UCase(someChar) = "F11" Then
   WriteKeyCodeFromChar = 122
  ElseIf UCase(someChar) = "F12" Then
   WriteKeyCodeFromChar = 123
  ElseIf UCase(someChar) = "F13" Then
   WriteKeyCodeFromChar = 124
  ElseIf UCase(someChar) = "F14" Then
   WriteKeyCodeFromChar = 125
  ElseIf UCase(someChar) = "F15" Then
   WriteKeyCodeFromChar = 126
  ElseIf UCase(someChar) = "F16" Then
   WriteKeyCodeFromChar = 127
  ElseIf UCase(someChar) = "F17" Then
   WriteKeyCodeFromChar = 128
  ElseIf UCase(someChar) = "F18" Then
   WriteKeyCodeFromChar = 129
  ElseIf UCase(someChar) = "F19" Then
   WriteKeyCodeFromChar = 130
  ElseIf UCase(someChar) = "F20" Then
   WriteKeyCodeFromChar = 131
  ElseIf UCase(someChar) = "F21" Then
   WriteKeyCodeFromChar = 132
  ElseIf UCase(someChar) = "F22" Then
   WriteKeyCodeFromChar = 133
  ElseIf UCase(someChar) = "F23" Then
   WriteKeyCodeFromChar = 134
  ElseIf UCase(someChar) = "F24" Then
   WriteKeyCodeFromChar = 135
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 136
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 137
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 138
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 139
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 140
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 141
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 142
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 143
  ElseIf UCase(someChar) = "NUMLOCK" Then
   WriteKeyCodeFromChar = 144
  ElseIf UCase(someChar) = "SCRLLOCK" Then
   WriteKeyCodeFromChar = 145
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 146
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 147
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 148
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 149
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 150
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 151
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 152
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 153
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 154
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 155
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 156
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 157
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 158
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 159
   
  'ElseIf UCase(someChar) = "LSHIFT" Then
  ' WriteKeyCodeFromChar = 160
  'ElseIf UCase(someChar) = "RSHIFT" Then
  ' WriteKeyCodeFromChar = 161
  'ElseIf UCase(someChar) = "LCTRL" Then
  ' WriteKeyCodeFromChar = 162
  'ElseIf UCase(someChar) = "RCTRL" Then
  ' WriteKeyCodeFromChar = 163
  'ElseIf UCase(someChar) = "LALT" Then
  ' WriteKeyCodeFromChar = 164
  'ElseIf UCase(someChar) = "RALT" Then
  ' WriteKeyCodeFromChar = 165
   
  ElseIf UCase(someChar) = "BACK" Then
   WriteKeyCodeFromChar = 166
  ElseIf UCase(someChar) = "FORWARD" Then
   WriteKeyCodeFromChar = 167
  ElseIf UCase(someChar) = "REFRESH" Then
   WriteKeyCodeFromChar = 168
  ElseIf UCase(someChar) = "STOP" Then
   WriteKeyCodeFromChar = 169
  ElseIf UCase(someChar) = "SEARCH" Then
   WriteKeyCodeFromChar = 170
  ElseIf UCase(someChar) = "FAVORITES" Then
   WriteKeyCodeFromChar = 171
  ElseIf UCase(someChar) = "HOME" Then
   WriteKeyCodeFromChar = 172
  ElseIf UCase(someChar) = "MUTE" Then
   WriteKeyCodeFromChar = 173
  ElseIf UCase(someChar) = "VOLDOWN" Then
   WriteKeyCodeFromChar = 174
  ElseIf UCase(someChar) = "VOLUP" Then
   WriteKeyCodeFromChar = 175
  ElseIf UCase(someChar) = "NEXT" Then
   WriteKeyCodeFromChar = 176
  ElseIf UCase(someChar) = "PREV" Then
   WriteKeyCodeFromChar = 177
  ElseIf UCase(someChar) = "STOP" Then
   WriteKeyCodeFromChar = 178
  ElseIf UCase(someChar) = "PLAY" Then
   WriteKeyCodeFromChar = 179
  ElseIf UCase(someChar) = "EMAIL" Then
   WriteKeyCodeFromChar = 180
  ElseIf UCase(someChar) = "MEDIA" Then
   WriteKeyCodeFromChar = 181
  ElseIf UCase(someChar) = "START1" Then
   WriteKeyCodeFromChar = 182
  ElseIf UCase(someChar) = "START2" Then
   WriteKeyCodeFromChar = 183
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 184
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 185
  ElseIf someChar = ":" Or someChar = ";" Then
   WriteKeyCodeFromChar = 186
  ElseIf someChar = "+" Or someChar = "=" Then
   WriteKeyCodeFromChar = 187
  ElseIf someChar = "<" Or someChar = "," Then
   WriteKeyCodeFromChar = 188
  ElseIf someChar = "_" Or someChar = "-" Then
   WriteKeyCodeFromChar = 189
  ElseIf someChar = ">" Or someChar = "." Then
   WriteKeyCodeFromChar = 190
  ElseIf someChar = "?" Or someChar = "/" Then
   WriteKeyCodeFromChar = 191
  ElseIf someChar = "~" Or someChar = "`" Then
   WriteKeyCodeFromChar = 192
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 193
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 194
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 195
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 196
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 197
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 198
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 199
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 200
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 201
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 202
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 203
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 204
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 205
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 206
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 207
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 208
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 209
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 210
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 211
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 212
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 213
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 214
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 215
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 216
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 217
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 218
  ElseIf someChar = "{" Or someChar = "[" Then
   WriteKeyCodeFromChar = 219
  ElseIf someChar = "|" Or someChar = "\" Then
   WriteKeyCodeFromChar = 220
  ElseIf someChar = "}" Or someChar = "]" Then
   WriteKeyCodeFromChar = 221
  ElseIf someChar = """" Or someChar = "'" Then
   WriteKeyCodeFromChar = 222
  ElseIf UCase(someChar) = "MISC" Then
   WriteKeyCodeFromChar = 223
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 224
  ElseIf UCase(someChar) = "OEM" Then
   WriteKeyCodeFromChar = 225
  ElseIf UCase(someChar) = "OEM ANG" Then
   WriteKeyCodeFromChar = 226
  ElseIf UCase(someChar) = "OEM" Then
   WriteKeyCodeFromChar = 227
  ElseIf UCase(someChar) = "OEM" Then
   WriteKeyCodeFromChar = 228
  ElseIf UCase(someChar) = "PROCESS" Then
   WriteKeyCodeFromChar = 229
  ElseIf UCase(someChar) = "OEM" Then
   WriteKeyCodeFromChar = 230
  ElseIf UCase(someChar) = "UNICODE" Then
   WriteKeyCodeFromChar = 231
  ElseIf UCase(someChar) = "UNASSIGNED" Then
   WriteKeyCodeFromChar = 232
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 233
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 234
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 235
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 236
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 237
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 238
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 239
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 240
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 241
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 242
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 243
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 244
  ElseIf UCase(someChar) = "OEM SPECIFIC" Then
   WriteKeyCodeFromChar = 245
  ElseIf UCase(someChar) = "ATTN" Then
   WriteKeyCodeFromChar = 246
  ElseIf UCase(someChar) = "CRSEL" Then
   WriteKeyCodeFromChar = 247
  ElseIf UCase(someChar) = "EXSEL" Then
   WriteKeyCodeFromChar = 248
  ElseIf UCase(someChar) = "ERASE EOF" Then
   WriteKeyCodeFromChar = 249
  ElseIf UCase(someChar) = "PLAY" Then
   WriteKeyCodeFromChar = 250
  ElseIf UCase(someChar) = "ZOOM" Then
   WriteKeyCodeFromChar = 251
  ElseIf UCase(someChar) = "RESERVED" Then
   WriteKeyCodeFromChar = 252
  ElseIf UCase(someChar) = "PA1" Then
   WriteKeyCodeFromChar = 253
  ElseIf UCase(someChar) = "CLEAR" Then
   WriteKeyCodeFromChar = 254
  ElseIf UCase(someChar) = "MISC" Then
   WriteKeyCodeFromChar = 255
  Else
   WriteKeyCodeFromChar = 666
  End If
 End If
End Function