GUI programları standart girişlerinden okumaz, girişlerini X sunucusundan alırlar . Bir pencereye bir tuş vuruşu enjekte etmek için araçlar vardır. xdotool oldukça yaygın ve kullanışlıdır.
Tuş vuruşunu göndermek istediğiniz pencere kimliğini bulmanız gerekir. Bunu xdotool ile yapabilirsiniz. xdotool search --class Chrome
tüm Chrome pencerelerinin pencere kimlikleri listesini döndürür. Bunun birden fazla olması durumunda, istediğinizi seçmeniz gerekir. xdotool search --name
Sınıf yerine başlıkla eşleşmek için kullanabilirsiniz . Ayrıca wmctrl çıktısını ayrıştırıp istediğiniz pencere kimliğini çıkarabilirsiniz.
Doğru pencere kimliğini bulduktan sonra, xdotool
bir tuş vuruşu enjekte etmek için çağırabilirsiniz . Ne yazık ki, birçok uygulama sentetik olayları, yani başka bir uygulama tarafından gönderilen tuş vuruşlarını ve fare olaylarını reddeder. Bu, Chrome'un şu anki sürümlerinde geçerlidir. Başka bir uygulamadan farklı bir mekanizma ile bir tuş vuruşunu enjekte etmek mümkündür, ancak bu pencerenin odaklanmasını gerektirir. Bunların hepsini xdotool ile yapabilirsiniz, ancak odağın hızla Chrome penceresine titremesine ve geri dönmesine neden olur. Aşağıdaki kod parçası F5, ilk Chrome penceresine gönderir (biraz keyfi bir şekilde).
xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)
Veya xdotool'un eski sürümleriyle:
xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)
Bunun F5o pencereye gönderildiğini ve bununla ne yapacağına karar vermenin programa bağlı olduğunu unutmayın. Chrome'da bu, geçerli sekmeyi yeniden yükler.