Alle Scancodes als Konstanten

Übersicht BlitzBasic DLLs und Userlibs

Neue Antwort erstellen

Xeres

Moderator

Betreff: Alle Scancodes als Konstanten

BeitragMo, Dez 27, 2010 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Was bei BlitzMax schon dabei ist, lässt sich auch leicht für BlitzBasic umsetzen: Alle Scancodes als Konstanten. Die Vorteile liegen auf der Hand:

  • Leichteres lesen des Codes
  • Schneller beim Tippen durch Autokomplete der IDE
  • Das lästige Nachschlagen entfällt


GetKeyName$
Gibt die lesbare Bezeichnung einer Taste zurück.

GetScanCode
Gib die letzte gedrückte Taste (Scancode) zurück (nicht mit GetKey (ASCII-Code) verwechseln!)

Tastaturkonstanten.bb
BlitzBasic: [AUSKLAPPEN]
;*** Alle Tastaturkonstanten (Scancodes) zur besseren Übersicht im Programm ***

;* Zahlenleiste
Const KEY_0 = 11, KEY_1 = 2, KEY_2 = 3, KEY_3 = 4, KEY_4 = 5, KEY_5 = 6, KEY_6 = 7, KEY_7 = 8, KEY_8 = 9, KEY_9 = 10

;* Buchstaben
Const KEY_Q = 16, KEY_W = 17, KEY_E = 18, KEY_R = 19, KEY_T = 20, KEY_Z = 21, KEY_U = 22, KEY_I = 23, KEY_O = 24, KEY_P = 25
Const KEY_A = 30, KEY_S = 31, KEY_D = 32, KEY_F = 33, KEY_G = 34, KEY_H = 35, KEY_J = 36, KEY_K = 37, KEY_L = 38, KEY_Y = 44
Const KEY_X = 45, KEY_C = 46, KEY_V = 47, KEY_B = 48, KEY_N = 49, KEY_M = 50

Const KEY_OE = 39 ;* Ö
Const KEY_AE = 40 ;* Ä
Const KEY_UE = 26 ;* Ü
Const KEY_SZ = 12 ;* ß

;* Funktionstasten
Const KEY_F1 = 59, KEY_F2 = 60, KEY_F3 = 61, KEY_F4 = 62, KEY_F5 = 63, KEY_F6 = 64, KEY_F7 = 65, KEY_F8 = 66, KEY_F9 = 67, KEY_F10 = 68, KEY_F11 = 87, KEY_F12 = 88

;* Zahlenblock
Const KEY_NUM_0 = 82, KEY_NUM_1 = 79, KEY_NUM_2 = 80, KEY_NUM_3 = 81, KEY_NUM_4 = 75, KEY_NUM_5 = 76, KEY_NUM_6 = 77, KEY_NUM_7 = 71, KEY_NUM_8 = 72, KEY_NUM_9 = 73
Const KEY_NUM_KOMMA = 83, KEY_NUM_MINUS = 74, KEY_NUM_PLUS = 78, KEY_NUM_MAL = 55, KEY_NUM_GETEILT = 181, KEY_NUM_ENTER = 156

;* Cursorblock
Const KEY_HOCH = 200, KEY_RUNTER = 208, KEY_LINKS = 203, KEY_RECHTS = 205

;* 6er-Block
Const KEY_EINFG = 210, KEY_ENTF = 211, KEY_POS1 = 199, KEY_ENDE = 207, KEY_BILDHOCH = 201, KEY_BILDRUNTER = 209

;* Steuertasten
Const KEY_ESC = 1, KEY_RETURN = 28, KEY_BACKSPACE = 14, KEY_TAB = 15, KEY_ROLLEN = 70, KEY_DRUCKEN = 183, KEY_PAUSE = 197, KEY_NUMLOCK = 69, KEY_LEERTASTE = 57, KEY_FESTSTELLTASTE = 58
Const KEY_LSHIFT = 42, KEY_RSHIFT = 54 ;* Shift
Const KEY_LSTRG = 29, KEY_RSTRG = 157 ;* Strg
Const KEY_LALT = 56, KEY_RALT = 184 ;* Alt
Const KEY_LWINDOWS = 219, KEY_RWINDOWS = 220 ;* Windows Tasten

;* Sonderzeichen
Const KEY_SKLAMMERN = 86 ;* < und >
Const KEY_AKZENT = 13 ;* ´ und `
Const KEY_PLUS = 27 ;* + und *
Const KEY_MINUS = 53 ;* - und _
Const KEY_PUNKT = 52 ;* . und :
Const KEY_KOMMA = 51 ;* , und ;
Const KEY_DACH = 41 ;* ^ und °
Const KEY_RAUTE = 43 ;* # und '

;* Windowstasten
Const KEY_RECHNER = 161, KEY_MENU = 221
Const KEY_COMPUTER = 235, KEY_MEDIA = 237

;* Multimediatasten
Const KEY_MEDIA_PLAY = 162, KEY_MEDIA_STOP = 164, KEY_MEDIA_NEXTTRACK = 153, KEY_MEDIA_PREVIOUSTRACK = 144, KEY_MEDIA_MUTE = 160
Const KEY_MEDIA_VOLUMEPLUS = 174, KEY_MEDIA_VOLUMEMINUS = 176

;* Internettasten
Const KEY_INET_HOME = 178, KEY_INET_SUCHEN = 229, KEY_INET_FAVOURITEN = 230, KEY_INET_AKTUALISIEREN = 231, KEY_INET_STOP = 232
Const KEY_INET_VORWAERTS = 233, KEY_INET_ZURUECK = 234, KEY_INET_EMAIL = 236

;* Systemtasten
Const KEY_SYSTEM_POWER = 222, KEY_SYSTEM_SLEEP = 223, KEY_SYSTEM_WAKE = 227

Function GetKeyName$(ScanCode%)
Select ScanCode
Case KEY_0: Return "0"
Case KEY_1: Return "1"
Case KEY_2: Return "2"
Case KEY_3: Return "3"
Case KEY_4: Return "4"
Case KEY_5: Return "5"
Case KEY_6: Return "6"
Case KEY_7: Return "7"
Case KEY_8: Return "8"
Case KEY_9: Return "9"
Case KEY_Q: Return "Q"
Case KEY_W: Return "W"
Case KEY_E: Return "E"
Case KEY_R: Return "R"
Case KEY_T: Return "T"
Case KEY_Z: Return "Z"
Case KEY_U: Return "U"
Case KEY_I: Return "I"
Case KEY_O: Return "O"
Case KEY_P: Return "P"
Case KEY_A: Return "A"
Case KEY_S: Return "S"
Case KEY_D: Return "D"
Case KEY_F: Return "F"
Case KEY_G: Return "G"
Case KEY_H: Return "H"
Case KEY_J: Return "J"
Case KEY_K: Return "K"
Case KEY_L: Return "L"
Case KEY_Y: Return "Y"
Case KEY_X: Return "X"
Case KEY_C: Return "C"
Case KEY_V: Return "V"
Case KEY_B: Return "B"
Case KEY_N: Return "N"
Case KEY_M: Return "M"
Case KEY_OE: Return "Ö"
Case KEY_AE: Return "Ä"
Case KEY_UE: Return "Ü"
Case KEY_SZ: Return "ß"
Case KEY_F1: Return "F1"
Case KEY_F2: Return "F2"
Case KEY_F3: Return "F3"
Case KEY_F4: Return "F4"
Case KEY_F5: Return "F5"
Case KEY_F6: Return "F6"
Case KEY_F7: Return "F7"
Case KEY_F8: Return "F8"
Case KEY_F9: Return "F9"
Case KEY_F10: Return "F10"
Case KEY_F11: Return "F11"
Case KEY_F12: Return "F12"
Case KEY_NUM_0: Return "Numpad 0"
Case KEY_NUM_1: Return "Numpad 1"
Case KEY_NUM_2: Return "Numpad 2"
Case KEY_NUM_3: Return "Numpad 3"
Case KEY_NUM_4: Return "Numpad 4"
Case KEY_NUM_5: Return "Numpad 5"
Case KEY_NUM_6: Return "Numpad 6"
Case KEY_NUM_7: Return "Numpad 7"
Case KEY_NUM_8: Return "Numpad 8"
Case KEY_NUM_9: Return "Numpad 9"
Case KEY_NUM_KOMMA: Return "Numpad Komma"
Case KEY_NUM_MINUS: Return "Numpad Minus"
Case KEY_NUM_PLUS: Return "Numpad Plus"
Case KEY_NUM_MAL: Return "Numpad Mal"
Case KEY_NUM_GETEILT: Return "Numpad Geteilt"
Case KEY_NUM_ENTER: Return "Numpad Enter"
Case KEY_HOCH: Return "Pfeiltaste hoch"
Case KEY_RUNTER: Return "Pfeiltaste runter"
Case KEY_LINKS: Return "Pfeiltaste links"
Case KEY_RECHTS: Return "Pfeiltaste rechts"
Case KEY_EINFG: Return "Einfügen"
Case KEY_ENTF: Return "Entfernen"
Case KEY_POS1: Return "POS1"
Case KEY_ENDE: Return "ENDE"
Case KEY_BILDHOCH: Return "Bildlauf Hoch"
Case KEY_BILDRUNTER: Return "Bildlauf Runter"
Case KEY_ESC: Return "Escape"
Case KEY_RETURN: Return "Return"
Case KEY_BACKSPACE: Return "Backspace"
Case KEY_TAB: Return "Tabulator"
Case KEY_ROLLEN: Return "Rollen"
Case KEY_DRUCKEN: Return "Drucken"
Case KEY_PAUSE: Return "Pause"
Case KEY_NUMLOCK: Return "Numlock"
Case KEY_LEERTASTE: Return "Leertaste"
Case KEY_FESTSTELLTASTE: Return "Feststelltaste"
Case KEY_LSHIFT: Return "Shift links"
Case KEY_RSHIFT: Return "Shift rechts"
Case KEY_LSTRG: Return "Strg links"
Case KEY_RSTRG: Return "Strg rechts"
Case KEY_LALT: Return "Alt links"
Case KEY_RALT: Return "Alt rechts"
Case KEY_LWINDOWS: Return "Windows links"
Case KEY_RWINDOWS: Return "Windows rechts"
Case KEY_SKLAMMERN: Return "<"
Case KEY_AKZENT: Return "Akzent"
Case KEY_PLUS: Return "Plus"
Case KEY_MINUS: Return "Minus"
Case KEY_PUNKT: Return "Punkt"
Case KEY_KOMMA: Return "Komma"
Case KEY_DACH: Return "Dach"
Case KEY_RAUTE: Return "Raute"
Case KEY_RECHNER: Return "Calculator"
Case KEY_MENU: Return "Menu"
Case KEY_COMPUTER: Return "Computer"
Case KEY_MEDIA: Return "Media"
Case KEY_MEDIA_PLAY: Return "Play/Pause"
Case KEY_MEDIA_STOP: Return "Stop"
Case KEY_MEDIA_NEXTTRACK: Return "Next Track"
Case KEY_MEDIA_PREVIOUSTRACK: Return "Previous Track"
Case KEY_MEDIA_MUTE: Return "Mute"
Case KEY_MEDIA_VOLUMEPLUS: Return "Volume+"
Case KEY_MEDIA_VOLUMEMINUS: Return "Volume-"
Case KEY_INET_HOME: Return "Home"
Case KEY_INET_SUCHEN: Return "Suchen"
Case KEY_INET_FAVOURITEN: Return "Favoriten"
Case KEY_INET_AKTUALISIEREN: Return "Aktualisieren"
Case KEY_INET_STOP: Return "Stop"
Case KEY_INET_VORWAERTS: Return "Vorwärts"
Case KEY_INET_ZURUECK: Return "Zurück"
Case KEY_INET_EMAIL: Return "EMail"
Case KEY_SYSTEM_POWER: Return "Power"
Case KEY_SYSTEM_SLEEP: Return "Sleep"
Case KEY_SYSTEM_WAKE: Return "Wake"

Default: Return "unknown ("+ScanCode+")"
End Select
End Function

Function GetScanCode()
Local i
For i=0 To 237
If KeyHit(i) Then Return i
Next
Return False
End Function


Hier noch die Tasten.decls
Ablegen unter "Blitz3D\userlibs\Tasten.decls" und die IDE neu Starten / für IDEal "Settings -> Preferences-> Refresh Definitions" wählen.
Damit werden die Konstanten & Funktionen hervorgehoben.

Code: [AUSKLAPPEN]
.lib " "

KEY_0( )
KEY_1( )
KEY_2( )
KEY_3( )
KEY_4( )
KEY_5( )
KEY_6( )
KEY_7( )
KEY_8( )
KEY_9( )
KEY_Q( )
KEY_W( )
KEY_E( )
KEY_R( )
KEY_T( )
KEY_Z( )
KEY_U( )
KEY_I( )
KEY_O( )
KEY_P( )
KEY_A( )
KEY_S( )
KEY_D( )
KEY_F( )
KEY_G( )
KEY_H( )
KEY_J( )
KEY_K( )
KEY_L( )
KEY_Y( )
KEY_X( )
KEY_C( )
KEY_V( )
KEY_B( )
KEY_N( )
KEY_M( )
KEY_OE( )
KEY_AE( )
KEY_UE( )
KEY_SZ( )
KEY_F1( )
KEY_F2( )
KEY_F3( )
KEY_F4( )
KEY_F5( )
KEY_F6( )
KEY_F7( )
KEY_F8( )
KEY_F9( )
KEY_F10( )
KEY_F11( )
KEY_F12( )
KEY_NUM_0( )
KEY_NUM_1( )
KEY_NUM_2( )
KEY_NUM_3( )
KEY_NUM_4( )
KEY_NUM_5( )
KEY_NUM_6( )
KEY_NUM_7( )
KEY_NUM_8( )
KEY_NUM_9( )
KEY_NUM_KOMMA( )
KEY_NUM_MINUS( )
KEY_NUM_PLUS( )
KEY_NUM_MAL( )
KEY_NUM_GETEILT( )
KEY_NUM_ENTER( )
KEY_HOCH( )
KEY_RUNTER( )
KEY_LINKS( )
KEY_RECHTS( )
KEY_EINFG( )
KEY_ENTF( )
KEY_POS1( )
KEY_ENDE( )
KEY_BILDHOCH( )
KEY_BILDRUNTER( )
KEY_ESC( )
KEY_RETURN( )
KEY_BACKSPACE( )
KEY_TAB( )
KEY_ROLLEN( )
KEY_DRUCKEN( )
KEY_PAUSE( )
KEY_NUMLOCK( )
KEY_LEERTASTE( )
KEY_FESTSTELLTASTE( )
KEY_LSHIFT( )
KEY_RSHIFT( )
KEY_LSTRG( )
KEY_RSTRG( )
KEY_LALT( )
KEY_RALT( )
KEY_LWINDOWS( )
KEY_RWINDOWS( )
KEY_SKLAMMERN( )
KEY_AKZENT( )
KEY_PLUS( )
KEY_MINUS( )
KEY_PUNKT( )
KEY_KOMMA( )
KEY_DACH( )
KEY_RAUTE( )
KEY_RECHNER( )
KEY_MENU( )
KEY_COMPUTER( )
KEY_MEDIA( )
KEY_MEDIA_PLAY( )
KEY_MEDIA_STOP( )
KEY_MEDIA_NEXTTRACK( )
KEY_MEDIA_PREVIOUSTRACK( )
KEY_MEDIA_MUTE( )
KEY_MEDIA_VOLUMEPLUS( )
KEY_MEDIA_VOLUMEMINUS( )
KEY_INET_HOME( )
KEY_INET_SUCHEN( )
KEY_INET_FAVOURITEN( )
KEY_INET_AKTUALISIEREN( )
KEY_INET_STOP( )
KEY_INET_VORWAERTS( )
KEY_INET_ZURUECK( )
KEY_INET_EMAIL( )
KEY_SYSTEM_POWER( )
KEY_SYSTEM_SLEEP( )
KEY_SYSTEM_WAKE( )

GetKeyName$( ScanCode% )
GetScanCode%( )


Beispiel
BlitzBasic: [AUSKLAPPEN]
AppTitle("Tastaturkonstanten Beispiel")

Include "Tastaturkonstanten.bb"

Graphics(640,480,0,2)
SetBuffer(BackBuffer())
SeedRnd(MilliSecs())
Local FrameTimer = CreateTimer(60)
ClsColor(255,255,255)
Color(0,0,0)

Local x=320, y=240

Local EineFTaste = Rand(KEY_F1, KEY_F10), EineTaste, Tmp

Repeat
Cls

If KeyDown(KEY_LINKS) Then x=x-1
If KeyDown(KEY_RECHTS) Then x=x+1
If KeyDown(KEY_HOCH) Then y=y-1
If KeyDown(KEY_RUNTER) Then y=y+1

Oval(x-10, y-10, 20, 20)

Text(320,450,"Drücke die Taste "+GetKeyName(EineFTaste),True, True)
If KeyHit(EineFTaste) Then Color(Rand(0, 128), Rand(0, 255), Rand(0, 128))

Text(320,465,"Zuletzt gedrückt wurde: "+GetKeyName(EineTaste),True, True)
Tmp = GetScanCode() : If Tmp <> 0 Then EineTaste = Tmp

Flip(0)
WaitTimer(FrameTimer)
Until KeyHit(KEY_ESC)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Sa, Jan 22, 2011 16:27, insgesamt 2-mal bearbeitet

skey-z

BeitragMo, Dez 27, 2010 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
schön, dass du dir die Arbeit gemacht hast, habe auch schon das ein oder andere mal darüber nachgedacht.

Sinnvoll ist es aber nur bedingt, da man nie alle Tasten für ein Programm brauchen wird und es den Speicher nur vollmüllt.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Macintosh

BeitragMo, Dez 27, 2010 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm die par integer, werden ja wohl nicht viel speicher brauchen :D

Thunder

BeitragMo, Dez 27, 2010 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Integer-Konstanten landen nicht direkt im Speicher. Der Compiler ersetzt afaik einen Konstantennamen durch seinen Wert. Daher verbraucht man mit Konstanten genauso viel Speicher wie ohne.

Die Liste ist sicher nützlich! Aber wieso hast du nicht gleich die BlitzMax-Namen verwendet?

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Xeres

Moderator

BeitragMo, Dez 27, 2010 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Gerechtfertigte Frage.
BlitzBasic Besitzer haben die Tendenz (noch) nicht so viel Englisch Kenntnisse zu besitzen (zumal wir ein deutsches Forum mit deutscher OH bieten), also sind manche Konstanten eingedeutscht.
Natürlich hilft es auch, das ich notorisch Denglischen Code schreibe...
Dazu kommt, das die BlitzMax Namen auch noch von einem US-Keylayout ausgehen. KEY_AE ist logischer als ...KEY_OPENBRACKET...???
Ä = "Quote"

Wer andere Versionen sehen möchte, möge sie posten / mir eine PM zum einpflegen in den 1. Post schreiben.

Kritik & Anregungen wie immer willkommen und erwünscht.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Sa, Jan 22, 2011 17:03, insgesamt einmal bearbeitet

ZaP

BeitragDi, Dez 28, 2010 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast bei GetKeyName() im Default-Zweig vom Select einen Typo drin Smile
Starfare: Worklog, Website (download)

JimBobBalou

BeitragSa, Jan 22, 2011 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Da fehlt eine Media-Taste, oder?
Previous Track = 144

Xeres

Moderator

BeitragSa, Jan 22, 2011 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter Scancodes ist die Taste nicht gelistet und da meine Tastatur bei Media- und Internetblock nur 128 zurück gibt, kann ich dazu nichts sagen...
KEY_MEDIA_PREVIOUSTRACK = 144 hinzugefügt.
GetKeyName gibt bei Default den Unbekannten Scancode mit an.

Danke für den Hinweis!
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

PacMani

BeitragSa, Jan 22, 2011 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafür sollte ich auch mal ein Programm schreiben, mit dem jeder seine Formatierungsrichtlinien bei Variablennamen einhalten kann.
Ich schreibe nämlich lieber KeyF1, KeyArrowLeft etc.

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group