Hi, ich versuche gerade, in vim die <Alt> Taste zum Laufen zu bekommen. Dabei fällt mir auf, dass vim in einem xterm ein anderes Verhalten zeigt als in der KDE Konsole oder auf einem tty. Daher meine Frage: Welche Ebenen durchläuft ein Tastendruck, bis er bei der Applikation ankommt? -Was sendet die Tastatur überhaupt? An welcher Stelle wird jede Taste in ein Zeichen umgewandelt? -Wenn ich auf einem tty bin, wer fängt Tastenkombinationen wie Alt+F1 etc. ab, ist das direkt der Kernel? -Mit wem ist der Terminalemulator auf einem tty verbunden, also woher bekommt er die Tastatureingaben und an wen liefert er die Zeichen aus? -Müssen grundsätzlich alle Tastatureingaben erstmal durch die Shell, wenn ein Programm in der Shell gestartet wurde? Könnte also die Shell grundsätzlich bestimmte Eingaben abfangen und nicht durchreichen?
Hat jemand Aspirin dabei, mir brummt der Schädel.
Wenn du dich innerhalb X befindest, mach mal ein Terminal auf und probiere 'xev'. Das zeigt dir alle eingehenden Events an.
tty schrieb: > -Was sendet die Tastatur überhaupt? An welcher Stelle wird jede Taste in > ein Zeichen umgewandelt? Das ist schon eine falsche Frage - es gibt kein Zeichen Alt (ebensowenig wie Shift oder Control). Die Sache ist deutlich komplizierter, eigentlich zu kompliziert um es hier zu erklären. Nur als Beispiel: wenn du die Tasten Alt und Ctrl und M gleichzeitig drückst, entsteht im Lauf der weiteren Verarbeitung das Zeichen µ. Gruss Reinhard
tty schrieb: > Hi, ich versuche gerade, in vim die <Alt> Taste zum Laufen zu bekommen. > Dabei fällt mir auf, dass vim in einem xterm ein anderes Verhalten zeigt > als in der KDE Konsole oder auf einem tty. > > Daher meine Frage: Welche Ebenen durchläuft ein Tastendruck, bis er bei > der Applikation ankommt? Alle Angaben ohne Gewähr, ist relativ kompliziert... > > -Was sendet die Tastatur überhaupt? Key Codes. Am besten lernst du dies wenn du dich mit V-USB und dem Keyboard Beispiel. Wobei die Shift CTRL etc. Tasten "Modifier" sind, und mit anderen Tasten gleichzeitig gedrückt werden können. z.B. eine Tastenkombination mit <A>+<B> würde von der Tastatur her nicht funktionieren. Es wird jedoch ein Keyboard Event generiert wenn du die Shift Taste drückst, damit startet man ja unter Windows sogar irgendwelche Eingabehilfen. > An welcher Stelle wird jede Taste in > ein Zeichen umgewandelt? dein X-Server, bzw. GTK / KDE kann da auch noch mitwirken... Daher gibt es warscheinlich bei Xterm / KDE Terminal Unterschiede... > -Wenn ich auf einem tty bin, wer fängt Tastenkombinationen wie Alt+F1 > etc. ab, ist das direkt der Kernel? Gute Frage, ich glaube nicht, eher initd oder so. Die <sys rq> (printscreen) Kombinationen mit denen du z.B. auch den Init killen kannst sind die einzigen die direkt im Kernel gehandelt werden. IMHO > -Mit wem ist der Terminalemulator auf einem tty verbunden, also woher > bekommt er die Tastatureingaben und an wen liefert er die Zeichen aus? /dev/stdin? Du musst ja auch das Keyboard Layout zwei mal festlegen, einmal für die GUI und ein mal für die ttys. > -Müssen grundsätzlich alle Tastatureingaben erstmal durch die Shell, > wenn ein Programm in der Shell gestartet wurde? Ja, die Shell leitet aber fast alles weiter. Ein Prozess (z.B. grep) erhält eigentlich nur 3 File Deskriptoren, stdin, stdout, stderr. Die müssen auch nicht von einer Tastatur kommen, auch wenn das oft der Fall ist. Könnte also die Shell > grundsätzlich bestimmte Eingaben abfangen und nicht durchreichen? Natürlich. Du kannst auch eine eigene "Shell" schreiben, also eine Applikation die eine andere Applikation ausführen kann. Du kannst z.B. "a" nicht weiterleiten, und das mit einer anderen Funktion versehen. Wenn du wirklich interessiert bist, schaue dir den den Quellcode an;-) mfg Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.