Wenn Du nicht in die Biblotheks-Routinen eingreifen willst oder kannst, dann kapsele die Routine GetAtKBD doch einfach durch eine weitere eigene (ein "Wrapper"), in der Du diese (und andere) Vertauschungen vornimmst...
hey leute,
habe meinem AVR (ATMega nun eine Tastatur spendiert..
funktioniert auch ziemlich gut mit dem einlesen der ersten 127 Tasten!
was mich stört ist das die Tastatur "amerikanischer Standard" hat.
das heißt:
es ist die z und die y Taste vertauscht usw...
gibt es eine Möglichkeit dies über einen Bascom Befehl auf "deutsche Art und Weise" umzustellen?
benutze den einfachen Code:
danke schonmal für eure AntwortCode:Config Keyboard = Pinc.4 , Data = Pinc.5 , Keydata = Keydata Dim B As Byte Do T = Getatkbd() If T > 0 Then Print T ; Chr(t) End If Loop
Zapo.
Wenn Du nicht in die Biblotheks-Routinen eingreifen willst oder kannst, dann kapsele die Routine GetAtKBD doch einfach durch eine weitere eigene (ein "Wrapper"), in der Du diese (und andere) Vertauschungen vornimmst...
Man kann die Keydata umschreiben.. irgendwo hier oder bei MCS im Forum wird das auch erklärt. So aus dem Kopf weiß ichs aber nicht.
Damit kann man danna uch die F-Tasten und ähnliches belegen...
also ganz unten im Quellcode habe ich folgendes angegeben:
weiß leider nicht wie ich das deuten soll, kann!Code:Keydata: ' Shift-Taste nicht gedrückt Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0 Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0 Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0 Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0 Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0 Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0 Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0 ' Shift-Taste gedrückt Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0 Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0 Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0 Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0 Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0 Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0 Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
wenn mir vielleicht jemand sagen würde vertausche einfach diesen und diesen Wert und dann passt das wäre das für mich ebenfalls ausreichend!
Zapo.
Also wenn ich das nicht komplett falsche Verstanden haben ist das eine ASCII Tabelle.
Das wäre ein Versuch wert.
Versuchs mal indem du diese Zahlen einfach austauscht. Also 89 mit 90 tauschen und 121 mit 122 tauschen.Code:89 = Y 121 = y und 90 = Z 122 = z
Könnte funktionieren
Gruß Robin
ja, so hats funktioniert!!!
verstehe die Tabelle trotzdem noch nicht ganz...
in jeder Zeile stehen 16 Werte - also Hexadezimal nummeriert - 00..F
die Werte selbst sind in Dezimalschreibweise oder aber in Hex anzugeben und durch ein komma zu trennen.
soweit mein Durchblick.!!!!!!!!
wenn ich nun weitere Taste hinzufügen möchte müsste ich ja wissen an welche stelle ich den Dezimalwert schreiben soll um das gewünschte Zeichen zu erhalten... also gibts wohl noch eine Tabelle in der stehen muss welche Position welchem Taste zuzuordnen ist....
oder?
wie und wo komme ich da ran?
Zapo.
Schau mal in der Bascom Hilfe nach der entsprechenden Tabelle - da sind die Make- und Break-Codes drin. Damit ergibt sich das dann...
sorry stefan_Z ... unter was soll ich da explizit suchen? - Bascom hilfe ist groß!
und gesucht aber nix gefunden habe ich schon....
Zapo.
unter getatkbd und sendscankbd steht was , aber ich hab das immernoch nicht so ganz geschnallt, wofür steht das Make und wofür das Break ?
Grüße
Okay, so wie oben beschrieben gehts halt einwandfrei.
Da ich per USB am Rechner angeschlossen bin sind die Print-Anweisungen als " print #4, chr(b) " also umändern in " print chr(b) "
Bei mir funktioniert das kleine Keypad am Atmel RN2650 tadellos.
Grüße.
Code:Config Keyboard = Pind.2 , Data = Pind.4 , Keydata = Keydata 'Keyboard = Clock Dim B As Byte Print #4 , "Eingabetest von PC-AT-Tastatur" Do B = Getatkbd() ' Abfrage der Tastatur If B > 0 Then Print #4 , Chr(b) End If Loop End Keydata: ' Shift-Taste nicht gedrückt Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0 Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0 Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0 Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0 Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0 Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0 Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0 ' Shift-Taste gedrückt Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0 Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0 Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0 Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0 Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0 Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0 Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
Lesezeichen