ich möchte mal um eure Hilfe bitten um herauszufinden, ob mein Tastaturtreiber vielleicht verbuggt ist. Am Ende dieses Postings findet ihr einen Testcode, der bei mir zu sehr seltsamen Ergebnissen führt, wenn ich seit dem Starten des PCs mindestens einmal die "Lautstärke-Runter-Taste" betätigt habe. (...oder wie diese Taste auch immer richtig heißt... )
Es ist übrigens egal, ob ich als x86 oder x64 Executeable kompiliere.
Wenn ein/zwei Leutchen den Testcode mal ausführen könnten und mir dann berichten, ob sie auch das Problem haben, dann würde mir das echt weiterhelfen!
Hier mal wie es bei mir zum Bug kommt (zum Reproduzieren):
- Rechner gestartet und noch keine Multimedia-Taste betätigt;
Testcode gestartet, angezeigte Tasten sind korrekt (nämlich "keine" ).
- Einmal "Lautstärke-Runter" betätigt und wieder losgelassen;
die Taste wird weiterhin als betätigt angezeigt!
- Kurz das Fenster deaktiviert und wieder aktiviert (mit Alt-Tab oder "raus-und-rein-klicken");
KeyboardPushed() arbeitet wieder richtig, GetAsyncKeyState_() bleibt weiter hängen!
Wie immer vielen Dank im Voraus!
Code: Alles auswählen
EnableExplicit
Procedure.s GetVirtualKeyConstant( VirtualKey )
CompilerSelect SizeOf( Integer )
CompilerCase SizeOf( Quad ) : Protected *Ergebnis.String = ?VK_Table + ( VirtualKey & $FF ) << 3
CompilerCase SizeOf( Long ) : Protected *Ergebnis.String = ?VK_Table + ( VirtualKey & $FF ) << 2
CompilerEndSelect
ProcedureReturn *Ergebnis\s
DataSection ; VK-Table
VK_Table:
Data.i ?VK_00,?VK_01,?VK_02,?VK_03,?VK_04,?VK_05,?VK_06,?VK_07,?VK_08,?VK_09,?VK_0A,?VK_0B,?VK_0C,?VK_0D,?VK_0E,?VK_0F
Data.i ?VK_10,?VK_11,?VK_12,?VK_13,?VK_14,?VK_15,?VK_16,?VK_17,?VK_18,?VK_19,?VK_1A,?VK_1B,?VK_1C,?VK_1D,?VK_1E,?VK_1F
Data.i ?VK_20,?VK_21,?VK_22,?VK_23,?VK_24,?VK_25,?VK_26,?VK_27,?VK_28,?VK_29,?VK_2A,?VK_2B,?VK_2C,?VK_2D,?VK_2E,?VK_2F
Data.i ?VK_30,?VK_31,?VK_32,?VK_33,?VK_34,?VK_35,?VK_36,?VK_37,?VK_38,?VK_39,?VK_3A,?VK_3B,?VK_3C,?VK_3D,?VK_3E,?VK_3F
Data.i ?VK_40,?VK_41,?VK_42,?VK_43,?VK_44,?VK_45,?VK_46,?VK_47,?VK_48,?VK_49,?VK_4A,?VK_4B,?VK_4C,?VK_4D,?VK_4E,?VK_4F
Data.i ?VK_50,?VK_51,?VK_52,?VK_53,?VK_54,?VK_55,?VK_56,?VK_57,?VK_58,?VK_59,?VK_5A,?VK_5B,?VK_5C,?VK_5D,?VK_5E,?VK_5F
Data.i ?VK_60,?VK_61,?VK_62,?VK_63,?VK_64,?VK_65,?VK_66,?VK_67,?VK_68,?VK_69,?VK_6A,?VK_6B,?VK_6C,?VK_6D,?VK_6E,?VK_6F
Data.i ?VK_70,?VK_71,?VK_72,?VK_73,?VK_74,?VK_75,?VK_76,?VK_77,?VK_78,?VK_79,?VK_7A,?VK_7B,?VK_7C,?VK_7D,?VK_7E,?VK_7F
Data.i ?VK_80,?VK_81,?VK_82,?VK_83,?VK_84,?VK_85,?VK_86,?VK_87,?VK_88,?VK_89,?VK_8A,?VK_8B,?VK_8C,?VK_8D,?VK_8E,?VK_8F
Data.i ?VK_90,?VK_91,?VK_92,?VK_93,?VK_94,?VK_95,?VK_96,?VK_97,?VK_98,?VK_99,?VK_9A,?VK_9B,?VK_9C,?VK_9D,?VK_9E,?VK_9F
Data.i ?VK_A0,?VK_A1,?VK_A2,?VK_A3,?VK_A4,?VK_A5,?VK_A6,?VK_A7,?VK_A8,?VK_A9,?VK_AA,?VK_AB,?VK_AC,?VK_AD,?VK_AE,?VK_AF
Data.i ?VK_B0,?VK_B1,?VK_B2,?VK_B3,?VK_B4,?VK_B5,?VK_B6,?VK_B7,?VK_B8,?VK_B9,?VK_BA,?VK_BB,?VK_BC,?VK_BD,?VK_BE,?VK_BF
Data.i ?VK_C0,?VK_C1,?VK_C2,?VK_C3,?VK_C4,?VK_C5,?VK_C6,?VK_C7,?VK_C8,?VK_C9,?VK_CA,?VK_CB,?VK_CC,?VK_CD,?VK_CE,?VK_CF
Data.i ?VK_D0,?VK_D1,?VK_D2,?VK_D3,?VK_D4,?VK_D5,?VK_D6,?VK_D7,?VK_D8,?VK_D9,?VK_DA,?VK_DB,?VK_DC,?VK_DD,?VK_DE,?VK_DF
Data.i ?VK_E0,?VK_E1,?VK_E2,?VK_E3,?VK_E4,?VK_E5,?VK_E6,?VK_E7,?VK_E8,?VK_E9,?VK_EA,?VK_EB,?VK_EC,?VK_ED,?VK_EE,?VK_EF
Data.i ?VK_F0,?VK_F1,?VK_F2,?VK_F3,?VK_F4,?VK_F5,?VK_F6,?VK_F7,?VK_F8,?VK_F9,?VK_FA,?VK_FB,?VK_FC,?VK_FD,?VK_FE,?VK_FF
VK_00: : Data.s "$00/0 (illegal)"
VK_01: : Data.s "#VK_LBUTTON"
VK_02: : Data.s "#VK_RBUTTON"
VK_03: : Data.s "#VK_CANCEL"
VK_04: : Data.s "#VK_MBUTTON"
VK_05: : Data.s "#VK_XBUTTON1"
VK_06: : Data.s "#VK_XBUTTON2"
VK_07: : Data.s "$07/7 (undefined)"
VK_08: : Data.s "#VK_BACK"
VK_09: : Data.s "#VK_TAB"
VK_0A: : Data.s "$0A/10 (reserved)"
VK_0B: : Data.s "$0B/11 (reserved)"
VK_0C: : Data.s "#VK_CLEAR"
VK_0D: : Data.s "#VK_RETURN"
VK_0E: : Data.s "$0E/14 (undefined)"
VK_0F: : Data.s "$0F/15 (undefined)"
VK_10: : Data.s "#VK_SHIFT"
VK_11: : Data.s "#VK_CONTROL"
VK_12: : Data.s "#VK_MENU"
VK_13: : Data.s "#VK_PAUSE"
VK_14: : Data.s "#VK_CAPITAL"
VK_15: : Data.s "#VK_KANA/HANGUL"
VK_16: : Data.s "$16/22 (undefined)"
VK_17: : Data.s "#VK_JUNJA"
VK_18: : Data.s "#VK_FINAL"
VK_19: : Data.s "#VK_KANJI/HANJA"
VK_1A: : Data.s "$1A/26 (undefined)"
VK_1B: : Data.s "#VK_ESCAPE"
VK_1C: : Data.s "#VK_CONVERT"
VK_1D: : Data.s "#VK_NONCONVERT"
VK_1E: : Data.s "#VK_ACCEPT"
VK_1F: : Data.s "#VK_MODECHANGE"
VK_20: : Data.s "#VK_SPACE"
VK_21: : Data.s "#VK_PRIOR"
VK_22: : Data.s "#VK_NEXT"
VK_23: : Data.s "#VK_END"
VK_24: : Data.s "#VK_HOME"
VK_25: : Data.s "#VK_LEFT"
VK_26: : Data.s "#VK_UP"
VK_27: : Data.s "#VK_RIGHT"
VK_28: : Data.s "#VK_DOWN"
VK_29: : Data.s "#VK_SELECT"
VK_2A: : Data.s "#VK_PRINT"
VK_2B: : Data.s "#VK_EXECUTE"
VK_2C: : Data.s "#VK_SNAPSHOT"
VK_2D: : Data.s "#VK_INSERT"
VK_2E: : Data.s "#VK_DELETE"
VK_2F: : Data.s "#VK_HELP"
VK_30: : Data.s "#VK_0"
VK_31: : Data.s "#VK_1"
VK_32: : Data.s "#VK_2"
VK_33: : Data.s "#VK_3"
VK_34: : Data.s "#VK_4"
VK_35: : Data.s "#VK_5"
VK_36: : Data.s "#VK_6"
VK_37: : Data.s "#VK_7"
VK_38: : Data.s "#VK_8"
VK_39: : Data.s "#VK_9"
VK_3A: : Data.s "$3A/58 (undefined)"
VK_3B: : Data.s "$3B/59 (undefined)"
VK_3C: : Data.s "$3C/60 (undefined)"
VK_3D: : Data.s "$3D/61 (undefined)"
VK_3E: : Data.s "$3E/62 (undefined)"
VK_3F: : Data.s "$3F/63 (undefined)"
VK_40: : Data.s "$40/64 (undefined)"
VK_41: : Data.s "#VK_A"
VK_42: : Data.s "#VK_B"
VK_43: : Data.s "#VK_C"
VK_44: : Data.s "#VK_D"
VK_45: : Data.s "#VK_E"
VK_46: : Data.s "#VK_F"
VK_47: : Data.s "#VK_G"
VK_48: : Data.s "#VK_H"
VK_49: : Data.s "#VK_I"
VK_4A: : Data.s "#VK_J"
VK_4B: : Data.s "#VK_K"
VK_4C: : Data.s "#VK_L"
VK_4D: : Data.s "#VK_M"
VK_4E: : Data.s "#VK_N"
VK_4F: : Data.s "#VK_O"
VK_50: : Data.s "#VK_P"
VK_51: : Data.s "#VK_Q"
VK_52: : Data.s "#VK_R"
VK_53: : Data.s "#VK_S"
VK_54: : Data.s "#VK_T"
VK_55: : Data.s "#VK_U"
VK_56: : Data.s "#VK_V"
VK_57: : Data.s "#VK_W"
VK_58: : Data.s "#VK_X"
VK_59: : Data.s "#VK_Y"
VK_5A: : Data.s "#VK_Z"
VK_5B: : Data.s "#VK_LWIN"
VK_5C: : Data.s "#VK_RWIN"
VK_5D: : Data.s "#VK_APPS"
VK_5E: : Data.s "$5E/94 (reserved)"
VK_5F: : Data.s "#VK_SLEEP"
VK_60: : Data.s "#VK_NUMPAD0"
VK_61: : Data.s "#VK_NUMPAD1"
VK_62: : Data.s "#VK_NUMPAD2"
VK_63: : Data.s "#VK_NUMPAD3"
VK_64: : Data.s "#VK_NUMPAD4"
VK_65: : Data.s "#VK_NUMPAD5"
VK_66: : Data.s "#VK_NUMPAD6"
VK_67: : Data.s "#VK_NUMPAD7"
VK_68: : Data.s "#VK_NUMPAD8"
VK_69: : Data.s "#VK_NUMPAD9"
VK_6A: : Data.s "#VK_MULTIPLY"
VK_6B: : Data.s "#VK_ADD"
VK_6C: : Data.s "#VK_SEPARATOR"
VK_6D: : Data.s "#VK_SUBTRACT"
VK_6E: : Data.s "#VK_DECIMAL"
VK_6F: : Data.s "#VK_DIVIDE"
VK_70: : Data.s "#VK_F1"
VK_71: : Data.s "#VK_F2"
VK_72: : Data.s "#VK_F3"
VK_73: : Data.s "#VK_F4"
VK_74: : Data.s "#VK_F5"
VK_75: : Data.s "#VK_F6"
VK_76: : Data.s "#VK_F7"
VK_77: : Data.s "#VK_F8"
VK_78: : Data.s "#VK_F9"
VK_79: : Data.s "#VK_F10"
VK_7A: : Data.s "#VK_F11"
VK_7B: : Data.s "#VK_F12"
VK_7C: : Data.s "#VK_F13"
VK_7D: : Data.s "#VK_F14"
VK_7E: : Data.s "#VK_F15"
VK_7F: : Data.s "#VK_F16"
VK_80: : Data.s "#VK_F17"
VK_81: : Data.s "#VK_F18"
VK_82: : Data.s "#VK_F19"
VK_83: : Data.s "#VK_F20"
VK_84: : Data.s "#VK_F21"
VK_85: : Data.s "#VK_F22"
VK_86: : Data.s "#VK_F23"
VK_87: : Data.s "#VK_F24"
VK_88: : Data.s "$88/136 (unassigned)"
VK_89: : Data.s "$89/137 (unassigned)"
VK_8A: : Data.s "$8A/138 (unassigned)"
VK_8B: : Data.s "$8B/139 (unassigned)"
VK_8C: : Data.s "$8C/140 (unassigned)"
VK_8D: : Data.s "$8D/141 (unassigned)"
VK_8E: : Data.s "$8E/142 (unassigned)"
VK_8F: : Data.s "$8F/143 (unassigned)"
VK_90: : Data.s "#VK_NUMLOCK"
VK_91: : Data.s "#VK_SCROLL"
VK_92: : Data.s "#VK_OEM_FJ_JISHO"
VK_93: : Data.s "#VK_OEM_FJ_MASSHOU"
VK_94: : Data.s "#VK_OEM_FJ_TOUROKU"
VK_95: : Data.s "#VK_OEM_FJ_LOYA"
VK_96: : Data.s "#VK_OEM_FJ_ROYA"
VK_97: : Data.s "$97/151 (unassigned)"
VK_98: : Data.s "$98/152 (unassigned)"
VK_99: : Data.s "$99/153 (unassigned)"
VK_9A: : Data.s "$9A/154 (unassigned)"
VK_9B: : Data.s "$9B/155 (unassigned)"
VK_9C: : Data.s "$9C/156 (unassigned)"
VK_9D: : Data.s "$9D/157 (unassigned)"
VK_9E: : Data.s "$9E/158 (unassigned)"
VK_9F: : Data.s "$9F/159 (unassigned)"
VK_A0: : Data.s "#VK_LSHIFT"
VK_A1: : Data.s "#VK_RSHIFT"
VK_A2: : Data.s "#VK_LCONTROL"
VK_A3: : Data.s "#VK_RCONTROL"
VK_A4: : Data.s "#VK_LMENU"
VK_A5: : Data.s "#VK_RMENU"
VK_A6: : Data.s "#VK_BROWSER_BACK"
VK_A7: : Data.s "#VK_BROWSER_FORWARD"
VK_A8: : Data.s "#VK_BROWSER_REFRESH"
VK_A9: : Data.s "#VK_BROWSER_STOP"
VK_AA: : Data.s "#VK_BROWSER_SEARCH"
VK_AB: : Data.s "#VK_BROWSER_FAVORITES"
VK_AC: : Data.s "#VK_BROWSER_HOME"
VK_AD: : Data.s "#VK_VOLUME_MUTE"
VK_AE: : Data.s "#VK_VOLUME_DOWN"
VK_AF: : Data.s "#VK_VOLUME_UP"
VK_B0: : Data.s "#VK_MEDIA_NEXT_TRACK"
VK_B1: : Data.s "#VK_MEDIA_PREV_TRACK"
VK_B2: : Data.s "#VK_MEDIA_STOP"
VK_B3: : Data.s "#VK_MEDIA_PLAY_PAUSE"
VK_B4: : Data.s "#VK_LAUNCH_MAIL"
VK_B5: : Data.s "#VK_LAUNCH_MEDIA_SELECT"
VK_B6: : Data.s "#VK_LAUNCH_APP1"
VK_B7: : Data.s "#VK_LAUNCH_APP2"
VK_B8: : Data.s "$B8/184 (reserved)"
VK_B9: : Data.s "$B9/185 (reserved)"
VK_BA: : Data.s "#VK_OEM_1"
VK_BB: : Data.s "#VK_OEM_PLUS"
VK_BC: : Data.s "#VK_OEM_COMMA"
VK_BD: : Data.s "#VK_OEM_MINUS"
VK_BE: : Data.s "#VK_OEM_PERIOD"
VK_BF: : Data.s "#VK_OEM_2"
VK_C0: : Data.s "#VK_OEM_3"
VK_C1: : Data.s "#VK_ABNT_C1 (?)"
VK_C2: : Data.s "#VK_ABNT_C2 (?)"
VK_C3: : Data.s "$C3/195 (reserved)"
VK_C4: : Data.s "$C4/196 (reserved)"
VK_C5: : Data.s "$C5/197 (reserved)"
VK_C6: : Data.s "$C6/198 (reserved)"
VK_C7: : Data.s "$C7/199 (reserved)"
VK_C8: : Data.s "$C8/200 (reserved)"
VK_C9: : Data.s "$C9/201 (reserved)"
VK_CA: : Data.s "$CA/202 (reserved)"
VK_CB: : Data.s "$CB/203 (reserved)"
VK_CC: : Data.s "$CC/204 (reserved)"
VK_CD: : Data.s "$CD/205 (reserved)"
VK_CE: : Data.s "$CE/206 (reserved)"
VK_CF: : Data.s "$CF/207 (reserved)"
VK_D0: : Data.s "$D0/208 (reserved)"
VK_D1: : Data.s "$D1/209 (reserved)"
VK_D2: : Data.s "$D2/210 (reserved)"
VK_D3: : Data.s "$D3/211 (reserved)"
VK_D4: : Data.s "$D4/212 (reserved)"
VK_D5: : Data.s "$D5/213 (reserved)"
VK_D6: : Data.s "$D6/214 (reserved)"
VK_D7: : Data.s "$D7/215 (reserved)"
VK_D8: : Data.s "$D8/216 (unassigned)"
VK_D9: : Data.s "$D9/217 (unassigned)"
VK_DA: : Data.s "$DA/218 (unassigned)"
VK_DB: : Data.s "#VK_OEM_4"
VK_DC: : Data.s "#VK_OEM_5"
VK_DD: : Data.s "#VK_OEM_6"
VK_DE: : Data.s "#VK_OEM_7"
VK_DF: : Data.s "#VK_OEM_8"
VK_E0: : Data.s "$E0/224 (reserved)"
VK_E1: : Data.s "#VK_OEM_AX"
VK_E2: : Data.s "#VK_OEM_102"
VK_E3: : Data.s "#VK_ICO_HELP"
VK_E4: : Data.s "#VK_ICO_00"
VK_E5: : Data.s "#VK_PROCESSKEY"
VK_E6: : Data.s "#VK_ICO_CLEAR"
VK_E7: : Data.s "#VK_PACKET"
VK_E8: : Data.s "$E8/232 (unassigned)"
VK_E9: : Data.s "#VK_OEM_RESET"
VK_EA: : Data.s "#VK_OEM_JUMP"
VK_EB: : Data.s "#VK_OEM_PA1"
VK_EC: : Data.s "#VK_OEM_PA2"
VK_ED: : Data.s "#VK_OEM_PA3"
VK_EE: : Data.s "#VK_OEM_WSCTRL"
VK_EF: : Data.s "#VK_OEM_CUSEL"
VK_F0: : Data.s "#VK_OEM_ATTN"
VK_F1: : Data.s "#VK_OEM_FINISH"
VK_F2: : Data.s "#VK_OEM_COPY"
VK_F3: : Data.s "#VK_OEM_AUTO"
VK_F4: : Data.s "#VK_OEM_ENLW"
VK_F5: : Data.s "#VK_OEM_BACKTAB"
VK_F6: : Data.s "#VK_ATTN"
VK_F7: : Data.s "#VK_CRSEL"
VK_F8: : Data.s "#VK_EXSEL"
VK_F9: : Data.s "#VK_EREOF"
VK_FA: : Data.s "#VK_PLAY"
VK_FB: : Data.s "#VK_ZOOM"
VK_FC: : Data.s "#VK_NONAME"
VK_FD: : Data.s "#VK_PA1"
VK_FE: : Data.s "#VK_OEM_CLEAR"
VK_FF: : Data.s "$FF/255 (illegal)"
EndDataSection
EndProcedure
Procedure.s GetPBKeyConstant( PB_Key )
CompilerSelect SizeOf( Integer )
CompilerCase SizeOf( Quad ) : Protected *Ergebnis.String = ?PBK_Table + ( PB_Key & $FF ) << 3
CompilerCase SizeOf( Long ) : Protected *Ergebnis.String = ?PBK_Table + ( PB_Key & $FF ) << 2
CompilerEndSelect
ProcedureReturn *Ergebnis\s
DataSection ; PB-Key-Table
PBK_Table:
Data.i ?PBK_00,?PBK_01,?PBK_02,?PBK_03,?PBK_04,?PBK_05,?PBK_06,?PBK_07,?PBK_08,?PBK_09,?PBK_0A,?PBK_0B,?PBK_0C,?PBK_0D,?PBK_0E,?PBK_0F
Data.i ?PBK_10,?PBK_11,?PBK_12,?PBK_13,?PBK_14,?PBK_15,?PBK_16,?PBK_17,?PBK_18,?PBK_19,?PBK_1A,?PBK_1B,?PBK_1C,?PBK_1D,?PBK_1E,?PBK_1F
Data.i ?PBK_20,?PBK_21,?PBK_22,?PBK_23,?PBK_24,?PBK_25,?PBK_26,?PBK_27,?PBK_28,?PBK_29,?PBK_2A,?PBK_2B,?PBK_2C,?PBK_2D,?PBK_2E,?PBK_2F
Data.i ?PBK_30,?PBK_31,?PBK_32,?PBK_33,?PBK_34,?PBK_35,?PBK_36,?PBK_37,?PBK_38,?PBK_39,?PBK_3A,?PBK_3B,?PBK_3C,?PBK_3D,?PBK_3E,?PBK_3F
Data.i ?PBK_40,?PBK_41,?PBK_42,?PBK_43,?PBK_44,?PBK_45,?PBK_46,?PBK_47,?PBK_48,?PBK_49,?PBK_4A,?PBK_4B,?PBK_4C,?PBK_4D,?PBK_4E,?PBK_4F
Data.i ?PBK_50,?PBK_51,?PBK_52,?PBK_53,?PBK_54,?PBK_55,?PBK_56,?PBK_57,?PBK_58,?PBK_59,?PBK_5A,?PBK_5B,?PBK_5C,?PBK_5D,?PBK_5E,?PBK_5F
Data.i ?PBK_60,?PBK_61,?PBK_62,?PBK_63,?PBK_64,?PBK_65,?PBK_66,?PBK_67,?PBK_68,?PBK_69,?PBK_6A,?PBK_6B,?PBK_6C,?PBK_6D,?PBK_6E,?PBK_6F
Data.i ?PBK_70,?PBK_71,?PBK_72,?PBK_73,?PBK_74,?PBK_75,?PBK_76,?PBK_77,?PBK_78,?PBK_79,?PBK_7A,?PBK_7B,?PBK_7C,?PBK_7D,?PBK_7E,?PBK_7F
Data.i ?PBK_80,?PBK_81,?PBK_82,?PBK_83,?PBK_84,?PBK_85,?PBK_86,?PBK_87,?PBK_88,?PBK_89,?PBK_8A,?PBK_8B,?PBK_8C,?PBK_8D,?PBK_8E,?PBK_8F
Data.i ?PBK_90,?PBK_91,?PBK_92,?PBK_93,?PBK_94,?PBK_95,?PBK_96,?PBK_97,?PBK_98,?PBK_99,?PBK_9A,?PBK_9B,?PBK_9C,?PBK_9D,?PBK_9E,?PBK_9F
Data.i ?PBK_A0,?PBK_A1,?PBK_A2,?PBK_A3,?PBK_A4,?PBK_A5,?PBK_A6,?PBK_A7,?PBK_A8,?PBK_A9,?PBK_AA,?PBK_AB,?PBK_AC,?PBK_AD,?PBK_AE,?PBK_AF
Data.i ?PBK_B0,?PBK_B1,?PBK_B2,?PBK_B3,?PBK_B4,?PBK_B5,?PBK_B6,?PBK_B7,?PBK_B8,?PBK_B9,?PBK_BA,?PBK_BB,?PBK_BC,?PBK_BD,?PBK_BE,?PBK_BF
Data.i ?PBK_C0,?PBK_C1,?PBK_C2,?PBK_C3,?PBK_C4,?PBK_C5,?PBK_C6,?PBK_C7,?PBK_C8,?PBK_C9,?PBK_CA,?PBK_CB,?PBK_CC,?PBK_CD,?PBK_CE,?PBK_CF
Data.i ?PBK_D0,?PBK_D1,?PBK_D2,?PBK_D3,?PBK_D4,?PBK_D5,?PBK_D6,?PBK_D7,?PBK_D8,?PBK_D9,?PBK_DA,?PBK_DB,?PBK_DC,?PBK_DD,?PBK_DE,?PBK_DF
Data.i ?PBK_E0,?PBK_E1,?PBK_E2,?PBK_E3,?PBK_E4,?PBK_E5,?PBK_E6,?PBK_E7,?PBK_E8,?PBK_E9,?PBK_EA,?PBK_EB,?PBK_EC,?PBK_ED,?PBK_EE,?PBK_EF
Data.i ?PBK_F0,?PBK_F1,?PBK_F2,?PBK_F3,?PBK_F4,?PBK_F5,?PBK_F6,?PBK_F7,?PBK_F8,?PBK_F9,?PBK_FA,?PBK_FB,?PBK_FC,?PBK_FD,?PBK_FE,?PBK_FF
PBK_00: : Data.s "$00/0 (undefined)"
PBK_01: : Data.s "#PB_Key_Escape"
PBK_02: : Data.s "#PB_Key_1"
PBK_03: : Data.s "#PB_Key_2"
PBK_04: : Data.s "#PB_Key_3"
PBK_05: : Data.s "#PB_Key_4"
PBK_06: : Data.s "#PB_Key_5"
PBK_07: : Data.s "#PB_Key_6"
PBK_08: : Data.s "#PB_Key_7"
PBK_09: : Data.s "#PB_Key_8"
PBK_0A: : Data.s "#PB_Key_9"
PBK_0B: : Data.s "#PB_Key_0"
PBK_0C: : Data.s "#PB_Key_Minus"
PBK_0D: : Data.s "#PB_Key_Equals"
PBK_0E: : Data.s "#PB_Key_Back"
PBK_0F: : Data.s "#PB_Key_Tab"
PBK_10: : Data.s "#PB_Key_Q"
PBK_11: : Data.s "#PB_Key_W"
PBK_12: : Data.s "#PB_Key_E"
PBK_13: : Data.s "#PB_Key_R"
PBK_14: : Data.s "#PB_Key_T"
PBK_15: : Data.s "#PB_Key_Y"
PBK_16: : Data.s "#PB_Key_U"
PBK_17: : Data.s "#PB_Key_I"
PBK_18: : Data.s "#PB_Key_O"
PBK_19: : Data.s "#PB_Key_P"
PBK_1A: : Data.s "#PB_Key_LeftBracket"
PBK_1B: : Data.s "#PB_Key_RightBracket"
PBK_1C: : Data.s "#PB_Key_Return"
PBK_1D: : Data.s "#PB_Key_LeftControl"
PBK_1E: : Data.s "#PB_Key_A"
PBK_1F: : Data.s "#PB_Key_S"
PBK_20: : Data.s "#PB_Key_D"
PBK_21: : Data.s "#PB_Key_F"
PBK_22: : Data.s "#PB_Key_G"
PBK_23: : Data.s "#PB_Key_H"
PBK_24: : Data.s "#PB_Key_J"
PBK_25: : Data.s "#PB_Key_K"
PBK_26: : Data.s "#PB_Key_L"
PBK_27: : Data.s "#PB_Key_SemiColon"
PBK_28: : Data.s "#PB_Key_Apostrophe"
PBK_29: : Data.s "#PB_Key_Grave"
PBK_2A: : Data.s "#PB_Key_LeftShift"
PBK_2B: : Data.s "#PB_Key_BackSlash"
PBK_2C: : Data.s "#PB_Key_Z"
PBK_2D: : Data.s "#PB_Key_X"
PBK_2E: : Data.s "#PB_Key_C"
PBK_2F: : Data.s "#PB_Key_V"
PBK_30: : Data.s "#PB_Key_B"
PBK_31: : Data.s "#PB_Key_N"
PBK_32: : Data.s "#PB_Key_M"
PBK_33: : Data.s "#PB_Key_Comma"
PBK_34: : Data.s "#PB_Key_Period"
PBK_35: : Data.s "#PB_Key_Slash"
PBK_36: : Data.s "#PB_Key_RightShift"
PBK_37: : Data.s "#PB_Key_Multiply"
PBK_38: : Data.s "#PB_Key_LeftAlt"
PBK_39: : Data.s "#PB_Key_Space"
PBK_3A: : Data.s "#PB_Key_Capital"
PBK_3B: : Data.s "#PB_Key_F1"
PBK_3C: : Data.s "#PB_Key_F2"
PBK_3D: : Data.s "#PB_Key_F3"
PBK_3E: : Data.s "#PB_Key_F4"
PBK_3F: : Data.s "#PB_Key_F5"
PBK_40: : Data.s "#PB_Key_F6"
PBK_41: : Data.s "#PB_Key_F7"
PBK_42: : Data.s "#PB_Key_F8"
PBK_43: : Data.s "#PB_Key_F9"
PBK_44: : Data.s "#PB_Key_F10"
PBK_45: : Data.s "#PB_Key_NumLock"
PBK_46: : Data.s "#PB_Key_Scroll"
PBK_47: : Data.s "#PB_Key_Pad7"
PBK_48: : Data.s "#PB_Key_Pad8"
PBK_49: : Data.s "#PB_Key_Pad9"
PBK_4A: : Data.s "#PB_Key_Subtract"
PBK_4B: : Data.s "#PB_Key_Pad4"
PBK_4C: : Data.s "#PB_Key_Pad5"
PBK_4D: : Data.s "#PB_Key_Pad6"
PBK_4E: : Data.s "#PB_Key_Add"
PBK_4F: : Data.s "#PB_Key_Pad1"
PBK_50: : Data.s "#PB_Key_Pad2"
PBK_51: : Data.s "#PB_Key_Pad3"
PBK_52: : Data.s "#PB_Key_Pad0"
PBK_53: : Data.s "#PB_Key_Decimal"
PBK_54: : Data.s "$54/84 (undefined)"
PBK_55: : Data.s "$55/85 (undefined)"
PBK_56: : Data.s "$56/86 (undefined)"
PBK_57: : Data.s "#PB_Key_F11"
PBK_58: : Data.s "#PB_Key_F12"
PBK_59: : Data.s "$59/89 (undefined)"
PBK_5A: : Data.s "$5A/90 (undefined)"
PBK_5B: : Data.s "$5B/91 (undefined)"
PBK_5C: : Data.s "$5C/92 (undefined)"
PBK_5D: : Data.s "$5D/93 (undefined)"
PBK_5E: : Data.s "$5E/94 (undefined)"
PBK_5F: : Data.s "$5F/95 (undefined)"
PBK_60: : Data.s "$60/96 (undefined)"
PBK_61: : Data.s "$61/97 (undefined)"
PBK_62: : Data.s "$62/98 (undefined)"
PBK_63: : Data.s "$63/99 (undefined)"
PBK_64: : Data.s "$64/100 (undefined)"
PBK_65: : Data.s "$65/101 (undefined)"
PBK_66: : Data.s "$66/102 (undefined)"
PBK_67: : Data.s "$67/103 (undefined)"
PBK_68: : Data.s "$68/104 (undefined)"
PBK_69: : Data.s "$69/105 (undefined)"
PBK_6A: : Data.s "$6A/106 (undefined)"
PBK_6B: : Data.s "$6B/107 (undefined)"
PBK_6C: : Data.s "$6C/108 (undefined)"
PBK_6D: : Data.s "$6D/109 (undefined)"
PBK_6E: : Data.s "$6E/110 (undefined)"
PBK_6F: : Data.s "$6F/111 (undefined)"
PBK_70: : Data.s "$70/112 (undefined)"
PBK_71: : Data.s "$71/113 (undefined)"
PBK_72: : Data.s "$72/114 (undefined)"
PBK_73: : Data.s "$73/115 (undefined)"
PBK_74: : Data.s "$74/116 (undefined)"
PBK_75: : Data.s "$75/117 (undefined)"
PBK_76: : Data.s "$76/118 (undefined)"
PBK_77: : Data.s "$77/119 (undefined)"
PBK_78: : Data.s "$78/120 (undefined)"
PBK_79: : Data.s "$79/121 (undefined)"
PBK_7A: : Data.s "$7A/122 (undefined)"
PBK_7B: : Data.s "$7B/123 (undefined)"
PBK_7C: : Data.s "$7C/124 (undefined)"
PBK_7D: : Data.s "$7D/125 (undefined)"
PBK_7E: : Data.s "$7E/126 (undefined)"
PBK_7F: : Data.s "$7F/127 (undefined)"
PBK_80: : Data.s "$80/128 (undefined)"
PBK_81: : Data.s "$81/129 (undefined)"
PBK_82: : Data.s "$82/130 (undefined)"
PBK_83: : Data.s "$83/131 (undefined)"
PBK_84: : Data.s "$84/132 (undefined)"
PBK_85: : Data.s "$85/133 (undefined)"
PBK_86: : Data.s "$86/134 (undefined)"
PBK_87: : Data.s "$87/135 (undefined)"
PBK_88: : Data.s "$88/136 (undefined)"
PBK_89: : Data.s "$89/137 (undefined)"
PBK_8A: : Data.s "$8A/138 (undefined)"
PBK_8B: : Data.s "$8B/139 (undefined)"
PBK_8C: : Data.s "$8C/140 (undefined)"
PBK_8D: : Data.s "$8D/141 (undefined)"
PBK_8E: : Data.s "$8E/142 (undefined)"
PBK_8F: : Data.s "$8F/143 (undefined)"
PBK_90: : Data.s "$90/144 (undefined)"
PBK_91: : Data.s "$91/145 (undefined)"
PBK_92: : Data.s "$92/146 (undefined)"
PBK_93: : Data.s "$93/147 (undefined)"
PBK_94: : Data.s "$94/148 (undefined)"
PBK_95: : Data.s "$95/149 (undefined)"
PBK_96: : Data.s "$96/150 (undefined)"
PBK_97: : Data.s "$97/151 (undefined)"
PBK_98: : Data.s "$98/152 (undefined)"
PBK_99: : Data.s "$99/153 (undefined)"
PBK_9A: : Data.s "$9A/154 (undefined)"
PBK_9B: : Data.s "$9B/155 (undefined)"
PBK_9C: : Data.s "#PB_Key_PadEnter"
PBK_9D: : Data.s "#PB_Key_RightControl"
PBK_9E: : Data.s "$9E/158 (undefined)"
PBK_9F: : Data.s "$9F/159 (undefined)"
PBK_A0: : Data.s "$A0/160 (undefined)"
PBK_A1: : Data.s "$A1/161 (undefined)"
PBK_A2: : Data.s "$A2/162 (undefined)"
PBK_A3: : Data.s "$A3/163 (undefined)"
PBK_A4: : Data.s "$A4/164 (undefined)"
PBK_A5: : Data.s "$A5/165 (undefined)"
PBK_A6: : Data.s "$A6/166 (undefined)"
PBK_A7: : Data.s "$A7/167 (undefined)"
PBK_A8: : Data.s "$A8/168 (undefined)"
PBK_A9: : Data.s "$A9/169 (undefined)"
PBK_AA: : Data.s "$AA/170 (undefined)"
PBK_AB: : Data.s "$AB/171 (undefined)"
PBK_AC: : Data.s "$AC/172 (undefined)"
PBK_AD: : Data.s "$AD/173 (undefined)"
PBK_AE: : Data.s "$AE/174 (undefined)"
PBK_AF: : Data.s "$AF/175 (undefined)"
PBK_B0: : Data.s "$B0/176 (undefined)"
PBK_B1: : Data.s "$B1/177 (undefined)"
PBK_B2: : Data.s "$B2/178 (undefined)"
PBK_B3: : Data.s "#PB_Key_PadComma"
PBK_B4: : Data.s "$B4/180 (undefined)"
PBK_B5: : Data.s "#PB_Key_Divide"
PBK_B6: : Data.s "$B6/182 (undefined)"
PBK_B7: : Data.s "$B7/183 (undefined)"
PBK_B8: : Data.s "#PB_Key_RightAlt"
PBK_B9: : Data.s "$B9/185 (undefined)"
PBK_BA: : Data.s "$BA/186 (undefined)"
PBK_BB: : Data.s "$BB/187 (undefined)"
PBK_BC: : Data.s "$BC/188 (undefined)"
PBK_BD: : Data.s "$BD/189 (undefined)"
PBK_BE: : Data.s "$BE/190 (undefined)"
PBK_BF: : Data.s "$BF/191 (undefined)"
PBK_C0: : Data.s "$C0/192 (undefined)"
PBK_C1: : Data.s "$C1/193 (undefined)"
PBK_C2: : Data.s "$C2/194 (undefined)"
PBK_C3: : Data.s "$C3/195 (undefined)"
PBK_C4: : Data.s "$C4/196 (undefined)"
PBK_C5: : Data.s "#PB_Key_Pause"
PBK_C6: : Data.s "$C6/198 (undefined)"
PBK_C7: : Data.s "#PB_Key_Home"
PBK_C8: : Data.s "#PB_Key_Up"
PBK_C9: : Data.s "#PB_Key_PageUp"
PBK_CA: : Data.s "$CA/202 (undefined)"
PBK_CB: : Data.s "#PB_Key_Left"
PBK_CC: : Data.s "$CC/204 (undefined)"
PBK_CD: : Data.s "#PB_Key_Right"
PBK_CE: : Data.s "$CE/206 (undefined)"
PBK_CF: : Data.s "#PB_Key_End"
PBK_D0: : Data.s "#PB_Key_Down"
PBK_D1: : Data.s "#PB_Key_PageDown"
PBK_D2: : Data.s "#PB_Key_Insert"
PBK_D3: : Data.s "#PB_Key_Delete"
PBK_D4: : Data.s "$D4/212 (undefined)"
PBK_D5: : Data.s "$D5/213 (undefined)"
PBK_D6: : Data.s "$D6/214 (undefined)"
PBK_D7: : Data.s "$D7/215 (undefined)"
PBK_D8: : Data.s "$D8/216 (undefined)"
PBK_D9: : Data.s "$D9/217 (undefined)"
PBK_DA: : Data.s "$DA/218 (undefined)"
PBK_DB: : Data.s "$DB/219 (undefined)"
PBK_DC: : Data.s "$DC/220 (undefined)"
PBK_DD: : Data.s "$DD/221 (undefined)"
PBK_DE: : Data.s "$DE/222 (undefined)"
PBK_DF: : Data.s "$DF/223 (undefined)"
PBK_E0: : Data.s "$E0/224 (undefined)"
PBK_E1: : Data.s "$E1/225 (undefined)"
PBK_E2: : Data.s "$E2/226 (undefined)"
PBK_E3: : Data.s "$E3/227 (undefined)"
PBK_E4: : Data.s "$E4/228 (undefined)"
PBK_E5: : Data.s "$E5/229 (undefined)"
PBK_E6: : Data.s "$E6/230 (undefined)"
PBK_E7: : Data.s "$E7/231 (undefined)"
PBK_E8: : Data.s "$E8/232 (undefined)"
PBK_E9: : Data.s "$E9/233 (undefined)"
PBK_EA: : Data.s "$EA/234 (undefined)"
PBK_EB: : Data.s "$EB/235 (undefined)"
PBK_EC: : Data.s "$EC/236 (undefined)"
PBK_ED: : Data.s "$ED/237 (undefined)"
PBK_EE: : Data.s "$EE/238 (undefined)"
PBK_EF: : Data.s "$EF/239 (undefined)"
PBK_F0: : Data.s "$F0/240 (undefined)"
PBK_F1: : Data.s "$F1/241 (undefined)"
PBK_F2: : Data.s "$F2/242 (undefined)"
PBK_F3: : Data.s "$F3/243 (undefined)"
PBK_F4: : Data.s "$F4/244 (undefined)"
PBK_F5: : Data.s "$F5/245 (undefined)"
PBK_F6: : Data.s "$F6/246 (undefined)"
PBK_F7: : Data.s "$F7/247 (undefined)"
PBK_F8: : Data.s "$F8/248 (undefined)"
PBK_F9: : Data.s "$F9/249 (undefined)"
PBK_FA: : Data.s "$FA/250 (undefined)"
PBK_FB: : Data.s "$FB/251 (undefined)"
PBK_FC: : Data.s "$FC/252 (undefined)"
PBK_FD: : Data.s "$FD/253 (undefined)"
PBK_FE: : Data.s "$FE/254 (undefined)"
PBK_FF: : Data.s "#PB_Key_All"
EndDataSection
EndProcedure
If OpenWindow( 0 , #PB_Ignore , #PB_Ignore , 320 , 70 , "KeyConstInfo" ) = #False
MessageRequester( "Fehler" , "OpenWindow() fehlgeschlagen." + #CRLF$ + "KeyConstInfo wird nun beendet..." ) : End
EndIf
If InitSprite() = #False
MessageRequester( "Fehler" , "InitSprite() fehlgeschlagen." + #CRLF$ + "KeyConstInfo wird nun beendet..." ) : End
EndIf
If OpenWindowedScreen( WindowID(0) , 0 , 0 , WindowWidth(0) , WindowHeight(0) ) = #False
MessageRequester( "Fehler" , "OpenWindowedScreen() fehlgeschlagen." + #CRLF$ + "KeyConstInfo wird nun beendet..." ) : End
EndIf
If InitKeyboard() = #False
MessageRequester( "Fehler" , "InitKeyboard() fehlgeschlagen." + #CRLF$ + "KeyConstInfo wird nun beendet..." ) : End
EndIf
Repeat
Define i
ExamineKeyboard()
Define PBKey$ = "[ kein Tastendruck ]"
For i = 0 To $FF
If KeyboardPushed( i )
Define PBKey$ = GetPBKeyConstant( i )
Break
EndIf
Next
Define VKey$ = "[ kein Tastendruck ]"
For i = 0 To $FF
If GetAsyncKeyState_( i ) & $8000
Define VKey$ = GetVirtualKeyConstant( i )
Break
EndIf
Next
ClearScreen( 0 )
If StartDrawing( ScreenOutput() )
DrawText( 10 , 10 , "PureBasic-Key:" , $FFFFFF , 0 )
DrawText( 150 , 10 , PBKey$ , $FFFFFF , 0 )
DrawText( 10 , 30 , "Virutal-Key:" , $FFFFFF , 0 )
DrawText( 150 , 30 , VKey$ , $FFFFFF , 0 )
StopDrawing()
EndIf
FlipBuffers()
Until WaitWindowEvent() = #PB_Event_CloseWindow