It would be even better to use Unicode (VkKeyScanW, AscW) ConsoleWrite('vkKeyScan for [' & "a" & '] = [' & _vkKeyScan("a") & ']' & @CR) ; return value is VK code ; @extended contains shift state Func _VkKeyScan($s_Char) Local $a_Ret = DllCall("user32.dll", "short", "VkKeyScanW", "ushort", AscW($s_Char)) If @error Then Return SetError(@error, @extended, -1) Return SetExtended(BitShift($a_Ret[0], 8), BitAnd($a_Ret[0], 0xFF)) EndFunc