Wie sollte man eine Tastatur/Maus/Touchscreen abfragen ...
-
- Beiträge: 298
- Registriert: 16.01.2006 17:44:21
- Lizenz eigener Beiträge: GNU General Public License
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
Danke für die Erklärung zu dem asio das war mir noch nicht alles bekannt.
Ich habe schon ein Eventsystem das hatten wir hier schon mal im Forum besprochen (lange her). Das hatte Dir nicht recht gefallen wollen ich finde es aber gut das möchte ich behalten. Sehe ich das richtig uinput und evdev kann man benutzen um aus dem Userland Nachrichten über den Kernel zwischen Prozessen auszutauschen?
Wenn ich richtig gelesen habe: Wayland verwendet evdev für die Eingabegeräte. Also die unter /dev/input ...
Ich habe schon ein Eventsystem das hatten wir hier schon mal im Forum besprochen (lange her). Das hatte Dir nicht recht gefallen wollen ich finde es aber gut das möchte ich behalten. Sehe ich das richtig uinput und evdev kann man benutzen um aus dem Userland Nachrichten über den Kernel zwischen Prozessen auszutauschen?
Wenn ich richtig gelesen habe: Wayland verwendet evdev für die Eingabegeräte. Also die unter /dev/input ...
- schorsch_76
- Beiträge: 2542
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
Um Nachrichten zwischen Prozessen auszutauschen gibt es:
http://tldp.org/LDP/lpg/node7.html
http://tldp.org/LDP/lpg/lpg.html
EDIT: Ausserdem gibt es auch noch TIPC. Das ist auch im mainline Kernel, ist nur wenig bekannt.
http://www.slideshare.net/JonMaloy/intr ... ng-service
https://en.wikipedia.org/wiki/Transpare ... munication
- Posix Message Queue man 3 mq_send
- Pipes
- Sockets
- Unix Domain Sockets
- Shared Memory
- DBus
- ...
http://tldp.org/LDP/lpg/node7.html
http://tldp.org/LDP/lpg/lpg.html
EDIT: Ausserdem gibt es auch noch TIPC. Das ist auch im mainline Kernel, ist nur wenig bekannt.
http://www.slideshare.net/JonMaloy/intr ... ng-service
https://en.wikipedia.org/wiki/Transpare ... munication
-
- Beiträge: 298
- Registriert: 16.01.2006 17:44:21
- Lizenz eigener Beiträge: GNU General Public License
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
Für was ist dann das uinput gedacht?
DBUS habe ich bisher noch nicht benutzt die anderen kenne ich aber. Stimmt die nimmt man normal für so etwas her.
TIPC kenne ich auch noch nicht klingt aber interessant weil es so wie man es liest weniger Aufwändig ist als eine Verbindung über Domainsockets mit TCP und man kann aber weiter die Socket Schnittstelle verwenden.
DBUS habe ich bisher noch nicht benutzt die anderen kenne ich aber. Stimmt die nimmt man normal für so etwas her.
TIPC kenne ich auch noch nicht klingt aber interessant weil es so wie man es liest weniger Aufwändig ist als eine Verbindung über Domainsockets mit TCP und man kann aber weiter die Socket Schnittstelle verwenden.
- schorsch_76
- Beiträge: 2542
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
uinput ist dafür da, wenn du bsp eine Touch Screen Treiber daemon schreibst, dass du die Maus Position schicken kannst Du lannst damit auh per Programm die Maus bewegen, Klicks auslösen etc pp.
-
- Beiträge: 298
- Registriert: 16.01.2006 17:44:21
- Lizenz eigener Beiträge: GNU General Public License
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
Beim lesen von stdin bekommt man die Daten erst wenn die Returntaste betätigt wurde. Das scheint hier das Standard verhalten zu sein. Das ist jetzt für mein vorhaben nicht gut geeignet.
Das mit den Kernel Events liefert mehrer Events pro Tastendruck das ist so Ok für meine Anwendung. Aber diese Scancodes haben nicht wirklich etwas mit einem Zeichensatz oder dem Tastatur Layout. Wenn man das alles selber konvertieren muss ist es schon ein bisschen Mühsam. Aber wie es aussieht der einzige weg an jeden einzelnen Tastendruck zu kommen.
So habe ich das jetzt mal zu experimentieren gemacht:
Das mit den Kernel Events liefert mehrer Events pro Tastendruck das ist so Ok für meine Anwendung. Aber diese Scancodes haben nicht wirklich etwas mit einem Zeichensatz oder dem Tastatur Layout. Wenn man das alles selber konvertieren muss ist es schon ein bisschen Mühsam. Aber wie es aussieht der einzige weg an jeden einzelnen Tastendruck zu kommen.
So habe ich das jetzt mal zu experimentieren gemacht:
Code: Alles auswählen
unsigned char Keyboard::KernelEventRead (void)
{
ssize_t rcRead;
struct input_event eventKeyboard;
//while (1)
{
rcRead = read (idIntKeyboard, &eventKeyboard, sizeof eventKeyboard);
if (rcRead == (ssize_t) -1)
{
return 0;
}
else
if (rcRead != sizeof eventKeyboard)
{
return 0;
}
}
// Prüfen ob es ein Tastencode ist
if (eventKeyboard.type == EV_KEY)
{
if (eventKeyboard.value == 0)
std::cout << "Value: Taste loslassen" << std::endl;
else
if (eventKeyboard.value == 1)
std::cout << "Value: Taste gedrückt" << std::endl;
else
if (eventKeyboard.value == 2)
std::cout << "Value: Auto repeat" << std::endl;
std::cout << "Code : " << eventKeyboard.code << std::endl;
}
return eventKeyboard.code;
}
-
- Beiträge: 298
- Registriert: 16.01.2006 17:44:21
- Lizenz eigener Beiträge: GNU General Public License
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
Ich habe jetzt noch das Paket kbd entdeckt das macht ja die Zeichenumsetzung (Scancode => Keycode) aber das geht wie es scheint nur mit /dev/console und das wieder ist etwas das bereits auf die Typische Computer Console zugeschnitten ist. Gibt scheinbar wirklich nur den Weg das über die Kernel Eventschnittstelle für Eingabegeräte zu lesen und die Umsetzung zwischen Scan... und Keycode selber zu bauen. EDV zu Fuß halt. Hatte gedacht es gibt für so eine alltägliche Aufgaben fertige Lösungen. Falsch gedacht ...
- schorsch_76
- Beiträge: 2542
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
SIehe
http://stackoverflow.com/questions/3649 ... e-in-linux
Man könnte auch einfach mal in QT oder GTK reinschauen wie die das machen
http://stackoverflow.com/questions/3649 ... e-in-linux
Man könnte auch einfach mal in QT oder GTK reinschauen wie die das machen
-
- Beiträge: 298
- Registriert: 16.01.2006 17:44:21
- Lizenz eigener Beiträge: GNU General Public License
Re: Wie sollte man eine Tastatur/Maus/Touchscreen abfragen .
@schorsch_76: Den Link von Dir habe ich mir mal angeschaut. Aber das Programm habe ich nicht ganz verstanden. Die benutzen auf jeden Fall auch die Event Schnittstelle.
Ich schaue mir gerade die libinput von Wayland an. Habe aber da noch nicht die richtige stelle gefunden.
https://cgit.freedesktop.org/wayland/libinput/tree/src
Ich schaue mir gerade die libinput von Wayland an. Habe aber da noch nicht die richtige stelle gefunden.
https://cgit.freedesktop.org/wayland/libinput/tree/src