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