Seite 1 von 1
Tastendruck simulieren
Verfasst: 2. Oktober 2005 23:50
von miho
Hallo zusammen,
Dies ist mein erster Post hier im Forum!
Ich wollte mal fragen, wie ich unter Linux/Qt einen Tastendruck simulieren kann. Ich will nämlich ein Software-Keyboard schreiben. Bisher hab ich nichts darüber gefunden. Hat jemand ne Idee? Danke für eure Hilfe!
gruß,
miho
Verfasst: 3. Oktober 2005 09:28
von ArneStocker
Hi
wie wär's mit einem KeyEvent an das WIdget, dass den Focus hat (oder erhalten soll) ?
Gruss Arne
Verfasst: 3. Oktober 2005 12:11
von BartSimpson
oder soll der Tastendruck an das System gesendet werden?
Verfasst: 3. Oktober 2005 12:36
von miho
Genau! Der Tastendruck soll an jede Anwendung im System gesendet werden können.
Verfasst: 3. Oktober 2005 12:49
von BartSimpson
Also als wenn jemand auf die Taste drücken würde.
Hm ich füchte denn must du eine arte Userspace Kerneltreiber bauen.
Verfasst: 3. Oktober 2005 14:05
von miho
Wie geht man an sowas heran? Oder gibt es nicht schon solche Treiber, denn es gibt doch einige Systeme mit Touchpad auf Qt Basis, die ne Software-Tastatur haben?
Verfasst: 3. Oktober 2005 14:31
von BartSimpson
Mit sowas habe ich mich noch nie im Detail beschäfugt. Aber ein touchpad dürfte in das System ähnlich einer Maus eingebunden werden.
Verfasst: 3. Oktober 2005 16:06
von miho
Ich hab mal eine Handschrifterkennung für Linux-PDA's zerpflückt und bin dabei fündig geworden. Man kann das Ganze mit der Xlib lösen. Ein Beispiel: führt man das Programm aus, scheint die "a"-Taste zu klemmen:)
a-taste.cpp:
Code: Alles auswählen
#include <X11/Xlib.h>
#include <X11/extensions/XTest.h>
#include <X11/XKBlib.h>
#include <unistd.h>
main()
{
// Open a display.
Display *d = XOpenDisplay(0);
if ( d )
{
while (true)
{
XTestFakeKeyEvent (d, XKeysymToKeycode( d, 'a' ), true, 0);
XTestFakeKeyEvent (d, XKeysymToKeycode( d, 'a' ), false, 0);
}
}
return 0;
}
übersetzen mit : g++ a-taste.cpp -L/usr/X11R6/lib -lX11 -lXtst
Gesendet wird das KeyEvent immer an das Fenster, das gerade offen ist.
Gruß,
miho