PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastatur



Zapo.
01.02.2008, 20:56
hey leute,

habe meinem AVR (ATMega8) 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:


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


danke schonmal für eure Antwort

Zapo.

deSilva
01.02.2008, 23:07
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...

stefan_Z
02.02.2008, 00:04
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...

Zapo.
02.02.2008, 11:26
also ganz unten im Quellcode habe ich folgendes angegeben:



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


weiß leider nicht wie ich das deuten soll, kann!

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.

Robin1508
04.02.2008, 12:59
Also wenn ich das nicht komplett falsche Verstanden haben ist das eine ASCII Tabelle.
Das wäre ein Versuch wert.


89 = Y
121 = y

und

90 = Z
122 = z


Versuchs mal indem du diese Zahlen einfach austauscht. Also 89 mit 90 tauschen und 121 mit 122 tauschen.

Könnte funktionieren ;)

Gruß Robin

Zapo.
04.02.2008, 17:32
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.

stefan_Z
04.02.2008, 18:55
Schau mal in der Bascom Hilfe nach der entsprechenden Tabelle - da sind die Make- und Break-Codes drin. Damit ergibt sich das dann...

Zapo.
04.02.2008, 19:01
sorry stefan_Z ... unter was soll ich da explizit suchen? - bascom hilfe ist groß!
und gesucht aber nix gefunden habe ich schon....

Zapo.

mull
10.03.2008, 21:37
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

mull
11.03.2008, 10:17
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.




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

stefan_Z
15.03.2008, 15:36
Make und Break weren benötigt, um zu erkennen, welche Tasten gedrückt und welche wann losgelassen werden.
Drücke ich z.B. SHIFT wird Make_xyz gesendet - und zwar solange, bis ichs wieder loslasse. Wenn ichs dann loslasse, dann sendet er Brake_xzy, so dass der Rechner weiß: Die folgenden Buchstaben sind nicht mehr groß zu schreiben.

mull
15.03.2008, 15:42
Ahsooo, okay, dann bin ich um die Wissenslücke auch wieder schlauer...
Danke