Linux - Wie Tastendruck an anderes Fenster?

Benutzeravatar
theo
Beiträge: 10908
Registriert: Mo 11. Sep 2006, 19:01

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von theo »

@mse: Weisst du eigentlich wie man den richtigen state ermittelt?

Char in A..Z kann's ja nicht sein, weil z.B. bei Schweizer Tastaturen Shift-ä nicht Ä ist sondern à.

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von _X_ »

theo hat geschrieben:Weisst du eigentlich wie man den richtigen state ermittelt?
Nicht wirklich.
mfg _X_
Zuletzt geändert von _X_ am So 16. Mai 2010, 19:41, insgesamt 1-mal geändert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von mse »

Glaubst du nun, dass es ein Murks ist?

Code: Alles auswählen

SendStringToActiveWindow(5000, XK_TAB)
Wird nicht funktionieren da XK_TAB kein string ist.
Die Keykonstanten solltest du etwa so definieren:

Code: Alles auswählen

const
 //from keysymdef.h
 XK_BackSpace =     $FF08; //* back space, back char */
 XK_Tab =           $FF09;
 XK_Linefeed =      $FF0A; //* Linefeed, LF */
 XK_Clear =         $FF0B;
 XK_Return =        $FF0D; //* Return, enter */
 XK_Pause =         $FF13; //* Pause, hold */
 XK_Scroll_Lock =   $FF14;
 XK_Sys_Req =       $FF15;
 XK_Escape =        $FF1B;
 XK_Delete =        $FFFF; //* Delete, rubout */
Die vollständige Transkribierung findest du in MSEgui lib/common/kernel/i386-linux/mseguiintf.pas.
XFlush gehört nach den XSendEvent(), es sollen ja die aufgelaufenen Kommandos an den Server geschickt werden.
Zuletzt geändert von mse am So 1. Feb 2009, 14:56, insgesamt 1-mal geändert.

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von _X_ »

mse hat geschrieben:Glaubst du nun, dass es ein Murks ist?
Ja ich glaube es, aber ich mach trotzdem weiter.

Benutzeravatar
theo
Beiträge: 10908
Registriert: Mo 11. Sep 2006, 19:01

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von theo »

mse hat geschrieben: Die Keykonstanten solltest du etwa so definieren:
Die sind in keysym.pp

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von mse »

theo hat geschrieben:@mse: Weisst du eigentlich wie man den richtigen state ermittelt?

Char in A..Z kann's ja nicht sein, weil z.B. bei Schweizer Tastaturen Shift-ä nicht Ä ist sondern à.
Das wird vermutlich ziemlich mühsam, ich glaube nicht, dass xlib so etwas wie ein umgekehrtes xlookupstring() bietet. X11 definiert für alle ISOLatin Zeichen keysyms, es kommt also nicht darauf an, wo die Zeichen auf der Tastatur angeordnet sind.
http://tronche.com/gui/x/xlib/input/key ... tml#KeySym

Code: Alles auswählen

A KeySym is an encoding of a symbol on the cap of a key. The set of defined KeySyms includes the ISO Latin character sets (1-4), Katakana, Arabic, Cyrillic, Greek, Technical, Special, Publishing, APL, Hebrew, Thai, Korean and a miscellany of keys found on keyboards (Return, Help, Tab, and so on). To the extent possible, these sets are derived from international standards. In areas where no standards exist, some of these sets are derived from Digital Equipment Corporation standards. The list of defined symbols can be found in X11/keysymdef.h. Unfortunately, some C preprocessors have limits on the number of defined symbols. If you must use KeySyms not in the Latin 1-4, Greek, and miscellaneous classes, you may have to define a symbol for those sets. Most applications usually only include X11/keysym.h, which defines symbols for ISO Latin 1-4, Greek, and miscellaneous.
Die keysyms sind aus den ISOLatin codes abgeleitet, ausserhalb von Latin1 braucht es dann wohl Tabellen zur Umwandlung von Unicode. Was ausserhalb der ISOLatin Codes gemacht werden muss? Ich sag ja, es ist ein Murks.

Benutzeravatar
theo
Beiträge: 10908
Registriert: Mo 11. Sep 2006, 19:01

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von theo »

mse hat geschrieben: Ich sag ja, es ist ein Murks.
Einverstanden. Ist wahrscheinlich alles irgendwie lösbar, aber es ist auf jeden Fall "a can of worms".

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von _X_ »

Ich stimme zu.

mfg _X_
Zuletzt geändert von _X_ am So 16. Mai 2010, 19:40, insgesamt 1-mal geändert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von mse »

mse hat geschrieben:X11 definiert für alle ISOLatin Zeichen keysyms, es kommt also nicht darauf an, wo die Zeichen auf der Tastatur angeordnet sind.
Das stimmt nicht, durch die Wandlung keysym->keycode geht natürlich alle Information ausser der Tastenposition verloren.
Dies habe ich noch gefunden:
http://linux.die.net/man/3/xtestfakekeyevent

Hilft aber auch nicht weiter.

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von _X_ »

Gibt es eine Möglichkeit das man nur die GTK2 Libs benötigt?
In den Gtk2 units finde ich nämlich nirgends eine display-Variable wie gdk_display.

mgh _X_

Benutzeravatar
theo
Beiträge: 10908
Registriert: Mo 11. Sep 2006, 19:01

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von theo »

?

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von _X_ »

Ich meine ohne die Packete (Debian Sid) libgtk1.2, libgtk1.2-common, libgtk1.2-dev. Wenn die nicht installiert sind findet er ein paar .so Dateien nicht.

mfg _X_

Benutzeravatar
theo
Beiträge: 10908
Registriert: Mo 11. Sep 2006, 19:01

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von theo »

Dann nimmste halt uses gdk2 und diese Funktion: http://library.gnome.org/devel/gdk/unst ... et-default" onclick="window.open(this.href);return false;
Du solltest dich bei solchen Spezialthemen selber zu orientieren versuchen. Ich weiss das doch alles auch nicht.
Muss ich für dich in den Quellen suchen und Googlen? So kommst du doch auch nicht weiter.

Cargo_03
Beiträge: 10
Registriert: Sa 8. Mai 2010, 14:42
OS, Lazarus, FPC: WIN 1.4.4 / 1.8.4
CPU-Target: 64 Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von Cargo_03 »

Hi,

ich habe den Thread nur zum Teil verfolgt. Jedoch zur Frage wie man ein TAB übermittelt, das habe ich mal so gelöst.

Code: Alles auswählen

SendKeysToTitle(FensterTitel,Trim(ED_KRABUserName.Text)+CHR(9)+Trim(ED_KRABPasswort.Text)+CHR(13));
Ein CHR(9) ist ein TAB und ein CHR(13) ein Return/Enter.

Ich bin da auch mal dran verzweifelt.


Gruß Cargo_03

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Linux - Wie Tastendruck an anderes Fenster?

Beitrag von _X_ »

Der Thread ist alt ^^
http://forge.lazarusforum.de/repositori ... eydown.pas" onclick="window.open(this.href);return false;
mfg _X_

Antworten