Treiberprogrammierung - Tastatureingaben



  • Hallo zusammen,

    Ich beschäftige mich im Rahmen einer Uni-Vorlesung mit Linux-Gerätetreibern. Genau genommen soll am Ende ein kleines Projekt entstehen, dass mit einem eigenen Treiber etwas macht.
    Da kamen mir Ideen wie:

    • Tastatur:

    • Taste lesen -> dann entsprechenden Beep-Sound ausgeben

    • Taste lesen ->, wenn Pfeil-Taste, dann Bewegung an Maus-Treiber weiterreichen (Tastatur-Maus-Wrapper)

    • Taste lesen -> andere Taste simulieren

    • Mitlesen von Tastatureingaben, um Tastatur-Makros zu erzeugen

    • Maus:

    • Maus-Bewegungen in Tastatureingaben wrappen

    • Maus-Klick als Enter-Taste ansehen

    Ich habe mich bereits etwas eingelesen (Quelle: "Linux-Treiber entwickeln" von Jürgen Quade und Eva-Katharina Kunst) und angefangen kleine (Character-/Block-)Treiber in Form von Modulen zu schreiben. 💡
    Diese sind schon in der Lage sich beim Kernel anzumelden, Gerätedateien anzulegen und erste Aktionen mit Read- und Write-Funktionen auszuführen. 👍

    Die "Basis" ist also schon da. Jetzt soll es ans Eingemachte gehen. Mein Problem ist, dass ich nicht recht weiß, wo ich anfangen soll.
    Wie spreche ich eine Tastatur denn nun an?
    Kann ich mit Symbol-Exports Eingaben einer Tastatur/Maus an eine Maus/Tastatur weitergeben?
    Ich habe beim Suchen im Netz immer wieder gelesen, dass Eingabegeräte sogenannte HID-Geräte sind und deren Programmierung schwierig sei. Wo kann ich mich einlesen und wie verbinde ich (m)einen Treiber damit?

    Ich würde mich freuen, wenn ihr mir helfen könntet.



  • Stöber doch einfach etwas im Linux Source rum.



  • Habe von Linux treibern keine Ahnung, jedoch etwas von der Hardware.
    Bei PC Tastaturen gibt zwei Varianten welche relevant sind:

    USB Tastatur
    PS/2 Tastatur (mitlerweile seltener)

    Der Linux Kernel hat für beide Schnitstellen, also USB controller und PS/2 controller eigene Treiber.
    Diese könntest du mit deinem Tastatur Treiber ansprechen.

    Oder du baust dir etwas, was direkt den PS/2 controller anspricht.
    Es gibt z.b. auf der osdev wiki recht gute informationen. (http://wiki.osdev.org/"8042"_PS/2_Controller)
    Das dürfte jedoch sehr problematisch sein, da der PS/2 controller noch sehr viele anderen sachen als PS/2 Schnitstelle ansprechen macht.

    Edit: Eventuell noch relevant wenn du über den linux PS/2 treiber gehst: http://wiki.osdev.org/PS2_Keyboard



  • Osbios schrieb:

    Bei PC Tastaturen gibt zwei Varianten welche relevant sind:

    USB Tastatur
    PS/2 Tastatur (mitlerweile seltener)

    Der Linux Kernel hat für beide Schnitstellen, also USB controller und PS/2 controller eigene Treiber.
    Diese könntest du mit deinem Tastatur Treiber ansprechen.

    Ich glaube, das wäre das Beste für mich. Quasi den USB-Controller-Treiber abfragen. Gibt es denn Symbole und Exports im USB-Controller Treiber bzw im USB Keyboard-Treiber, die man mit einem anderen Modul laden könnte?

    Habe bereits im usbkbd Treiber von Vojtech Pavlik nachgeschaut, aber keine Symbolexports im Quelltext finden können.

    MfG,
    Quellcode


Anmelden zum Antworten