 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Weazle25
Anmeldungsdatum: 04.11.2007 Beiträge: 18 Wohnort: Stralsund (Mecklenburg-Vorpommern)
|
Verfasst am: 12.11.2007, 17:06 Titel: inc_KeyBoard.bi - Keystates ermitteln |
|
|
Diese Lib entstand nach dem BlitzBasic-Tutorial Dinge mit Maus im Prog verschieben (Fenster, Bilder, ...)
Ich habe dann daraus ein paar Functionen gebastelt und es jetzt auch nach FB konvertiert.
Dabei sind mir folgende Probleme aufgefallen:
1. FB verwendet teilweise andere Scancodes als BlitzBasic
2. Auf meinem (schon etwas betagtem) PC erhalte ich bei den Tasten [-] (Bindestrich) und [NUM /] identische Scancodes.
3. (6er Block | Pfeil-Tasten) und die zugehörigen Tasten des Nummernblocks liefern ebenfalls identische Scancodes.
4. Weder mein PC noch mein Laptop besitzen Media-Tasten so das diese und einige andere Tasten ausgenullt werden mussten.
Ich möchte daher die Community bitten die Scancode-Konstanten zu überprüfen und zu korrigieren.
In der Lib ist zu diesem Zweck bereits ein Test-Programm enthalten.
( einfach in der letzten Zeile das Kommentar-Zeichen entfernen und kompilieren.)
Code: |
'Die Zustände der Tasten
Const KB_Normal = 0
Const KB_Hit = 1
Const KB_Down = 2
Const KB_Up = 3
'Zahlen
Const KB_Key_0 = 11
Const KB_Key_1 = 2
Const KB_Key_2 = 3
Const KB_Key_3 = 4
Const KB_Key_4 = 5
Const KB_Key_5 = 6
Const KB_Key_6 = 7
Const KB_Key_7 = 8
Const KB_Key_8 = 9
Const KB_Key_9 = 10
'Buchstaben
Const KB_Key_A = 30
Const KB_Key_B = 48
Const KB_Key_C = 46
Const KB_Key_D = 32
Const KB_Key_E = 18
Const KB_Key_F = 33
Const KB_Key_G = 34
Const KB_Key_H = 35
Const KB_Key_I = 23
Const KB_Key_J = 36
Const KB_Key_K = 37
Const KB_Key_L = 38
Const KB_Key_M = 50
Const KB_Key_N = 49
Const KB_Key_O = 24
Const KB_Key_P = 25
Const KB_Key_Q = 16
Const KB_Key_R = 19
Const KB_Key_S = 31
Const KB_Key_T = 20
Const KB_Key_U = 22
Const KB_Key_V = 47
Const KB_Key_W = 17
Const KB_Key_X = 45
Const KB_Key_Y = 44
Const KB_Key_Z = 21
Const KB_Key_AE = 40 ' Ä
Const KB_Key_OE = 39 ' Ö
Const KB_Key_UE = 26 ' Ü
Const KB_Key_SZ = 12 ' ß
'Funktionstasten
Const KB_Key_F1 = 59
Const KB_Key_F2 = 60
Const KB_Key_F3 = 61
Const KB_Key_F4 = 62
Const KB_Key_F5 = 63
Const KB_Key_F6 = 64
Const KB_Key_F7 = 65
Const KB_Key_F8 = 66
Const KB_Key_F9 = 67
Const KB_Key_F10 = 68
Const KB_Key_F11 = 87
Const KB_Key_F12 = 88
'Zahlenblock
Const KB_Key_Num0 = 82
Const KB_Key_Num1 = 79
Const KB_Key_Num2 = 80
Const KB_Key_Num3 = 81
Const KB_Key_Num4 = 75
Const KB_Key_Num5 = 76
Const KB_Key_Num6 = 77
Const KB_Key_Num7 = 71
Const KB_Key_Num8 = 72
Const KB_Key_Num9 = 73
Const KB_Key_NumDiv = 53
Const KB_Key_NumMulti = 55
Const KB_Key_NumSub = 74
Const KB_Key_NumAdd = 78
Const KB_Key_NumKomma = 83
Const KB_Key_NumReturn = 28
Const KB_Key_NumNumlock = 69
'Cursorblock
Const KB_Key_ArrowUp = 72
Const KB_Key_ArrowDown = 80
Const KB_Key_ArrowLeft = 75
Const KB_Key_ArrowRight = 77
'6er Block
Const KB_Key_Insert = 82
Const KB_Key_Delete = 83
Const KB_Key_Pos1 = 71
Const KB_Key_End = 79
Const KB_Key_PageUp = 73
Const KB_Key_PageDown = 81
'Steuertasten
Const KB_Key_ESC = 1
Const KB_Key_Return = 28
Const KB_Key_Space = 57
Const KB_Key_Backspace = 14
Const KB_Key_Tabulator = 15
Const KB_Key_Roll = 70
Const KB_Key_LShift = 42
Const KB_Key_LCTRL = 29
Const KB_Key_LAlt = 56
Const KB_Key_RShift = 54
Const KB_Key_RCTRL = 29
Const KB_Key_RAlt = 56
Const KB_Key_CapsLock = 58
Const KB_Key_NumLock = 69
Const KB_Key_Print = 55
Const KB_Key_Break = 0
'Sonderzeichen
Const KB_Key_Apostroph = 13 ' ´ und `
Const KB_Key_Arrow = 86 ' < und > und |
Const KB_Key_Komma = 51 ' , und ;
Const KB_Key_Dot = 52 ' . und :
Const KB_Key_Line = 53 ' - und _
Const KB_Key_Rhomb = 43 ' # und '
Const KB_Key_Angle = 41 ' ^ und °
Const KB_Key_Add = 27 ' + und * und ~
'Windowstasten
Const KB_Key_LWin = 91
Const KB_Key_RWin = 92
Const KB_Key_Calculator = 0
Const KB_Key_Menu = 93
Const KB_Key_Computer = 0
Const KB_Key_Media = 0
'Multimediatasten
Const KB_Key_MediaPlay = 0
Const KB_Key_MediaStop = 0
Const KB_Key_MediaNext = 0
Const KB_Key_MediaMute = 0
Const KB_Key_MediaVolRemove = 0
Const KB_Key_MediaVolAdd = 0
'Internettasten
Const KB_Key_NetHome = 0
Const KB_Key_NetSearch = 0
Const KB_Key_NetFavourite = 0
Const KB_Key_NetUpdate = 0
Const KB_Key_NetStop = 0
Const KB_Key_NetNext = 0
Const KB_Key_NetBack = 0
Const KB_Key_NetEMail = 0
'Systemtasten
Const KB_Key_Power = 0
Const KB_Key_Sleep = 0
Const KB_Key_Wake = 0
'Tastengruppen
Const KB_UnbekannteTaste = -1
Const KB_Zahl = 0
Const KB_Buchstabe = 1
Const KB_Functionstaste = 2
Const KB_Zahlenblock = 3
Const KB_Cursorblock = 4
Const KB_6erBlock = 5
Const KB_Steuertaste = 6
Const KB_Sonderzeichen = 7
Const KB_Windowstaste = 8
Const KB_Multimediataste = 9
Const KB_Internettaste = 10
Const KB_Systemtaste = 11
Dim Shared As byte KB_Key( 0 To 255 )
'=========================================================================
Function KB_GetKeyType( ByVal Taste As ubyte ) As Byte
Select Case Taste
'Zahlen
Case KB_Key_0, KB_Key_1, KB_Key_2, KB_Key_3, KB_Key_4, KB_Key_5, KB_Key_6, KB_Key_7, KB_Key_8, KB_Key_9
Return KB_Zahl
'Buchstaben
Case KB_Key_A, KB_Key_B, KB_Key_C, KB_Key_D, KB_Key_E, KB_Key_F, KB_Key_G, KB_Key_H, KB_Key_I, KB_Key_J, KB_Key_K, KB_Key_L, KB_Key_M, KB_Key_N, KB_Key_O, KB_Key_P, KB_Key_Q, KB_Key_R, KB_Key_S, KB_Key_T, KB_Key_U, KB_Key_V, KB_Key_W, KB_Key_X, KB_Key_Y, KB_Key_Z, KB_Key_AE, KB_Key_OE, KB_Key_UE, KB_Key_SZ
Return KB_Buchstabe
'Funktionstasten
Case KB_Key_F1, KB_Key_F2, KB_Key_F3, KB_Key_F4, KB_Key_F5, KB_Key_F6, KB_Key_F7, KB_Key_F8, KB_Key_F9, KB_Key_F10, KB_Key_F11, KB_Key_F12
Return KB_Functionstaste
'Zahlenblock
Case KB_Key_Num0, KB_Key_Num1, KB_Key_Num2, KB_Key_Num3, KB_Key_Num4, KB_Key_Num5, KB_Key_Num6, KB_Key_Num7, KB_Key_Num8, KB_Key_Num9, KB_Key_NumDiv, KB_Key_NumMulti, KB_Key_NumSub, KB_Key_NumAdd, KB_Key_NumKomma, KB_Key_NumReturn, KB_Key_NumNumlock
Return KB_Zahlenblock
'Cursorblock
Case KB_Key_ArrowUp, KB_Key_ArrowDown, KB_Key_ArrowLeft, KB_Key_ArrowRight
Return KB_Cursorblock
'6er Block
Case KB_Key_Insert, KB_Key_Delete, KB_Key_Pos1, KB_Key_End, KB_Key_PageUp, KB_Key_PageDown
Return KB_6erBlock
'Steuertasten
Case KB_Key_ESC, KB_Key_Return, KB_Key_Space, KB_Key_Backspace, KB_Key_Tabulator, KB_Key_Roll, KB_Key_LShift, KB_Key_LCTRL, KB_Key_LAlt, KB_Key_RShift, KB_Key_RCTRL, KB_Key_RAlt, KB_Key_CapsLock, KB_Key_NumLock, KB_Key_Print, KB_Key_Break
Return KB_Steuertaste
'Sonderzeichen
Case KB_Key_Arrow, KB_Key_Komma, KB_Key_Dot, KB_Key_Line, KB_Key_Rhomb, KB_Key_Angle, KB_Key_Add
Return KB_Sonderzeichen
'Windowstasten
Case KB_Key_LWin, KB_Key_RWin, KB_Key_Calculator, KB_Key_Menu, KB_Key_Computer, KB_Key_Media
Return KB_Windowstaste
'Multimediatasten
Case KB_Key_MediaPlay, KB_Key_MediaStop, KB_Key_MediaNext, KB_Key_MediaMute, KB_Key_MediaVolRemove, KB_Key_MediaVolAdd
Return KB_Multimediataste
'Internettasten
Case KB_Key_NetHome, KB_Key_NetSearch, KB_Key_NetFavourite, KB_Key_NetUpdate, KB_Key_NetStop, KB_Key_NetNext, KB_Key_NetBack, KB_Key_NetEMail
Return KB_Internettaste
'Systemtasten
Case KB_Key_Power, KB_Key_Sleep, KB_Key_Wake
Return KB_Systemtaste
'unbekannte Taste
Case Else
Return KB_UnbekannteTaste
End Select
End Function
Function KB_GetKeyTypString( ByVal Taste As UByte ) As String
Select Case KB_GetKeyType( Taste )
Case KB_UnbekannteTaste
Return "Unbekannte Taste"
Case KB_Zahl
Return "Zahl"
Case KB_Buchstabe
Return "Buchstabe"
Case KB_Functionstaste
Return "Functionstaste"
Case KB_Zahlenblock
Return "Zahlenblock"
Case KB_Cursorblock
Return "Cursorblock"
Case KB_6erBlock
Return "6er Block"
Case KB_Steuertaste
Return "Steuertaste"
Case KB_Sonderzeichen
Return "Sonderzeichen"
Case KB_Windowstaste
Return "Windowstaste"
Case KB_Multimediataste
Return "Multimediataste"
Case KB_Internettaste
Return "Internettaste"
Case KB_Systemtaste
Return "Systemtaste"
End Select
End Function
'=========================================================================
Function KB_GetKeyName( ByVal Taste As ubyte ) As string
Select Case Taste
'Zahlen
Case KB_Key_0
Return "0 = }"
Case KB_Key_1
Return "1 !"
Case KB_Key_2
Return "2 " & Chr(34) & " ²"
Case KB_Key_3
Return "3 § ³"
Case KB_Key_4
Return "4 $"
Case KB_Key_5
Return "5 %"
Case KB_Key_6
Return "6 &"
Case KB_Key_7
Return "7 / {"
Case KB_Key_8
Return "8 ( ["
Case KB_Key_9
Return "9 ) ]"
'Buchstaben
Case KB_Key_A
Return "A"
Case KB_Key_B
Return "B"
Case KB_Key_C
Return "C"
Case KB_Key_D
Return "D"
Case KB_Key_E
Return "E €"
Case KB_Key_F
Return "F"
Case KB_Key_G
Return "G"
Case KB_Key_H
Return "H"
Case KB_Key_I
Return "I"
Case KB_Key_J
Return "J"
Case KB_Key_K
Return "K"
Case KB_Key_L
Return "L"
Case KB_Key_M
Return "M µ"
Case KB_Key_N
Return "N"
Case KB_Key_O
Return "O"
Case KB_Key_P
Return "P"
Case KB_Key_Q
Return "Q @"
Case KB_Key_R
Return "R"
Case KB_Key_S
Return "S"
Case KB_Key_T
Return "T"
Case KB_Key_U
Return "U"
Case KB_Key_V
Return "V"
Case KB_Key_W
Return "W"
Case KB_Key_X
Return "X"
Case KB_Key_Y
Return "Y"
Case KB_Key_Z
Return "Z"
Case KB_Key_AE
Return "Ä (AE)"
Case KB_Key_OE
Return "Ö (OE)"
Case KB_Key_UE
Return "Ü (UE)"
Case KB_Key_SZ
Return "ß (SZ) ? \"
'Funktionstasten
Case KB_Key_F1
Return "F1"
Case KB_Key_F2
Return "F2"
Case KB_Key_F3
Return "F3"
Case KB_Key_F4
Return "F4"
Case KB_Key_F5
Return "F5"
Case KB_Key_F6
Return "F6"
Case KB_Key_F7
Return "F7"
Case KB_Key_F8
Return "F8"
Case KB_Key_F9
Return "F9"
Case KB_Key_F10
Return "F10"
Case KB_Key_F11
Return "F11"
Case KB_Key_F12
Return "F12"
'Zahlenblock
Case KB_Key_Num0
Return "NUM 0"
Case KB_Key_Num1
Return "NUM 1"
Case KB_Key_Num2
Return "NUM 2"
Case KB_Key_Num3
Return "NUM 3"
Case KB_Key_Num4
Return "NUM 4"
Case KB_Key_Num5
Return "NUM 5"
Case KB_Key_Num6
Return "NUM 6"
Case KB_Key_Num7
Return "NUM 7"
Case KB_Key_Num8
Return "NUM 8"
Case KB_Key_Num9
Return "NUM 9"
Case KB_Key_NumDiv
Return "NUM /"
Case KB_Key_NumMulti
Return "NUM *"
Case KB_Key_NumSub
Return "NUM -"
Case KB_Key_NumAdd
Return "NUM +"
Case KB_Key_NumKomma
Return "NUM ,"
Case KB_Key_NumReturn
Return "NUM Enter"
Case KB_Key_NumNumlock
Return "NUM"
'Cursorblock
Case KB_Key_ArrowUp
Return "Pfeil rauf"
Case KB_Key_ArrowDown
Return "Pfeil runter"
Case KB_Key_ArrowLeft
Return "Pfeil links"
Case KB_Key_ArrowRight
Return "Pfeil rechts"
'6er Block
Case KB_Key_Insert
Return "Einfügen"
Case KB_Key_Delete
Return "Entfernen"
Case KB_Key_Pos1
Return "Pos1"
Case KB_Key_End
Return "Ende"
Case KB_Key_PageUp
Return "Bild rauf"
Case KB_Key_PageDown
Return "Bild runter"
'Steuertasten
Case KB_Key_ESC
Return "ESC"
Case KB_Key_Return
Return "Enter"
Case KB_Key_Space
Return "Leertaste"
Case KB_Key_Backspace
Return "Rückgängig"
Case KB_Key_Tabulator
Return "Tabulator"
Case KB_Key_Roll
Return "Rollen"
Case KB_Key_LShift
Return "Linke Umschalt."
Case KB_Key_LCTRL
Return "Linke Strg"
Case KB_Key_LAlt
Return "Linke Alt"
Case KB_Key_RShift
Return "Rechte Umschalt"
Case KB_Key_RCTRL
Return "Rechte Strg"
Case KB_Key_RAlt
Return "Rechte Alt"
Case KB_Key_CapsLock
Return "Feststellt."
Case KB_Key_NumLock
Return "NUM"
Case KB_Key_Print
Return "Drucken"
Case KB_Key_Break
Return "Pause"
'Sonderzeichen
Case KB_Key_Arrow
Return "< > |"
Case KB_Key_Komma
Return ", ;"
Case KB_Key_Dot
Return ". :"
Case KB_Key_Line
Return "- _"
Case KB_Key_Rhomb
Return "# '"
Case KB_Key_Angle
Return "^ °"
Case KB_Key_Add
Return "+ * ~"
'Windowstasten
Case KB_Key_LWin
Return "Linke Windowst."
Case KB_Key_RWin
Return "Rechte Windowst."
Case KB_Key_Calculator
Return "Taschenrechner"
Case KB_Key_Menu
Return "Menü"
Case KB_Key_Computer
Return "Computer"
Case KB_Key_Media
Return "Media"
'Multimediatasten
Case KB_Key_MediaPlay
Return "Abspielen"
Case KB_Key_MediaStop
Return "Stop"
Case KB_Key_MediaNext
Return "Nächster Titel"
Case KB_Key_MediaMute
Return "Stumm"
Case KB_Key_MediaVolRemove
Return "Lauter"
Case KB_Key_MediaVolAdd
Return "Leiser"
'Internettasten
Case KB_Key_NetHome
Return "Home"
Case KB_Key_NetSearch
Return "Suche"
Case KB_Key_NetFavourite
Return "Favouriten"
Case KB_Key_NetUpdate
Return "Aktualisieren"
Case KB_Key_NetStop
Return "Stop"
Case KB_Key_NetNext
Return "Vorwärts"
Case KB_Key_NetBack
Return "Zurück"
Case KB_Key_NetEMail
Return "E-Mail"
'Systemtasten
Case KB_Key_Power
Return "Power"
Case KB_Key_Sleep
Return "Sleep"
Case KB_Key_Wake
Return "Wake"
'unbekannte Taste
Case else
Return "Unbekannte Taste"
End Select
End Function
'=========================================================================
Function KB_KeyUpdate() As UByte
For i As UShort = 0 To 255
If KB_Key(i) = KB_Normal Then
'Von NORMAL zu HIT wechseln, wenn man anfängt zu drücken
If MULTIKEY( i ) Then KB_Key(i) = KB_Hit
ElseIf KB_Key(i) = KB_Hit Then
'Von HIT zu DOWN wechseln, wenn man gedrückt hält.
'Von HIT zu UP wechseln, wenn man loslässt/gelassen hat.
If MULTIKEY( i ) Then KB_Key(i) = KB_Down Else KB_Key(i) = KB_Up
ElseIf KB_Key(i) = KB_Down Then
'Von DOWN zu UP wechseln, wenn man loslässt. Sonst belassen.
If Not MULTIKEY( i ) Then KB_Key(i) = KB_Up
ElseIf KB_Key(i) = KB_Up Then
'Von UP zu HIT wechseln, wenn man anfängt zu drücken
'Von UP zu NORMAL wechseln wenn dauerhaft losgelassen
If MULTIKEY( i ) Then KB_Key(i) = KB_Hit Else KB_Key(i) = KB_Normal
EndIf
Next
Return 1
End Function
'=========================================================================
Function KB_KeyNormal( ByVal Taste As ubyte ) As UByte
If KB_Key(Taste) = KB_Normal Then Return 1 Else Return 0
End Function
'=========================================================================
Function KB_KeyHit( ByVal Taste As ubyte ) As UByte
If KB_Key(Taste) = KB_Hit Then Return 1 Else Return 0
End Function
'=========================================================================
Function KB_KeyDown( ByVal Taste As ubyte ) As UByte
If KB_Key(Taste) = KB_Down Then Return 1 Else Return 0
End Function
'=========================================================================
Function KB_KeyUp( ByVal Taste As ubyte ) As UByte
If KB_Key(Taste) = KB_Up Then Return 1 Else Return 0
End Function
'=========================================================================
Sub KB_Test()
Screen 19, 8, 2
Do
KB_KeyUpdate()
cls
? "Drücken sie eine beliebige Taste (ESC zum Beenden)."
For X As UShort = 0 To 255
If KB_KeyDown( X ) = 1 Then
? "ID: " & Str( X )
? "Name: " & KB_GetKeyName( X )
? "Gruppe: " & KB_GetKeyTypString( X )
EndIf
Next
Flip
Sleep 50, 1
Loop Until KB_KeyDown( KB_Key_ESC ) = 1
End Sub
'KB_Test()
|
Gruss
Weazle
Zuletzt bearbeitet von Weazle25 am 14.11.2007, 05:13, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 12.11.2007, 17:59 Titel: |
|
|
Statusbericht meines Laptops
Folgende Tasten liefern bei mir die ID 0:
ß bzw. ?
Apostrophe
Umlaute (ä, ö, ü)
Sonderzeichen +, #, <
AltGr
- bzw _ liefert ID 12: ß bzw. ?
z und y sind vertauscht (ich verwende eine deutche Tastatur )
Der Rest hat, soweit ich das sehe, funktioniert. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 12.11.2007, 19:01 Titel: |
|
|
Bei mir wurde alles korreckt erkannt bis auf eine ausnahme:
Alt Gr wird als wird als linke Alt Alt erkannt.
Dazu kommt noch das die Paustaste gar nicht angezeigt wird, aber das ist ja normal
Die sache mit - / kann ich nur bestätigen.. (ID = 53)
Die beiden übeltäter:
Code: | CONST KB_Key_Line = 53 ' - und _
'...
CONST KB_Key_NumDiv = 53
|
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Weazle25
Anmeldungsdatum: 04.11.2007 Beiträge: 18 Wohnort: Stralsund (Mecklenburg-Vorpommern)
|
Verfasst am: 13.11.2007, 16:13 Titel: |
|
|
AndT hat Folgendes geschrieben: | Bei mir wurde alles korreckt erkannt bis auf eine ausnahme:
Alt Gr wird als wird als linke Alt Alt erkannt.
Dazu kommt noch das die Paustaste gar nicht angezeigt wird, aber das ist ja normal
Die sache mit - / kann ich nur bestätigen.. (ID = 53)
|
Ja das mit der AltGr-Taste habe ich auch (hab ich wohl vergessen zu erwähnen).
Scheint wohl als wäre MultiKey() etwas buggy.
AndT hat Folgendes geschrieben: |
Die beiden übeltäter:
Code: | CONST KB_Key_Line = 53 ' - und _
'...
CONST KB_Key_NumDiv = 53
|
|
Daran liegt es devinitiev nicht denn die Funktionen "KB_KeyUpdate(), KB_KeyNormal(), KB_KeyHit(), KB_KeyDown() und KB_KeyUp()" benutzen nur die Konstanten KB_Normal, KB_Hit, KB_Down und KB_Up.
An doppelten Key-Konstanten kann es also nicht liegen.
Seltsam ist an dieser Stelle auch das gerade die Tasten die hier so viele Probleme bereiten in der fbgfx.bi gar nicht erst definiert wurden.
Gruss
Weazle |
|
Nach oben |
|
 |
Weazle25
Anmeldungsdatum: 04.11.2007 Beiträge: 18 Wohnort: Stralsund (Mecklenburg-Vorpommern)
|
Verfasst am: 26.02.2009, 04:02 Titel: |
|
|
Nach langer FB-Abstinenz mal wieder ein Update:
Die Lib hab ich komplett neu geschrieben.
Hier der Code:
(z.Z. nur für Windows - Umsetzung auf Linux ist aber geplant)
Teil 1
Code: |
'Tastengruppen
Const As Byte KBD_UnbekannteTaste = -1
Const As Byte KBD_NichtBelegt = 0
Const As Byte KBD_Zahl = 1
Const As Byte KBD_Buchstabe = 2
Const As Byte KBD_Functionstaste = 3
Const As Byte KBD_Zahlenblock = 4
Const As Byte KBD_Cursorblock = 5
Const As Byte KBD_6erBlock = 6
Const As Byte KBD_Steuertaste = 7
Const As Byte KBD_Sonderzeichen = 8
Const As Byte KBD_Windowstaste = 9
Const As Byte KBD_Multimediataste = 10
Const As Byte KBD_Internettaste = 11
Const As Byte KBD_Systemtaste = 12
Const As Byte KBD_Maustaste = 13
'Die Zustände der Tasten
Const As UByte KBD_State_Normal = 0
Const As UByte KBD_State_Hit = 1
Const As UByte KBD_State_Down = 2
Const As UByte KBD_State_Up = 3
Dim Shared As Byte KBD_Keys( 0 To 255, 0 To 1 )
Dim Shared As String KBD_Names( 0 To 255 )
'==============================================================================================================================================================
'Zahlen
'==============================================================================================================================================================
Const As UByte KBD_0 = &h30 : KBD_Keys( KBD_0 , 1 ) = KBD_Zahl : KBD_Names( KBD_0 ) = "KBD_0"
Const As UByte KBD_1 = &h31 : KBD_Keys( KBD_1 , 1 ) = KBD_Zahl : KBD_Names( KBD_1 ) = "KBD_1"
Const As UByte KBD_2 = &h32 : KBD_Keys( KBD_2 , 1 ) = KBD_Zahl : KBD_Names( KBD_2 ) = "KBD_2"
Const As UByte KBD_3 = &h33 : KBD_Keys( KBD_3 , 1 ) = KBD_Zahl : KBD_Names( KBD_3 ) = "KBD_3"
Const As UByte KBD_4 = &h34 : KBD_Keys( KBD_4 , 1 ) = KBD_Zahl : KBD_Names( KBD_4 ) = "KBD_4"
Const As UByte KBD_5 = &h35 : KBD_Keys( KBD_5 , 1 ) = KBD_Zahl : KBD_Names( KBD_5 ) = "KBD_5"
Const As UByte KBD_6 = &h36 : KBD_Keys( KBD_6 , 1 ) = KBD_Zahl : KBD_Names( KBD_6 ) = "KBD_6"
Const As UByte KBD_7 = &h37 : KBD_Keys( KBD_7 , 1 ) = KBD_Zahl : KBD_Names( KBD_7 ) = "KBD_7"
Const As UByte KBD_8 = &h38 : KBD_Keys( KBD_8 , 1 ) = KBD_Zahl : KBD_Names( KBD_8 ) = "KBD_8"
Const As UByte KBD_9 = &h39 : KBD_Keys( KBD_9 , 1 ) = KBD_Zahl : KBD_Names( KBD_9 ) = "KBD_9"
'==============================================================================================================================================================
'Buchstaben
'==============================================================================================================================================================
Const As UByte KBD_A = &h41 : KBD_Keys( KBD_A , 1 ) = KBD_Buchstabe : KBD_Names( KBD_A ) = "KBD_A"
Const As UByte KBD_B = &h42 : KBD_Keys( KBD_B , 1 ) = KBD_Buchstabe : KBD_Names( KBD_B ) = "KBD_B"
Const As UByte KBD_C = &h43 : KBD_Keys( KBD_C , 1 ) = KBD_Buchstabe : KBD_Names( KBD_C ) = "KBD_C"
Const As UByte KBD_D = &h44 : KBD_Keys( KBD_D , 1 ) = KBD_Buchstabe : KBD_Names( KBD_D ) = "KBD_D"
Const As UByte KBD_E = &h45 : KBD_Keys( KBD_E , 1 ) = KBD_Buchstabe : KBD_Names( KBD_E ) = "KBD_E"
Const As UByte KBD_F = &h46 : KBD_Keys( KBD_F , 1 ) = KBD_Buchstabe : KBD_Names( KBD_F ) = "KBD_F"
Const As UByte KBD_G = &h47 : KBD_Keys( KBD_G , 1 ) = KBD_Buchstabe : KBD_Names( KBD_G ) = "KBD_G"
Const As UByte KBD_H = &h48 : KBD_Keys( KBD_H , 1 ) = KBD_Buchstabe : KBD_Names( KBD_H ) = "KBD_H"
Const As UByte KBD_I = &h49 : KBD_Keys( KBD_I , 1 ) = KBD_Buchstabe : KBD_Names( KBD_I ) = "KBD_I"
Const As UByte KBD_J = &h4A : KBD_Keys( KBD_J , 1 ) = KBD_Buchstabe : KBD_Names( KBD_J ) = "KBD_J"
Const As UByte KBD_K = &h4B : KBD_Keys( KBD_K , 1 ) = KBD_Buchstabe : KBD_Names( KBD_K ) = "KBD_K"
Const As UByte KBD_L = &h4C : KBD_Keys( KBD_L , 1 ) = KBD_Buchstabe : KBD_Names( KBD_L ) = "KBD_L"
Const As UByte KBD_M = &h4D : KBD_Keys( KBD_M , 1 ) = KBD_Buchstabe : KBD_Names( KBD_M ) = "KBD_M"
Const As UByte KBD_N = &h4E : KBD_Keys( KBD_N , 1 ) = KBD_Buchstabe : KBD_Names( KBD_N ) = "KBD_N"
Const As UByte KBD_O = &h4F : KBD_Keys( KBD_O , 1 ) = KBD_Buchstabe : KBD_Names( KBD_O ) = "KBD_O"
Const As UByte KBD_P = &h50 : KBD_Keys( KBD_P , 1 ) = KBD_Buchstabe : KBD_Names( KBD_P ) = "KBD_P"
Const As UByte KBD_Q = &h51 : KBD_Keys( KBD_Q , 1 ) = KBD_Buchstabe : KBD_Names( KBD_Q ) = "KBD_Q"
Const As UByte KBD_R = &h52 : KBD_Keys( KBD_R , 1 ) = KBD_Buchstabe : KBD_Names( KBD_R ) = "KBD_R"
Const As UByte KBD_S = &h53 : KBD_Keys( KBD_S , 1 ) = KBD_Buchstabe : KBD_Names( KBD_S ) = "KBD_S"
Const As UByte KBD_T = &h54 : KBD_Keys( KBD_T , 1 ) = KBD_Buchstabe : KBD_Names( KBD_T ) = "KBD_T"
Const As UByte KBD_U = &h55 : KBD_Keys( KBD_U , 1 ) = KBD_Buchstabe : KBD_Names( KBD_U ) = "KBD_U"
Const As UByte KBD_V = &h56 : KBD_Keys( KBD_V , 1 ) = KBD_Buchstabe : KBD_Names( KBD_V ) = "KBD_V"
Const As UByte KBD_W = &h57 : KBD_Keys( KBD_W , 1 ) = KBD_Buchstabe : KBD_Names( KBD_W ) = "KBD_W"
Const As UByte KBD_X = &h58 : KBD_Keys( KBD_X , 1 ) = KBD_Buchstabe : KBD_Names( KBD_X ) = "KBD_X"
Const As UByte KBD_Y = &h59 : KBD_Keys( KBD_Y , 1 ) = KBD_Buchstabe : KBD_Names( KBD_Y ) = "KBD_Y"
Const As UByte KBD_Z = &h5A : KBD_Keys( KBD_Z , 1 ) = KBD_Buchstabe : KBD_Names( KBD_Z ) = "KBD_Z"
Const As UByte KBD_UE = &hBA : KBD_Keys( KBD_UE , 1 ) = KBD_Buchstabe : KBD_Names( KBD_UE ) = "KBD_UE"
Const As UByte KBD_OE = &hC0 : KBD_Keys( KBD_OE , 1 ) = KBD_Buchstabe : KBD_Names( KBD_OE ) = "KBD_OE"
Const As UByte KBD_AE = &hDE : KBD_Keys( KBD_AE , 1 ) = KBD_Buchstabe : KBD_Names( KBD_AE ) = "KBD_AE"
Const As UByte KBD_SZ = &hDB : KBD_Keys( KBD_SZ , 1 ) = KBD_Buchstabe : KBD_Names( KBD_SZ ) = "KBD_SZ"
'==============================================================================================================================================================
'Sonderzeichen
'==============================================================================================================================================================
' Taste [+*~]
Const As UByte KBD_PLUS = &hBB : KBD_Keys( KBD_PLUS , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_PLUS ) = "KBD_PLUS"
' Taste [,;]
Const As UByte KBD_COMMA = &hBC : KBD_Keys( KBD_COMMA , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_COMMA ) = "KBD_COMMA"
' Taste [-_]
Const As UByte KBD_MINUS = &hBD : KBD_Keys( KBD_MINUS , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_MINUS ) = "KBD_MINUS"
' Taste [.:]
Const As UByte KBD_DOT = &hBE : KBD_Keys( KBD_DOT , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_DOT ) = "KBD_OEM_DOT"
' Taste [#']
Const As UByte KBD_RHOMB = &hBF : KBD_Keys( KBD_RHOMB , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_RHOMB ) = "KBD_RHOMB"
' Taste [^°] (keine Ahnung wie ich diese Taste nennen soll)
Const As UByte KBD_OEM_5 = &hDC : KBD_Keys( KBD_OEM_5 , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_OEM_5 ) = "KBD_OEM_5"
' Taste [´`]
Const As UByte KBD_APOSTROPHE = &hDD : KBD_Keys( KBD_APOSTROPHE , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_APOSTROPHE ) = "KBD_APOSTROPHE"
' Taste [<>|] (keine Ahnung wie ich diese Taste nennen soll)
Const As UByte KBD_OEM_102 = &hE2 : KBD_Keys( KBD_OEM_102 , 1 ) = KBD_Sonderzeichen : KBD_Names( KBD_OEM_102 ) = "KBD_OEM_102"
'==============================================================================================================================================================
'Zahlenblock
'==============================================================================================================================================================
Const As UByte KBD_NUMPAD0 = &h60 : KBD_Keys( KBD_NUMPAD0 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD0 ) = "KBD_NUMPAD0"
Const As UByte KBD_NUMPAD1 = &h61 : KBD_Keys( KBD_NUMPAD1 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD1 ) = "KBD_NUMPAD1"
Const As UByte KBD_NUMPAD2 = &h62 : KBD_Keys( KBD_NUMPAD2 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD2 ) = "KBD_NUMPAD2"
Const As UByte KBD_NUMPAD3 = &h63 : KBD_Keys( KBD_NUMPAD3 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD3 ) = "KBD_NUMPAD3"
Const As UByte KBD_NUMPAD4 = &h64 : KBD_Keys( KBD_NUMPAD4 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD4 ) = "KBD_NUMPAD4"
Const As UByte KBD_NUMPAD5 = &h65 : KBD_Keys( KBD_NUMPAD5 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD5 ) = "KBD_NUMPAD5"
Const As UByte KBD_NUMPAD6 = &h66 : KBD_Keys( KBD_NUMPAD6 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD6 ) = "KBD_NUMPAD6"
Const As UByte KBD_NUMPAD7 = &h67 : KBD_Keys( KBD_NUMPAD7 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD7 ) = "KBD_NUMPAD7"
Const As UByte KBD_NUMPAD8 = &h68 : KBD_Keys( KBD_NUMPAD8 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD8 ) = "KBD_NUMPAD8"
Const As UByte KBD_NUMPAD9 = &h69 : KBD_Keys( KBD_NUMPAD9 , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMPAD9 ) = "KBD_NUMPAD9"
Const As UByte KBD_MULTIPLY = &h6A : KBD_Keys( KBD_MULTIPLY , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_MULTIPLY ) = "KBD_MULTIPLY"
Const As UByte KBD_ADD = &h6B : KBD_Keys( KBD_ADD , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_ADD ) = "KBD_ADD"
Const As UByte KBD_SEPARATOR = &h6C : KBD_Keys( KBD_SEPARATOR , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_SEPARATOR ) = "KBD_SEPARATOR"
Const As UByte KBD_SUBTRACT = &h6D : KBD_Keys( KBD_SUBTRACT , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_SUBTRACT ) = "KBD_SUBTRACT"
Const As UByte KBD_DECIMAL = &h6E : KBD_Keys( KBD_DECIMAL , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_DECIMAL ) = "KBD_DECIMAL"
Const As UByte KBD_DIVIDE = &h6F : KBD_Keys( KBD_DIVIDE , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_DIVIDE ) = "KBD_DIVIDE"
Const As UByte KBD_NUMLOCK = &h90 : KBD_Keys( KBD_NUMLOCK , 1 ) = KBD_Zahlenblock : KBD_Names( KBD_NUMLOCK ) = "KBD_NUMLOCK"
'==============================================================================================================================================================
'Cursorblock
'==============================================================================================================================================================
Const As UByte KBD_LEFT = &h25 : KBD_Keys( KBD_LEFT , 1 ) = KBD_Cursorblock : KBD_Names( KBD_LEFT ) = "KBD_LEFT"
Const As UByte KBD_UP = &h26 : KBD_Keys( KBD_UP , 1 ) = KBD_Cursorblock : KBD_Names( KBD_UP ) = "KBD_UP"
Const As UByte KBD_RIGHT = &h27 : KBD_Keys( KBD_RIGHT , 1 ) = KBD_Cursorblock : KBD_Names( KBD_RIGHT ) = "KBD_RIGHT"
Const As UByte KBD_DOWN = &h28 : KBD_Keys( KBD_DOWN , 1 ) = KBD_Cursorblock : KBD_Names( KBD_DOWN ) = "KBD_DOWN"
'==============================================================================================================================================================
'6er Block
'==============================================================================================================================================================
' Taste [Bild auf]
Const As UByte KBD_PAGE_UP = &h21 : KBD_Keys( KBD_PAGE_UP , 1 ) = KBD_6erBlock : KBD_Names( KBD_PAGE_UP ) = "KBD_PAGE_UP"
' Taste [Bild ab]
Const As UByte KBD_PAGE_DOWN = &h22 : KBD_Keys( KBD_PAGE_DOWN , 1 ) = KBD_6erBlock : KBD_Names( KBD_PAGE_DOWN ) = "KBD_PAGE_DOWN"
' Taste [Ende]
Const As UByte KBD_END = &h23 : KBD_Keys( KBD_END , 1 ) = KBD_6erBlock : KBD_Names( KBD_END ) = "KBD_END"
' Taste [Pos1]
Const As UByte KBD_HOME = &h24 : KBD_Keys( KBD_HOME , 1 ) = KBD_6erBlock : KBD_Names( KBD_HOME ) = "KBD_HOME"
' Taste [Einfg]
Const As UByte KBD_INSERT = &h2D : KBD_Keys( KBD_INSERT , 1 ) = KBD_6erBlock : KBD_Names( KBD_INSERT ) = "KBD_INSERT"
' Taste [Entf]
Const As UByte KBD_DELETE = &h2E : KBD_Keys( KBD_DELETE , 1 ) = KBD_6erBlock : KBD_Names( KBD_DELETE ) = "KBD_DELETE"
'==============================================================================================================================================================
'Funktionstasten
'==============================================================================================================================================================
Const As UByte KBD_F1 = &h70 : KBD_Keys( KBD_F1 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F1 ) = "KBD_F1"
Const As UByte KBD_F2 = &h71 : KBD_Keys( KBD_F2 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F2 ) = "KBD_F2"
Const As UByte KBD_F3 = &h72 : KBD_Keys( KBD_F3 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F3 ) = "KBD_F3"
Const As UByte KBD_F4 = &h73 : KBD_Keys( KBD_F4 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F4 ) = "KBD_F4"
Const As UByte KBD_F5 = &h74 : KBD_Keys( KBD_F5 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F5 ) = "KBD_F5"
Const As UByte KBD_F6 = &h75 : KBD_Keys( KBD_F6 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F6 ) = "KBD_F6"
Const As UByte KBD_F7 = &h76 : KBD_Keys( KBD_F7 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F7 ) = "KBD_F7"
Const As UByte KBD_F8 = &h77 : KBD_Keys( KBD_F8 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F8 ) = "KBD_F8"
Const As UByte KBD_F9 = &h78 : KBD_Keys( KBD_F9 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F9 ) = "KBD_F9"
Const As UByte KBD_F10 = &h79 : KBD_Keys( KBD_F10 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F10 ) = "KBD_F10"
Const As UByte KBD_F11 = &h7A : KBD_Keys( KBD_F11 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F11 ) = "KBD_F11"
Const As UByte KBD_F12 = &h7B : KBD_Keys( KBD_F12 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F12 ) = "KBD_F12"
Const As UByte KBD_F13 = &h7C : KBD_Keys( KBD_F13 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F13 ) = "KBD_F13"
Const As UByte KBD_F14 = &h7D : KBD_Keys( KBD_F14 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F14 ) = "KBD_F14"
Const As UByte KBD_F15 = &h7E : KBD_Keys( KBD_F15 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F15 ) = "KBD_F15"
Const As UByte KBD_F16 = &h7F : KBD_Keys( KBD_F16 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F16 ) = "KBD_F16"
Const As UByte KBD_F17 = &h80 : KBD_Keys( KBD_F17 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F17 ) = "KBD_F17"
Const As UByte KBD_F18 = &h81 : KBD_Keys( KBD_F18 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F18 ) = "KBD_F18"
Const As UByte KBD_F19 = &h82 : KBD_Keys( KBD_F19 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F19 ) = "KBD_F19"
Const As UByte KBD_F20 = &h83 : KBD_Keys( KBD_F20 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F20 ) = "KBD_F20"
Const As UByte KBD_F21 = &h84 : KBD_Keys( KBD_F21 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F21 ) = "KBD_F21"
Const As UByte KBD_F22 = &h85 : KBD_Keys( KBD_F22 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F22 ) = "KBD_F22"
Const As UByte KBD_F23 = &h86 : KBD_Keys( KBD_F23 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F23 ) = "KBD_F23"
Const As UByte KBD_F24 = &h87 : KBD_Keys( KBD_F24 , 1 ) = KBD_Functionstaste : KBD_Names( KBD_F24 ) = "KBD_F24"
'==============================================================================================================================================================
'Steuertasten
'==============================================================================================================================================================
Const As UByte KBD_ESCAPE = &h1B : KBD_Keys( KBD_ESCAPE , 1 ) = KBD_Steuertaste : KBD_Names( KBD_ESCAPE ) = "KBD_ESCAPE"
' Taste [Shift links] (Umschalttaste links)
Const As UByte KBD_LSHIFT = &hA0 : KBD_Keys( KBD_LSHIFT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_LSHIFT ) = "KBD_LSHIFT"
' Taste [Shift rechts] (Umschalttaste rechts)
Const As UByte KBD_RSHIFT = &hA1 : KBD_Keys( KBD_RSHIFT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_RSHIFT ) = "KBD_RSHIFT"
' Taste [Shift links] oder [Shift rechts] oder beide gedrückt
Const As UByte KBD_SHIFT = &h10 : KBD_Keys( KBD_SHIFT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_SHIFT ) = "KBD_SHIFT"
' Taste [CTRL links] (linke Strg-Taste)
Const As UByte KBD_LCTRL = &hA2 : KBD_Keys( KBD_LCTRL , 1 ) = KBD_Steuertaste : KBD_Names( KBD_LCTRL ) = "KBD_LCTRL"
' Taste [CTRL rechts] (rechte Strg-Taste)
Const As UByte KBD_RCTRL = &hA3 : KBD_Keys( KBD_RCTRL , 1 ) = KBD_Steuertaste : KBD_Names( KBD_RCTRL ) = "KBD_RCTRL"
' Taste [CTRL links] oder [CTRL rechts] oder beide gedrückt
Const As UByte KBD_CTRL = &h11 : KBD_Keys( KBD_CTRL , 1 ) = KBD_Steuertaste : KBD_Names( KBD_CTRL ) = "KBD_CTRL"
' Taste [Alt]
Const As UByte KBD_LALT = &hA4 : KBD_Keys( KBD_LALT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_LALT ) = "KBD_LALT"
' Taste [Alt Gr]
Const As UByte KBD_RALT = &hA5 : KBD_Keys( KBD_RALT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_RALT ) = "KBD_RALT"
' Taste [Alt] oder [Alt Gr] oder beide gedrückt
Const As UByte KBD_ALT = &h12 : KBD_Keys( KBD_ALT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_ALT ) = "KBD_ALT"
' Taste [Rückgängig]
Const As UByte KBD_BACK = &h08 : KBD_Keys( KBD_BACK , 1 ) = KBD_Steuertaste : KBD_Names( KBD_BACK ) = "KBD_BACK"
' Taste [Tabulator]
Const As UByte KBD_TAB = &h09 : KBD_Keys( KBD_TAB , 1 ) = KBD_Steuertaste : KBD_Names( KBD_TAB ) = "KBD_TAB"
' Taste [Enter]
Const As UByte KBD_RETURN = &h0D : KBD_Keys( KBD_RETURN , 1 ) = KBD_Steuertaste : KBD_Names( KBD_RETURN ) = "KBD_RETURN"
' Taste [Caps lock] (Feststelltaste für Großschreibung
Const As UByte KBD_CAPSLOCK = &h14 : KBD_Keys( KBD_CAPSLOCK , 1 ) = KBD_Steuertaste : KBD_Names( KBD_CAPSLOCK ) = "KBD_CAPSLOCK"
' Taste [Leertaste]
Const As UByte KBD_SPACE = &h20 : KBD_Keys( KBD_SPACE , 1 ) = KBD_Steuertaste : KBD_Names( KBD_SPACE ) = "KBD_SPACE"
' Taste [Druck]
Const As UByte KBD_SNAPSHOT = &h2C : KBD_Keys( KBD_SNAPSHOT , 1 ) = KBD_Steuertaste : KBD_Names( KBD_SNAPSHOT ) = "KBD_SNAPSHOT"
Const As UByte KBD_PAUSE = &h13 : KBD_Keys( KBD_PAUSE , 1 ) = KBD_Steuertaste : KBD_Names( KBD_PAUSE ) = "KBD_PAUSE"
Const As UByte KBD_SCROLL = &h91 : KBD_Keys( KBD_SCROLL , 1 ) = KBD_Steuertaste : KBD_Names( KBD_SCROLL ) = "KBD_SCROLL"
'==============================================================================================================================================================
'Windowstasten
'==============================================================================================================================================================
' Taste [Win links]
Const As UByte KBD_LWIN = &h5B : KBD_Keys( KBD_LWIN , 1 ) = KBD_Windowstaste : KBD_Names( KBD_LWIN ) = "KBD_LWIN"
' Taste [Win rechts]
Const As UByte KBD_RWIN = &h5C : KBD_Keys( KBD_RWIN , 1 ) = KBD_Windowstaste : KBD_Names( KBD_RWIN ) = "KBD_RWIN"
' Taste [Kontext-Menü] (Windows-Tastatur)
Const As UByte KBD_APPS = &h5D : KBD_Keys( KBD_APPS , 1 ) = KBD_Windowstaste : KBD_Names( KBD_APPS ) = "KBD_APPS"
'==============================================================================================================================================================
'Multimediatasten
'==============================================================================================================================================================
Const As UByte KBD_VOLUME_MUTE = &hAD : KBD_Keys( KBD_VOLUME_MUTE , 1 ) = KBD_Multimediataste : KBD_Names( KBD_VOLUME_MUTE ) = "KBD_VOLUME_MUTE"
Const As UByte KBD_VOLUME_DOWN = &hAE : KBD_Keys( KBD_VOLUME_DOWN , 1 ) = KBD_Multimediataste : KBD_Names( KBD_VOLUME_DOWN ) = "KBD_VOLUME_DOWN"
Const As UByte KBD_VOLUME_UP = &hAF : KBD_Keys( KBD_VOLUME_UP , 1 ) = KBD_Multimediataste : KBD_Names( KBD_VOLUME_UP ) = "KBD_VOLUME_UP"
Const As UByte KBD_MEDIA_NEXT_TRACK = &hB0 : KBD_Keys( KBD_MEDIA_NEXT_TRACK , 1 ) = KBD_Multimediataste : KBD_Names( KBD_MEDIA_NEXT_TRACK ) = "KBD_MEDIA_NEXT_TRACK"
Const As UByte KBD_MEDIA_PREV_TRACK = &hB1 : KBD_Keys( KBD_MEDIA_PREV_TRACK , 1 ) = KBD_Multimediataste : KBD_Names( KBD_MEDIA_PREV_TRACK ) = "KBD_MEDIA_PREV_TRACK"
Const As UByte KBD_MEDIA_STOP = &hB2 : KBD_Keys( KBD_MEDIA_STOP , 1 ) = KBD_Multimediataste : KBD_Names( KBD_MEDIA_STOP ) = "KBD_MEDIA_STOP"
Const As UByte KBD_MEDIA_PLAY_PAUSE = &hB3 : KBD_Keys( KBD_MEDIA_PLAY_PAUSE , 1 ) = KBD_Multimediataste : KBD_Names( KBD_MEDIA_PLAY_PAUSE ) = "KBD_MEDIA_PLAY_PAUSE"
Const As UByte KBD_LAUNCH_MAIL = &hB4 : KBD_Keys( KBD_LAUNCH_MAIL , 1 ) = KBD_Multimediataste : KBD_Names( KBD_LAUNCH_MAIL ) = "KBD_LAUNCH_MAIL"
Const As UByte KBD_LAUNCH_MEDIA_SELECT = &hB5 : KBD_Keys( KBD_LAUNCH_MEDIA_SELECT , 1 ) = KBD_Multimediataste : KBD_Names( KBD_LAUNCH_MEDIA_SELECT ) = "KBD_LAUNCH_MEDIA_SELECT"
Const As UByte KBD_LAUNCH_APP1 = &hB6 : KBD_Keys( KBD_LAUNCH_APP1 , 1 ) = KBD_Multimediataste : KBD_Names( KBD_LAUNCH_APP1 ) = "KBD_LAUNCH_APP1"
Const As UByte KBD_LAUNCH_APP2 = &hB7 : KBD_Keys( KBD_LAUNCH_APP2 , 1 ) = KBD_Multimediataste : KBD_Names( KBD_LAUNCH_APP2 ) = "KBD_LAUNCH_APP2"
'==============================================================================================================================================================
'Internettasten
'==============================================================================================================================================================
Const As UByte KBD_BROWSER_BACK = &hA6 : KBD_Keys( KBD_BROWSER_BACK , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_BACK ) = "KBD_BROWSER_BACK"
Const As UByte KBD_BROWSER_FORWARD = &hA7 : KBD_Keys( KBD_BROWSER_FORWARD , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_FORWARD ) = "KBD_BROWSER_FORWARD"
Const As UByte KBD_BROWSER_REFRESH = &hA8 : KBD_Keys( KBD_BROWSER_REFRESH , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_REFRESH ) = "KBD_BROWSER_REFRESH"
Const As UByte KBD_BROWSER_STOP = &hA9 : KBD_Keys( KBD_BROWSER_STOP , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_STOP ) = "KBD_BROWSER_STOP"
Const As UByte KBD_BROWSER_SEARCH = &hAA : KBD_Keys( KBD_BROWSER_SEARCH , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_SEARCH ) = "KBD_BROWSER_SEARCH"
Const As UByte KBD_BROWSER_FAVORITES = &hAB : KBD_Keys( KBD_BROWSER_FAVORITES , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_FAVORITES ) = "KBD_BROWSER_FAVORITES"
Const As UByte KBD_BROWSER_HOME = &hAC : KBD_Keys( KBD_BROWSER_HOME , 1 ) = KBD_Internettaste : KBD_Names( KBD_BROWSER_HOME ) = "KBD_BROWSER_HOME"
'==============================================================================================================================================================
'Systemtasten
'==============================================================================================================================================================
Const As UByte KBD_SLEEP = &h5F : KBD_Keys( KBD_SLEEP , 1 ) = KBD_Systemtaste : KBD_Names( KBD_SLEEP ) = "KBD_SLEEP"
'==============================================================================================================================================================
'Maustasten
'==============================================================================================================================================================
Const As UByte KBD_LMB = &h01 : KBD_Keys( KBD_LMB , 1 ) = KBD_Maustaste : KBD_Names( KBD_LMB ) = "KBD_LMB"
Const As UByte KBD_MMB = &h04 : KBD_Keys( KBD_MMB , 1 ) = KBD_Maustaste : KBD_Names( KBD_MMB ) = "KBD_MMB"
Const As UByte KBD_RMB = &h02 : KBD_Keys( KBD_RMB , 1 ) = KBD_Maustaste : KBD_Names( KBD_RMB ) = "KBD_RMB"
'==============================================================================================================================================================
'Tasten die noch nicht in Kategorien einsortiert wurden
'==============================================================================================================================================================
Const As UByte KBD_ACCEPT = &h1E : KBD_Keys( KBD_ACCEPT , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_ACCEPT ) = "KBD_ACCEPT"
Const As UByte KBD_CANCEL = &h03 : KBD_Keys( KBD_CANCEL , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_CANCEL ) = "KBD_CANCEL"
Const As UByte KBD_SELECT = &h29 : KBD_Keys( KBD_SELECT , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_SELECT ) = "KBD_SELECT"
Const As UByte KBD_PRINT = &h2A : KBD_Keys( KBD_PRINT , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_PRINT ) = "KBD_PRINT"
Const As UByte KBD_EXECUTE = &h2B : KBD_Keys( KBD_EXECUTE , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_EXECUTE ) = "KBD_EXECUTE"
Const As UByte KBD_HELP = &h2F : KBD_Keys( KBD_HELP , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_HELP ) = "KBD_HELP"
Const As UByte KBD_XBUTTON1 = &h05 : KBD_Keys( KBD_XBUTTON1 , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_XBUTTON1 ) = "KBD_XBUTTON1"
Const As UByte KBD_XBUTTON2 = &h06 : KBD_Keys( KBD_XBUTTON2 , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_XBUTTON2 ) = "KBD_XBUTTON2"
Const As UByte KBD_KANA = &h15 : KBD_Keys( KBD_KANA , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_KANA ) = "KBD_KANA"
Const As UByte KBD_HANGEUL = &h15 : KBD_Keys( KBD_HANGEUL , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_HANGEUL ) = "KBD_HANGEUL"
Const As UByte KBD_HANGUL = &h15 : KBD_Keys( KBD_HANGUL , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_HANGUL ) = "KBD_HANGUL"
Const As UByte KBD_JUNJA = &h17 : KBD_Keys( KBD_JUNJA , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_JUNJA ) = "KBD_JUNJA"
Const As UByte KBD_FINAL = &h18 : KBD_Keys( KBD_FINAL , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_FINAL ) = "KBD_FINAL"
Const As UByte KBD_HANJA = &h19 : KBD_Keys( KBD_HANJA , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_HANJA ) = "KBD_HANJA"
Const As UByte KBD_KANJI = &h19 : KBD_Keys( KBD_KANJI , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_KANJI ) = "KBD_KANJI"
Const As UByte KBD_CONVERT = &h1C : KBD_Keys( KBD_CONVERT , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_CONVERT ) = "KBD_CONVERT"
Const As UByte KBD_NONCONVERT = &h1D : KBD_Keys( KBD_NONCONVERT , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_NONCONVERT ) = "KBD_NONCONVERT"
Const As UByte KBD_MODECHANGE = &h1F : KBD_Keys( KBD_MODECHANGE , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_MODECHANGE ) = "KBD_MODECHANGE"
Const As UByte KBD_OEM_8 = &hDF : KBD_Keys( KBD_OEM_8 , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_OEM_8 ) = "KBD_OEM_8"
Const As UByte KBD_PROCESSKEY = &hE5 : KBD_Keys( KBD_PROCESSKEY , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_PROCESSKEY ) = "KBD_PROCESSKEY"
Const As UByte KBD_PACKET = &hE7 : KBD_Keys( KBD_PACKET , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_PACKET ) = "KBD_PACKET"
Const As UByte KBD_ATTN = &hF6 : KBD_Keys( KBD_ATTN , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_ATTN ) = "KBD_ATTN"
Const As UByte KBD_CRSEL = &hF7 : KBD_Keys( KBD_CRSEL , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_CRSEL ) = "KBD_CRSEL"
Const As UByte KBD_EXSEL = &hF8 : KBD_Keys( KBD_EXSEL , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_EXSEL ) = "KBD_EXSEL"
Const As UByte KBD_EREOF = &hF9 : KBD_Keys( KBD_EREOF , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_EREOF ) = "KBD_EREOF"
Const As UByte KBD_PLAY = &hFA : KBD_Keys( KBD_PLAY , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_PLAY ) = "KBD_PLAY"
Const As UByte KBD_ZOOM = &hFB : KBD_Keys( KBD_ZOOM , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_ZOOM ) = "KBD_ZOOM"
Const As UByte KBD_NONAME = &hFC : KBD_Keys( KBD_NONAME , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_NONAME ) = "KBD_NONAME"
Const As UByte KBD_PA1 = &hFD : KBD_Keys( KBD_PA1 , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_PA1 ) = "KBD_PA1"
Const As UByte KBD_OEM_CLEAR = &hFE : KBD_Keys( KBD_OEM_CLEAR , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_OEM_CLEAR ) = "KBD_OEM_CLEAR"
Const As UByte KBD_CLEAR = &h0C : KBD_Keys( KBD_CLEAR , 1 ) = KBD_UnbekannteTaste : KBD_Names( KBD_CLEAR ) = "KBD_CLEAR"
'==============================================================================================================================================================
'Nicht belegt
'==============================================================================================================================================================
Const As UByte KBD_UnUsed01 = &h07 : KBD_Keys( KBD_UnUsed01 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed01 ) = "KBD_UnUsed01"
Const As UByte KBD_UnUsed02 = &h0A : KBD_Keys( KBD_UnUsed02 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed02 ) = "KBD_UnUsed02"
Const As UByte KBD_UnUsed03 = &h0B : KBD_Keys( KBD_UnUsed03 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed03 ) = "KBD_UnUsed03"
Const As UByte KBD_UnUsed04 = &h0E : KBD_Keys( KBD_UnUsed04 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed04 ) = "KBD_UnUsed04"
Const As UByte KBD_UnUsed05 = &h0F : KBD_Keys( KBD_UnUsed05 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed05 ) = "KBD_UnUsed05"
Const As UByte KBD_UnUsed06 = &h16 : KBD_Keys( KBD_UnUsed06 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed06 ) = "KBD_UnUsed06"
Const As UByte KBD_UnUsed07 = &h1A : KBD_Keys( KBD_UnUsed07 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed07 ) = "KBD_UnUsed07"
Const As UByte KBD_UnUsed08 = &h3A : KBD_Keys( KBD_UnUsed08 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed08 ) = "KBD_UnUsed08"
Const As UByte KBD_UnUsed09 = &h3B : KBD_Keys( KBD_UnUsed09 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed09 ) = "KBD_UnUsed09"
Const As UByte KBD_UnUsed10 = &h3C : KBD_Keys( KBD_UnUsed10 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed10 ) = "KBD_UnUsed10"
Const As UByte KBD_UnUsed11 = &h3D : KBD_Keys( KBD_UnUsed11 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed11 ) = "KBD_UnUsed11"
Const As UByte KBD_UnUsed12 = &h3E : KBD_Keys( KBD_UnUsed12 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed12 ) = "KBD_UnUsed12"
Const As UByte KBD_UnUsed13 = &h3F : KBD_Keys( KBD_UnUsed13 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed13 ) = "KBD_UnUsed13"
Const As UByte KBD_UnUsed14 = &h40 : KBD_Keys( KBD_UnUsed14 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed14 ) = "KBD_UnUsed14"
Const As UByte KBD_UnUsed15 = &h5E : KBD_Keys( KBD_UnUsed15 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed15 ) = "KBD_UnUsed15"
Const As UByte KBD_UnUsed16 = &h88 : KBD_Keys( KBD_UnUsed16 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed16 ) = "KBD_UnUsed16"
Const As UByte KBD_UnUsed17 = &h89 : KBD_Keys( KBD_UnUsed17 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed17 ) = "KBD_UnUsed17"
Const As UByte KBD_UnUsed18 = &h8A : KBD_Keys( KBD_UnUsed18 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed18 ) = "KBD_UnUsed18"
Const As UByte KBD_UnUsed19 = &h8B : KBD_Keys( KBD_UnUsed19 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed19 ) = "KBD_UnUsed19"
Const As UByte KBD_UnUsed20 = &h8C : KBD_Keys( KBD_UnUsed20 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed20 ) = "KBD_UnUsed20"
Const As UByte KBD_UnUsed21 = &h8D : KBD_Keys( KBD_UnUsed21 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed21 ) = "KBD_UnUsed21"
Const As UByte KBD_UnUsed22 = &h8E : KBD_Keys( KBD_UnUsed22 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed22 ) = "KBD_UnUsed22"
Const As UByte KBD_UnUsed23 = &h8F : KBD_Keys( KBD_UnUsed23 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed23 ) = "KBD_UnUsed23"
Const As UByte KBD_UnUsed24 = &h92 : KBD_Keys( KBD_UnUsed24 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed24 ) = "KBD_UnUsed24"
Const As UByte KBD_UnUsed25 = &h93 : KBD_Keys( KBD_UnUsed25 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed25 ) = "KBD_UnUsed25"
Const As UByte KBD_UnUsed26 = &h94 : KBD_Keys( KBD_UnUsed26 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed26 ) = "KBD_UnUsed26"
Const As UByte KBD_UnUsed27 = &h95 : KBD_Keys( KBD_UnUsed27 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed27 ) = "KBD_UnUsed27"
Const As UByte KBD_UnUsed28 = &h96 : KBD_Keys( KBD_UnUsed28 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed28 ) = "KBD_UnUsed28"
Const As UByte KBD_UnUsed29 = &h97 : KBD_Keys( KBD_UnUsed29 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed29 ) = "KBD_UnUsed29"
Const As UByte KBD_UnUsed30 = &h98 : KBD_Keys( KBD_UnUsed30 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed30 ) = "KBD_UnUsed30"
Const As UByte KBD_UnUsed31 = &h99 : KBD_Keys( KBD_UnUsed31 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed31 ) = "KBD_UnUsed31"
Const As UByte KBD_UnUsed32 = &h9A : KBD_Keys( KBD_UnUsed32 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed32 ) = "KBD_UnUsed32"
Const As UByte KBD_UnUsed33 = &h9B : KBD_Keys( KBD_UnUsed33 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed33 ) = "KBD_UnUsed33"
Const As UByte KBD_UnUsed34 = &h9C : KBD_Keys( KBD_UnUsed34 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed34 ) = "KBD_UnUsed34"
Const As UByte KBD_UnUsed35 = &h9D : KBD_Keys( KBD_UnUsed35 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed35 ) = "KBD_UnUsed35"
Const As UByte KBD_UnUsed36 = &h9E : KBD_Keys( KBD_UnUsed36 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed36 ) = "KBD_UnUsed36"
Const As UByte KBD_UnUsed37 = &h9F : KBD_Keys( KBD_UnUsed37 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed37 ) = "KBD_UnUsed37"
Const As UByte KBD_UnUsed38 = &hB8 : KBD_Keys( KBD_UnUsed38 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed38 ) = "KBD_UnUsed38"
Const As UByte KBD_UnUsed39 = &hB9 : KBD_Keys( KBD_UnUsed39 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed39 ) = "KBD_UnUsed39"
Const As UByte KBD_UnUsed40 = &hC1 : KBD_Keys( KBD_UnUsed40 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed40 ) = "KBD_UnUsed40"
Const As UByte KBD_UnUsed41 = &hC2 : KBD_Keys( KBD_UnUsed41 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed41 ) = "KBD_UnUsed41"
Const As UByte KBD_UnUsed42 = &hC3 : KBD_Keys( KBD_UnUsed42 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed42 ) = "KBD_UnUsed42"
Const As UByte KBD_UnUsed43 = &hC4 : KBD_Keys( KBD_UnUsed43 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed43 ) = "KBD_UnUsed43"
Const As UByte KBD_UnUsed44 = &hC5 : KBD_Keys( KBD_UnUsed44 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed44 ) = "KBD_UnUsed44"
Const As UByte KBD_UnUsed45 = &hC6 : KBD_Keys( KBD_UnUsed45 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed45 ) = "KBD_UnUsed45"
Const As UByte KBD_UnUsed46 = &hC7 : KBD_Keys( KBD_UnUsed46 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed46 ) = "KBD_UnUsed46"
Const As UByte KBD_UnUsed47 = &hC8 : KBD_Keys( KBD_UnUsed47 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed47 ) = "KBD_UnUsed47"
Const As UByte KBD_UnUsed48 = &hC9 : KBD_Keys( KBD_UnUsed48 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed48 ) = "KBD_UnUsed48"
Const As UByte KBD_UnUsed49 = &hCA : KBD_Keys( KBD_UnUsed49 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed49 ) = "KBD_UnUsed49"
Const As UByte KBD_UnUsed50 = &hCB : KBD_Keys( KBD_UnUsed50 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed50 ) = "KBD_UnUsed50"
Const As UByte KBD_UnUsed51 = &hCC : KBD_Keys( KBD_UnUsed51 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed51 ) = "KBD_UnUsed51"
Const As UByte KBD_UnUsed52 = &hCD : KBD_Keys( KBD_UnUsed52 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed52 ) = "KBD_UnUsed52"
Const As UByte KBD_UnUsed53 = &hCE : KBD_Keys( KBD_UnUsed53 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed53 ) = "KBD_UnUsed53"
Const As UByte KBD_UnUsed54 = &hCF : KBD_Keys( KBD_UnUsed54 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed54 ) = "KBD_UnUsed54"
Const As UByte KBD_UnUsed55 = &hD0 : KBD_Keys( KBD_UnUsed55 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed55 ) = "KBD_UnUsed55"
Const As UByte KBD_UnUsed56 = &hD1 : KBD_Keys( KBD_UnUsed56 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed56 ) = "KBD_UnUsed56"
Const As UByte KBD_UnUsed57 = &hD2 : KBD_Keys( KBD_UnUsed57 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed57 ) = "KBD_UnUsed57"
Const As UByte KBD_UnUsed58 = &hD3 : KBD_Keys( KBD_UnUsed58 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed58 ) = "KBD_UnUsed58"
Const As UByte KBD_UnUsed59 = &hD4 : KBD_Keys( KBD_UnUsed59 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed59 ) = "KBD_UnUsed59"
Const As UByte KBD_UnUsed60 = &hD5 : KBD_Keys( KBD_UnUsed60 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed60 ) = "KBD_UnUsed60"
Const As UByte KBD_UnUsed61 = &hD6 : KBD_Keys( KBD_UnUsed61 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed61 ) = "KBD_UnUsed61"
Const As UByte KBD_UnUsed62 = &hD7 : KBD_Keys( KBD_UnUsed62 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed62 ) = "KBD_UnUsed62"
Const As UByte KBD_UnUsed63 = &hD8 : KBD_Keys( KBD_UnUsed63 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed63 ) = "KBD_UnUsed63"
Const As UByte KBD_UnUsed64 = &hD9 : KBD_Keys( KBD_UnUsed64 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed64 ) = "KBD_UnUsed64"
Const As UByte KBD_UnUsed65 = &hDA : KBD_Keys( KBD_UnUsed65 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed65 ) = "KBD_UnUsed65"
Const As UByte KBD_UnUsed66 = &hE0 : KBD_Keys( KBD_UnUsed66 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed66 ) = "KBD_UnUsed66"
Const As UByte KBD_UnUsed67 = &hE1 : KBD_Keys( KBD_UnUsed67 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed67 ) = "KBD_UnUsed67"
Const As UByte KBD_UnUsed68 = &hE3 : KBD_Keys( KBD_UnUsed68 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed68 ) = "KBD_UnUsed68"
Const As UByte KBD_UnUsed69 = &hE4 : KBD_Keys( KBD_UnUsed69 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed69 ) = "KBD_UnUsed69"
Const As UByte KBD_UnUsed70 = &hE6 : KBD_Keys( KBD_UnUsed70 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed70 ) = "KBD_UnUsed70"
Const As UByte KBD_UnUsed71 = &hE8 : KBD_Keys( KBD_UnUsed71 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed71 ) = "KBD_UnUsed71"
Const As UByte KBD_UnUsed72 = &hE9 : KBD_Keys( KBD_UnUsed72 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed72 ) = "KBD_UnUsed72"
Const As UByte KBD_UnUsed73 = &hEA : KBD_Keys( KBD_UnUsed73 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed73 ) = "KBD_UnUsed73"
Const As UByte KBD_UnUsed74 = &hEB : KBD_Keys( KBD_UnUsed74 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed74 ) = "KBD_UnUsed74"
Const As UByte KBD_UnUsed75 = &hEC : KBD_Keys( KBD_UnUsed75 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed75 ) = "KBD_UnUsed75"
Const As UByte KBD_UnUsed76 = &hED : KBD_Keys( KBD_UnUsed76 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed76 ) = "KBD_UnUsed76"
Const As UByte KBD_UnUsed77 = &hEE : KBD_Keys( KBD_UnUsed77 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed77 ) = "KBD_UnUsed77"
Const As UByte KBD_UnUsed78 = &hEF : KBD_Keys( KBD_UnUsed78 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed78 ) = "KBD_UnUsed78"
Const As UByte KBD_UnUsed79 = &hF0 : KBD_Keys( KBD_UnUsed79 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed79 ) = "KBD_UnUsed79"
Const As UByte KBD_UnUsed80 = &hF1 : KBD_Keys( KBD_UnUsed80 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed80 ) = "KBD_UnUsed80"
Const As UByte KBD_UnUsed81 = &hF2 : KBD_Keys( KBD_UnUsed81 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed81 ) = "KBD_UnUsed81"
Const As UByte KBD_UnUsed82 = &hF3 : KBD_Keys( KBD_UnUsed82 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed82 ) = "KBD_UnUsed82"
Const As UByte KBD_UnUsed83 = &hF4 : KBD_Keys( KBD_UnUsed83 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed83 ) = "KBD_UnUsed83"
Const As UByte KBD_UnUsed84 = &hF5 : KBD_Keys( KBD_UnUsed84 , 1 ) = KBD_NichtBelegt : KBD_Names( KBD_UnUsed84 ) = "KBD_UnUsed84"
Extern "windows" Lib "user32"
Declare Function GetAsyncKeyState (ByVal As Integer) As Short
declare function GetKeyState(byval as integer) as Short
Declare Function GetKeyboardState (ByVal As UByte Ptr) As Byte
Declare Function MapVirtualKey Alias "MapVirtualKeyW" (ByVal As UInteger, ByVal As UInteger) As UInteger
End Extern
Declare Function KBD_GetKeyType( ByVal Taste As UByte ) As Byte
Declare Function KBD_GetKeyTypString( ByVal Taste As UByte ) As String
Declare Function KBD_GetKeyName( ByVal Taste As UByte ) As String
Declare Function KBD_KeyUpdate() As UByte
Declare Function KBD_KeyAsyncUpdate() As UByte
Declare Function KBD_KeyNormal( ByVal Taste As UByte ) As UByte
Declare Function KBD_KeyHit( ByVal Taste As UByte ) As UByte
Declare Function KBD_KeyDown( ByVal Taste As UByte ) As UByte
Declare Function KBD_KeyUp( ByVal Taste As UByte ) As UByte
|
|
|
Nach oben |
|
 |
Weazle25
Anmeldungsdatum: 04.11.2007 Beiträge: 18 Wohnort: Stralsund (Mecklenburg-Vorpommern)
|
Verfasst am: 26.02.2009, 04:07 Titel: |
|
|
Teil 2
Code: |
Function KBD_GetKeyType( ByVal Taste As UByte ) As Byte
Return KBD_Keys( Taste, 1 )
End Function
Function KBD_GetKeyTypString( ByVal Taste As UByte ) As String
Select Case KBD_Keys( Taste, 1 )
Case KBD_UnbekannteTaste
Return "Unbekannte Taste"
Case KBD_NichtBelegt
Return "Nicht belegte Taste"
Case KBD_Zahl
Return "Zahl"
Case KBD_Buchstabe
Return "Buchstabe"
Case KBD_Functionstaste
Return "Functionstaste"
Case KBD_Zahlenblock
Return "Zahlenblock"
Case KBD_Cursorblock
Return "Cursorblock"
Case KBD_6erBlock
Return "6er Block"
Case KBD_Steuertaste
Return "Steuertaste"
Case KBD_Sonderzeichen
Return "Sonderzeichen"
Case KBD_Windowstaste
Return "Windowstaste"
Case KBD_Multimediataste
Return "Multimediataste"
Case KBD_Internettaste
Return "Internettaste"
Case KBD_Systemtaste
Return "Systemtaste"
End Select
End Function
Function KBD_GetKeyName( ByVal Taste As UByte ) As String
Return KBD_Names( Taste )
End Function
Function KBD_KeyUpdate() As UByte
For i As UShort = 0 To 255
If KBD_Keys(i,0) = KBD_State_Normal Then
'Von NORMAL zu HIT wechseln, wenn man anfängt zu drücken
If GetKeyState( i ) < 0 Then KBD_Keys(i,0) = KBD_State_Hit EndIf
ElseIf KBD_Keys(i,0) = KBD_State_Hit Then
'Von HIT zu DOWN wechseln, wenn man gedrückt hält.
'Von HIT zu UP wechseln, wenn man loslässt/gelassen hat.
If GetKeyState( i ) < 0 Then KBD_Keys(i,0) = KBD_State_Down Else KBD_Keys(i,0) = KBD_State_Up EndIf
ElseIf KBD_Keys(i,0) = KBD_State_Down Then
'Von DOWN zu UP wechseln, wenn man loslässt. Sonst belassen.
If GetKeyState( i ) >= 0 Then KBD_Keys(i,0) = KBD_State_Up EndIf
ElseIf KBD_Keys(i,0) = KBD_State_Up Then
'Von UP zu HIT wechseln, wenn man anfängt zu drücken
'Von UP zu NORMAL wechseln wenn dauerhaft losgelassen
If GetKeyState( i ) < 0 Then KBD_Keys(i,0) = KBD_State_Hit Else KBD_Keys(i,0) = KBD_State_Normal EndIf
EndIf
Next
Return 1
End Function
Function KBD_KeyAsyncUpdate() As UByte
For i As UShort = 0 To 255
If KBD_Keys(i,0) = KBD_State_Normal Then
'Von NORMAL zu HIT wechseln, wenn man anfängt zu drücken
If GetAsyncKeyState( i ) <> 0 Then KBD_Keys(i,0) = KBD_State_Hit EndIf
ElseIf KBD_Keys(i,0) = KBD_State_Hit Then
'Von HIT zu DOWN wechseln, wenn man gedrückt hält.
'Von HIT zu UP wechseln, wenn man loslässt/gelassen hat.
If GetAsyncKeyState( i ) <> 0 Then KBD_Keys(i,0) = KBD_State_Down Else KBD_Keys(i,0) = KBD_State_Up EndIf
ElseIf KBD_Keys(i,0) = KBD_State_Down Then
'Von DOWN zu UP wechseln, wenn man loslässt. Sonst belassen.
If GetAsyncKeyState( i ) = 0 Then KBD_Keys(i,0) = KBD_State_Up EndIf
ElseIf KBD_Keys(i,0) = KBD_State_Up Then
'Von UP zu HIT wechseln, wenn man anfängt zu drücken
'Von UP zu NORMAL wechseln wenn dauerhaft losgelassen
If GetAsyncKeyState( i ) <> 0 Then KBD_Keys(i,0) = KBD_State_Hit Else KBD_Keys(i,0) = KBD_State_Normal EndIf
EndIf
Next
Return 1
End Function
Function KBD_KeyNormal( ByVal Taste As UByte ) As UByte
If KBD_Keys(Taste,0) = KBD_State_Normal Then Return 1 Else Return 0
End Function
Function KBD_KeyHit( ByVal Taste As UByte ) As UByte
If KBD_Keys(Taste,0) = KBD_State_Hit Then Return 1 Else Return 0
End Function
Function KBD_KeyDown( ByVal Taste As UByte ) As UByte
If KBD_Keys(Taste,0) = KBD_State_Down Then Return 1 Else Return 0
End Function
Function KBD_KeyUp( ByVal Taste As UByte ) As UByte
If KBD_Keys(Taste,0) = KBD_State_Up Then Return 1 Else Return 0
End Function
Sub KBD_Test()
Screen 19, 8, 2
Dim Mode As Byte = 0
Do
Cls
If (KBD_KeyHit( KBD_CTRL ) = 1 and KBD_KeyDown( KBD_RETURN ) = 1) Or (KBD_KeyDown( KBD_CTRL ) = 1 and KBD_KeyHit( KBD_RETURN ) = 1) Then Mode = 1 - Mode
If Mode = 0 Then
KBD_KeyUpdate()
? "KBD_KeyUpdate() (mit Strg + Enter umschalten)"
Else
KBD_KeyAsyncUpdate()
? "KBD_KeyAsyncUpdate() (mit Strg + Enter umschalten)"
EndIf
? "Drücken sie eine beliebige Taste (ESC zum Beenden)."
For X As UShort = 0 To 255
If KBD_KeyDown( X ) = 1 Then
? "ID: " & Str( X ) & " (" & Hex( X ) & ")"
? "NAME: " & KBD_GetKeyName( X )
? "Gruppe: " & KBD_GetKeyTypString( X )
EndIf
Next
Flip
Sleep 50, 1
Loop Until KBD_KeyUp( KBD_ESCAPE ) = 1
End Sub
KBD_Test()
|
Das Ganze funzt auch wunderbar.
Nur bleiben noch folgende Probleme:
1.) Ich habe leider nur eine verkrüppelte Laptop-Tastatur bei der viele Tasten fehlen (z.B. 6er-Block, Nummern-Block und Media-Tasten) und die Tastendoppelbelegung die ich mit der [Fn]-Taste umschalten kann ist wenig vertrauenserweckend.
Ich hoffe daher das sich ein paar nette Kollegen finden werden die mal schauen ob alle Tasten richtig erkannt werden.
2.) Viele Tasten haben verwirrende Namen oder sind mir völlig unbekannt.
Vielleicht wäre jemand so nett und schaut mal nach ob alle Tasten richtig einsortiert wurden.
3.) Momentan werden die Tasten systemweit abgefragt.
Künftig soll es aber auch möglich sein zur Laufzeit zu wählen ob die Tasten programmweit oder systemweit abgefragt werden sollen.
Wie mache ich das bzw. wie kann ich herrausfinden ob mein Programm gerade aktiv ist (den Focus hat und im Vordergrund läuft)?
4.) Um bei Spielen die diese Lib verwenden das cheaten zu erschweren soll es auch möglich sein die Tasten für andere Programme zu sperren.
Aber wie geht das?
Danke schonmal für Eure Hilfe
Gruss
Weazle |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 26.02.2009, 15:42 Titel: |
|
|
zu 1) Ich helfe gern, muss aber erst auf die Linux-Version warten.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Weazle25
Anmeldungsdatum: 04.11.2007 Beiträge: 18 Wohnort: Stralsund (Mecklenburg-Vorpommern)
|
Verfasst am: 26.02.2009, 17:59 Titel: |
|
|
nemored hat Folgendes geschrieben: | zu 1) Ich helfe gern, muss aber erst auf die Linux-Version warten.  |
Bin grad dabei OpenSuse 11.1 runterzuladen aber der Download dauert noch 4 Stunden.
Hoffe mal das dort die Probleme mit dem Taktgeber bzw. Systemuhr behoben wurden sonst ist Essig mit Linux.
Andererseits wäre es vielleicht besser SDL zu nutzen.
Da gibts wenigstens für Win/Linux einheitliche Scancodes und ein vernünftiges Event-System ist auch schon drin.
Dafür hab ich dann wieder ne dll/so an der Backe was ich eigentlich vermeiden wollte.
Gruss
Weazle |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|