Tastendruck simulieren

Alles rund um die Programmierung mit Qt
Antworten
miho
Beiträge: 8
Registriert: 2. Oktober 2005 23:45
Kontaktdaten:

Tastendruck simulieren

Beitrag 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
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Hi

wie wär's mit einem KeyEvent an das WIdget, dass den Focus hat (oder erhalten soll) ?

Gruss Arne
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

oder soll der Tastendruck an das System gesendet werden?
miho
Beiträge: 8
Registriert: 2. Oktober 2005 23:45
Kontaktdaten:

Beitrag von miho »

Genau! Der Tastendruck soll an jede Anwendung im System gesendet werden können.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
miho
Beiträge: 8
Registriert: 2. Oktober 2005 23:45
Kontaktdaten:

Beitrag 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?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
miho
Beiträge: 8
Registriert: 2. Oktober 2005 23:45
Kontaktdaten:

Beitrag 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
Antworten