Tastaturtreiber-Bug?! (Windows)
Verfasst: 17.01.2015 14:01
Hi liebe Leute,
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):
Wie immer vielen Dank im Voraus!
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