Ich möchte prüfen, ob der Benutzer die SHIFT Taste gedrückt hat, wenn das Programm startet. (Das heißt, drücken Sie die SHIFT Taste, bevor das Programm gestartet wird.) Es ist ein einfaches Konsolenprogramm, nichts mit X verbunden.
Dies ist vielleicht ähnlich zu Win32 GetKeyboardState()
-Funktion.
Ich möchte wissen, ob ich das machen kann und wie, aber nicht irgendwelche Vor-und Nachteile mit direktem Zugriff auf das Terminal.
Ich denke, es würde einen Weg geben, dies zu tun. Die Sache ist, dass Sie direkt vom Tastaturgerät lesen müssten. Sie würden keine Eingabe vom Terminal erhalten. Ich habe das gleiche Problem. Ich habe ein Programm, das läuft (im Hintergrund) und ich möchte wissen, ob der Benutzer die Umschalttaste gedrückt hält.
Ich glaube, das ist möglich und ein Ort zum Starten könnte / dev / input / by-path / * - kbd.
seinDiese Datei gibt jedes Mal, wenn eine Taste gedrückt wird, eine Eingabe oder, wenn sie gedrückt wird, eine Wiederholung, so dass es sich lohnt, einen Blick darauf zu werfen. (Versuchen Sie cat / dev / input / by-path / * - kbd)
Wenn Sie das herausfinden, würde ich gerne hören, wie Sie es gemacht haben.
Ich habe herausgefunden, wie das geht. Mein Programm ist folgendes:
%Vor%Die Info-Nachricht fehlt (ich bin zu lasy). Aber im Wesentlichen wird das erste Argument mit einer Liste von Schlüsseln verglichen und der entsprechende Schlüsselidentifizierer wird verwendet. Es gibt True zurück, wenn die Taste gedrückt wird, und false, wenn nicht.
Sie müssen den Namen des Tastaturgeräts ändern. Ich kenne keine Möglichkeit, das Standardtastaturgerät zu finden. (Wenn Sie wissen, würde ich gerne hören;))
Das funktioniert wunderbar, ich benutze es, um den Autostart von Xorg zu starten, wenn ich die Shift-Taste gedrückt halte.