Pages: [1]   Go Down
Author Topic: Frage zum Leonardo, Keyboard.press() etc.  (Read 704 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

lt. Online-Doku kann man Klartext an die Methode press/unpress übergeben. Das bedeutet doch, dass man, wenn ein deutsches Layout am PC eingestellt ist, z.B. nach press('ß') ein Minus bekommt. Richtig?

Gibt's die Möglichkeit, direkt USB HID Codes anzugeben? Derzeit benutze ich einen Duemillanove mit USB-Shield und der AVR-USB Library. Da hier hin und wieder das Timing nicht hinhaut (der Arduino muss noch einen Tastaturcontroller bedienen), würde ich es gerne mit dem Leonardo versuchen und möchte sowenig Änderungen am Sketch vornehmen wie möglich.

Danke!
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4702
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Richtig?

Leider falsch. Es ist zwar richtig, dass man Klartext-Buchstaben übergeben kann, aber das geht nur für die ASCII-Zeichen. Alle Umlaute und deutsche Sonderzeichen (ß) sind nicht im ASCII-Zeichenvorrat enthalten. Auch weden die Zeichen nur auf die amerikanische Tastaturbelegung umgerechnet. Du kannst das aber ändern, die entsprechende Tabelle ist in hardware/arduino/cores/arduino/HID.cpp enthalten. Du kannst mit den gleichen Methoden Deine eigene press-Routine schreiben, die dann deutsche Zeichen z.B. im ISO-8859-15-Encoding oder gar in UTF-8 entgegennimmt. Beachte einfach die Modifiers, die sind momentan im oberen Bereich einkodiert, das müsstest Du ändern.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prima, danke Pylon.

Die Methoden press und release habe ich umgeschrieben, so dass sie HID Codes und Modifier direkt übernehmen. USBAPI.h ist entsprechend geändert. Offenbar muss nun eine Library neu übersetzt werden fehlt noch irgendwo eine Deklaration, und da stehe ich schon wieder auf dem Schlauch :-(.

Tipps?
« Last Edit: August 15, 2012, 04:59:24 am by thradtke » Logged

Germany
Offline Offline
Full Member
***
Karma: 10
Posts: 221
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi thradtke,

ich habe mich damit auch mal auseinander gesetzt http://arduino.cc/forum/index.php/topic,108717.0.html da müssten auch noch die aktuellesten Änderungen von mir drin sein, mich würde interessieren wie du Änderungen vorgenommen hast.

Grüsse

Markus
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin Markus,

ich übergebe einfach nur Key und Modifier und lasse diese Codes direkt in den Report übernehmen. Beim Modifier ist's ja einfach, der wird dazuge-OR-t bzw. dazuge-NAND-t (unpress). Den Keyeintrag habe ich gelassen, wie er war (Test auf doppelte Eintrage z.B.).

So *müsste* es funktionieren. Compilieren konnte ich das hier inzwischen, aber mein Arduino ist grade nicht in Reichweite. Heute abend weiß ich mehr und gebe Rückmeldung.

VG

Thomas

Edit: Das Ganze ist gedacht, eine weitgehend anders organisierte Tastatur (Amiga) an den Raspberry Pi anzuschließen. Ich habe also eigene Tabellen, um von Amiga Key-Codes zu den erforderlichen HID-Codes zu kommen. Und ja, man muss dabei um die Ecke denken, insbesondere wenn man das deutsche Layout aktiviert hat. Es funktioniert aber, was diese Logik angeht, bereits mit einem nicht-Leonardo. Der Haken: Die gleichen Tabellen funktionieren nicht mehr, wenn das US Layout aktiv ist. Das ist aber ein Fehler, der aufgrund der unterschiedlichen Belegung unvermeidlich und wenig tragisch ist.
« Last Edit: August 15, 2012, 07:53:28 am by thradtke » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok - was geht hier vor? Der identische Sketch lässt sich unter Arduino-1.0.1 auf einem i5/Win7Pro compileren, bricht aber unter der gleichen Distribution (kopiert) auf einem i3/Win7 HomePrem. mit folgendem Fehler ab:

C:\Program Files (x86)\arduino-1.0.1\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=101 -IC:\Program Files (x86)\arduino-1.0.1\hardware\arduino\cores\arduino -IC:\Program Files (x86)\arduino-1.0.1\hardware\arduino\variants\leonardo C:\Users\Thomas\AppData\Local\Temp\build6000611932258292467.tmp\amiga_leo_1.cpp -o C:\Users\Thomas\AppData\Local\Temp\build6000611932258292467.tmp\amiga_leo_1.cpp.o
amiga_leo_1.cpp: In function 'void setup()':
amiga_leo_1:71: error: 'class Keyboard_' has no member named 'press2'

Ich hatte auf dem i3 vorher Arduino-1.0 benutzt, auf dem i5 nicht. Liegt's daran? Wenn ja, wie räume ich auf?

Edit: Grade alles rübergeschoben in die VBox, Win2003 - funktioniert soweit. Toll.
« Last Edit: August 15, 2012, 12:06:56 pm by thradtke » Logged

Pages: [1]   Go Up
Jump to: