ubuntuusers.de

xdotool / tastenkombination gedrückthalten simulieren

Status: Ungelöst | Ubuntu-Version: Lubuntu 15.04 (Vivid Vervet)
Antworten |

bashdau

Anmeldungsdatum:
24. Juni 2015

Beiträge: Zähle...

Hallo,

ich versuche ein script zu schreiben, welches einen link im browser aufruft und dann simuliert, dass man eine tastenkombination gedrückthält, nachdem die seite vollständig geladen wurde. Das funktioniert soweit, aber nach Start des scripts wird die Seite aufgerufen und es wird nicht reproduzierbar immer eine andere Taste als nicht gedrückt ausgegeben?!

kann mir jemand behilflich sein? das wäre klasse. besten dank und gruß

1
2
3
4
5
6
7
8
#!/bin/bash

$open firefox "http://beispiel.de"
sleep 10
# Window id von firefox ermitteln:
WID=`xdotool search firefox | head -n1`
xdotool windowactivate $WID
xdotool keydown "q+s+p+l"

Bearbeitet von rklm:

Passenden Codeblock spendiert (siehe Forum/Syntax).

bashdau

(Themenstarter)

Anmeldungsdatum:
24. Juni 2015

Beiträge: 2

Edit:

Es hat jetzt einige Male funktioniert, aber jetzt ist ein Disclaimer dazwischengeschaltet. Wie kann man den bestätigen?

Und in der Shell wird folgender Fehler ausgegeben:

(process:1580): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

Die Prozess ID ändert sich von Mal zu Mal...

Ich hab keine Ahnung was das soll. Mal so mal so.

ExcitedSpoon

Avatar von ExcitedSpoon

Anmeldungsdatum:
17. Juli 2010

Beiträge: 226

Wohnort: /home/berlin

Das gleichzeitige Gedrückthalten von Tasten durch xdotool funktioniert afaik nur korrekt, wenn das Kombinationen sind, die Modifier-Keys beinhalten wie z.B. "Alt+a" oder "Alt+Shift+a". In deinem Fall wird "qsp" von xdotool versendet und das "l" bleibt dann gedrückt.

Du kannst mal versuchen ob die ominöse Seite die Tasten als gedrückt anerkennt, wenn man die Kombination wiederholt nacheinander drückt, etwa so:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/bash

firefox &

sleep 10

wid=$(xdotool search firefox | head -n1)
xdotool windowactivate $wid

while true; do
  current_wid=$(xdotool getactivewindow)
  # exit on focus change
  [ $current_wid -eq $wid ] || exit
  xdotool key "q+s+p+l"
  sleep .1 # wichtig
done

Bei mir ergibt das dann die Sequenz "qsplqsplqsplqspl...".

Ich habe dort in der while-schleife den check auf das aktive window eingebaut. Fokusierst du ein anderes Fenster, bricht das script ab. Sonst würde das script ewig mit diesen Tastendrucken um sich werfen und du bekommst evtl. Probleme das script zu beenden, da es diese weiter an das jeweils fokusierte Fenster senden würde.

bashdau schrieb:

Und in der Shell wird folgender Fehler ausgegeben:

(process:1580): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

Kannst du getrost ignorieren, das spuckt Firefox immer aus, wenn du ihn aus einem Terminal startest.

Antworten |