Aktuelle Zeit: 10.12.2018 03:45

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Tastatureingaben an aktives Fenster senden
BeitragVerfasst: 03.12.2018 00:34 
Offline
Benutzeravatar

Registriert: 06.08.2005 22:56
Wohnort: Gernsbach
Einfache Ascii Zeichen lassen sich mit XTestFakeKeyEvent() schon problemlos an andere Anwendungen senden. Jetzt fehlen noch die Modifiers (Shift, Alt, Ctrl, etc.).

xdotool macht das mit einer XModifierKeymap welche von XGetModifierMapping() zurueckgegeben wird. Ich habe gerade mal versucht, das in PB nachzubauen, aber irgendwie stehe ich da gerade noch auf dem Schlauch. Die Modifier Table beinhaltet nichts wirklich sinnvolles bzw. die Werte aendern sich bei jeder Ausfuehrung. Ich denke mal die Werte sollten immer die gleichen sein (zumindest solange der X Server laeuft).

Code:
EnableExplicit

ImportC "-lX11"
  XOpenDisplay(display)
  XGetModifierMapping(*display)
  XFreeModifiermap(*modmap)
EndImport

Define *display = XOpenDisplay(0)

Define Dim modifierTable(7)
Define *modmap = XGetModifierMapping(*display)
Define maxKeyPerMod = PeekL(*modmap)
Define modifierIndex
For modifierIndex = 0 To 7
  Define modifierKey
  For modifierKey = 0 To maxKeyPerMod - 1
    Define keycode = PeekA(*modmap + 4 + (modifierIndex * maxKeyPerMod) + modifierKey)
    If keycode
      modifierTable(modifierIndex) = keycode
      Break
    EndIf
  Next
Next
XFreeModifiermap(*modmap)

For modifierIndex = 0 To 7
  Debug modifierTable(modifierIndex)
Next


In C sieht die Struktur welche XGetModifierMapping() zurueck gibt so aus:
Code:
typedef struct {
   int max_keypermod;   /* This server's max number of keys per modifier */
   KeyCode *modifiermap;   /* An 8 by max_keypermod array of the modifiers */
} XModifierKeymap;


KeyCode ist ein Array aus Werten als unsigned char. Ich gehe mal davon aus, das ist in PB mit dem Ascii Type (PeekA bzw. variable.a) vergleichbar.

_________________
BildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tastatureingaben an aktives Fenster senden
BeitragVerfasst: 03.12.2018 20:49 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Ich habe jetzt noch nicht so intensiv nachgeforscht.

Aber man kann es ja auch erstmal so lösen:

Code:
Procedure SendKeyLoop(param)
  Protected *display = XOpenDisplay(0)
 
  Repeat
    Protected symbol, code, code2
   
    ;XStringToKeysym("Right")
    ;XStringToKeysym("Up")
    ;XStringToKeysym("Down")
    ;XStringToKeysym("Return")
    ;XStringToKeysym("space")
    ;XStringToKeysym("BackSpace")
    ;XStringToKeysym("Caps_Lock")
    ;XStringToKeysym("Shift_L")
    ;XStringToKeysym("Shift_R")
    ;XStringToKeysym("Escape")
    ;XStringToKeysym("F1")
   
    symbol = XStringToKeysym("Shift_L")
    code = XKeysymToKeycode(*display, symbol)
    Debug symbol
    Debug code
   
    XTestFakeKeyEvent(*display, code, #True, 0)
    symbol = XStringToKeysym("A")
    code2 = XKeysymToKeycode(*display, symbol)
    XTestFakeKeyEvent(*display, code2, #True, 10) ;letzter Parameter ist ein Delay
    XTestFakeKeyEvent(*display, code, #False, 0)
    XTestFakeKeyEvent(*display, code2, #False, 10)
    XFlush(*display)
   
    Delay(1000)
  ForEver
EndProcedure


Ist aber nicht die beste Lösung. Daher suche und probiere weiter. ;)

Das mit den XGetModifierMapping() klingt interessant.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tastatureingaben an aktives Fenster senden
BeitragVerfasst: 04.12.2018 01:00 
Offline
Benutzeravatar

Registriert: 06.08.2005 22:56
Wohnort: Gernsbach
Danke, ich werde dann die Key Modifiers erstmal so wie aus deinem Beispiel senden.

_________________
BildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye