Autor Thema: schei** Tastatur  (Gelesen 4465 mal)

DaCodaaa

  • Gast
Gespeichert
« am: 23. August 2009, 16:09 »
Ich versuche jetzt seit längerem einen Tastaturtreiber zu schreiben. Auf Interrupts von der Tastatur reagiert der auch schon nur kommen nicht wirklich brauchbare zeichen raus :x.

Meine Frage:

Wo bekomme ich eine Tabelle her wo drinsteht welche Taste auf einer deutschen Tastatur welchen scancode ausgibt(quasi wie habt ihr das mit der Tastatur gemacht).

Ich hoffe ihr konnt mir helfen.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 23. August 2009, 18:57 »
In unserem Wiki ist im Tastaturartikel http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html verlinkt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

osDeveloper93

  • Beiträge: 31
    • Profil anzeigen
    • Homepage
Gespeichert
« Antwort #2 am: 23. August 2009, 19:55 »
Ich habs mit der hilfe dieser Seite gemacht.
Die einzigen probleme haben das ß, ^ und noch einpaar andere Zeichen gemacht.
Für diese Zeichen hab ich keine Scancodes gefunden und wenn dann haben sie nicht funktioniert.
Pear3DEngine - a modular opensource game engine:
http://sourceforge.net/projects/pear3dengine/

"Ein glücklicher Mensch ist zu zufrieden mit der Gegenwart, um sich viele Gedanken über die Zukunft zu machen." - Albert Einstein (September 1896)

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 23. August 2009, 20:15 »
Man kann die Scancodes auch einfach durch Probieren rausbekommen: im Tastaturhandler den Scancode ausgeben lassen -> Taste drücken -> Schlussfolgerung: ausgebener Scancode gehört zu Taste

Ich weiß ich bin genial.
Dieser Text wird unter jedem Beitrag angezeigt.

osDeveloper93

  • Beiträge: 31
    • Profil anzeigen
    • Homepage
Gespeichert
« Antwort #4 am: 24. August 2009, 00:34 »
So hab ich es auch am Anfang gemacht.
Später jedoch war ich, als ander Scancodes kammen wenn ich dabei zb. strg drückte, sehr verwirt.
Nach dem Artikel (und ein paar anderen) verstandt ich es.

Ich empfehle den Artikel.
Aber das muss du selbst entscheiden.
Pear3DEngine - a modular opensource game engine:
http://sourceforge.net/projects/pear3dengine/

"Ein glücklicher Mensch ist zu zufrieden mit der Gegenwart, um sich viele Gedanken über die Zukunft zu machen." - Albert Einstein (September 1896)

DaCodaaa

  • Gast
Gespeichert
« Antwort #5 am: 27. August 2009, 15:39 »
Ok, danke, aber ich habe etwas besseres gefunden:

http://www.barcodeman.com/altek/mule/kbemulator/
 :-D

Das zeigt einem welche scancodes eine echte Tastatur ausgeben würde, wenn auf eine bestimme Taste gedrückt wurde.

Alerdings ist alles Scancode set 2. Ich wollte sowieso irgendwann mal in das set 2 wechseln, aber ich weiss nicht wie man das macht. :-(

hat jemand von euch sowas schonmal gemacht und kann mir helfen?
« Letzte Änderung: 27. August 2009, 17:39 von DaCodaaa »

DaCodaaa

  • Gast
Gespeichert
« Antwort #6 am: 29. August 2009, 15:03 »
Ich habe einen Artikel gefunden, wo erklärt wurde, wie man feststellt, welche sets die Tastatur unterstützt, und wie man in unterschiedliche Scancode sets wechselt. Allerdings wurde auch erwähnt, dass die Scancodes dann in set 1 übersetzt werden, aber nicht wie man das absellt. Wie mache ich das? :?

DaCodaaa

  • Gast
Gespeichert
« Antwort #7 am: 29. August 2009, 20:44 »
Bin ich etwa der erste, der auf die Idee kommt alle 104 Tasten meiner Tastatur anzusprechen?

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 30. August 2009, 09:50 »
Ich denke nicht, aber es könnte schon sein, dass bisher keine solche Schwierigkeiten damit hatte. ;) Wobei ich annehme, die meisten hier benutzen 105-Tasten-Tastaturen.

Also, Standard-Scancodeset ist in allen relevanten Fällen Nummer 2, wenn ich mich richtig erinnere. Im allgemeinen nimmt man dann eine der vielen Tabellen im Internet her und benutzt die einfach. Wenn man damit nicht hinkommt, gibt man einfach den Scancode bei jedem Tastendruck aus und bastelt sich das fehlende Zeug von Hand zusammen.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

DaCodaaa

  • Gast
Gespeichert
« Antwort #9 am: 30. August 2009, 10:37 »
Ja, dass der Scancodeset 2 bei den meisten tastaturen Standard ist weiss ich schon, aber der kbc Wandelt das Standartmässig in set 1 um und deaktiviert somit einige Tasten, die es bei der XT Tastatur nicht gab.
Ich möchte ja nicht mehr wissen, wie ich das in der Tastatur umschalte, darüber habe ich nämlich schon viele Artikel gefunden, aber wie man den "Übersetzer" ausmacht, habe ich nirgendwo zu lesen bekommen. :-(

Klar, ich meinte natürlich eine Deutsche 105 tasten Tastatur. :oops:
« Letzte Änderung: 30. August 2009, 10:39 von DaCodaaa »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 30. August 2009, 12:27 »
Das mit der Umwandlung in Scancodeset 1 wäre mir neu. Von welchen Tasten genau redest du? Ich bin mir eigentlich ziemlich sicher, dass der tyndur-Tastaturtreiber da nichts umschaltet und trotzdem habe ich noch keine Tasten vermisst.

Im Wiki steht aber auch der passende Befehl, um das Scancodeset zu wechseln.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

DaCodaaa

  • Gast
Gespeichert
« Antwort #11 am: 30. August 2009, 13:34 »
Auf einer XT tastatur waren 83-84 tasten. die Steuertasten, wie "druck", "pause", "pos1", etc. waren nicht vorhanden, aber irgendwann wird es wohl nützlich sein und ich möchte mich später nicht nochmal gross um die Tatstatur kümmern.

Eine AT Tastatur ist noch abwärtskompatibel zu einer XT Tastatur. Das heisst sie ist anfangs im Scancodeset 1, damit dos oder ältere systeme damit funktionieren. Die PS/2 Tastatur ist nurnoch abwärtskompatibel zur AT tastatur. Sie unterstützt das Scancodeset 3, welches etwas Strukturierter ist als das der AT.
Allerdings haben sich die Computerfirmen wohl gedacht, dass sie es den OS programmierern doch lieber noch etwas schwieriger machen, und den kbc wieder ins Scancodeset 1 übersetzen lassen, damit Dos doch noch drauf läuft. :-)

Kann gut sein, dass Tyndur keine Umschaltung braucht, aber ich persönlich fänd es nacher toll Tasten wie "entf" und "druck" als hotkeys zu verwenden.

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #12 am: 30. August 2009, 13:57 »
týndur unterstützt doch aber solche Tasten?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #13 am: 03. September 2009, 12:53 »
Meinem Code nach zu urteilen ist es Command 0x60 mit Parameter 0x87.

// Disable scancode set 1 translation
command(0x60, 0x87);

[...]

bool controller::command(uint8_t cmd)
{
  if (wait_ready() == false)return false;
  libarch::out8(command_port, cmd);
  return true;
}

bool controller::command(uint8_t cmd, uint8_t param)
{
  if (command(cmd) == false)return false;
  if (wait_ready() == false)return false;
  libarch::out8(data_port, param);
  return true;
}
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

DaCodaaa

  • Gast
Gespeichert
« Antwort #14 am: 03. September 2009, 15:27 »
Danke, genau sowas habe ich gesucht! :-D

 

Einloggen