Bir tuşa basmayı simüle etmek için bir xdotool komutu yürüten bir kısayol nasıl oluşturulur?


11

Özel bir kısayol kullanarak bir medya tuşuna basmayı simüle etmeye çalışıyorum.

Şimdiye kadar, şu komutu kullanarak ihtiyacım olan simülasyonu elde edebildim:

xdotool key XF86AudioPlay

Mükemmel çalışır, her çalıştırıldığında müzik çaları duraklatır veya başlatır.

Sorun, bir kısayol olarak çalıştırmaya çalışırken gelir.

Önce özel bir kısayol ile bir takma ad çalıştırmayı denedim, ancak işe yaramadı.

Bu soruda açıklandığı gibi :

Klavye bağlamaları tarafından çalıştırılan komutlar kabuk üzerinden ayrıştırılmaz. En iyi seçeneğiniz, homedir'inizde bir dizin kutusu oluşturmaktır.

Sonra önerilen komut dosyasını oluşturdum ve adlandırdım simplay:

#!/bin/sh
xdotool key XF86AudioPlay

Bir parçası olan bir bin klasörünün içinde bulunur PATH, bu iyi çalışır ve herhangi bir yerden çalıştırılabilir.

Özel Kısayolu oluşturmaya çalışırken, çalıştırılmasını alamadım, yapılandırma şu:

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

Biraz daha aradıktan sonra kısayolu yürütmenin başka bir yolunu buldum:

gnome-terminal -e simplay

Bir terminalde denedim ve çalıştırırken hızla yeni bir terminal penceresi açacağını, alt işlemi gerçekleştireceğini, müziği duraklatacağını ve pencereyi hemen kapatacağını fark ettim.

Kısayoldaki komutu değiştirdim ve vurduğumda aynı davranışı bir terminal açıp hemen kapandığımı fark ettim, ancak bu sefer alt süreç müziği duraklatmadı, bu da betiğin önceki tüm girişimlerimde çağrıldığını düşündürüyor ama bir şekilde idam edilemiyor.

Bu sorunu bilginize göre nasıl çözebilirim?

Yanıtlar:


12

Sorun

Kısayolunuz, simüle edilmiş tuş basışınızla aynı anda gerçekleştirilir

Bir komut çalıştırırsanız, başka bir tuşa basma ile çağrılan bir tuşa basmayı simüle ederseniz, aslında her ikisinin birleşimi olan üçüncü bir tuşa basmayı simüle edersiniz :)

Çözmek için

Kısayolunuzun simüle tuşa basma ile aynı anda çalışmasını önlemeniz gerekir, başka bir deyişle bir gecikme ekleyin:

/bin/bash -c "sleep 1 && xdotool key XF86AudioPlay"

Bu komutu bir kısayola ekleyin, çalışması gerekir.

Not

Tabii ki sleep 1, kombinasyonun ne kadar "yapışkan" basıldığına bağlı olarak, rahat hissettiren en iyi değere ayarlamak için değeriyle biraz oynayabilirsiniz . sleep 0.5çok iyi yapabilir ve kısayolun daha hızlı hareket etmesini sağlayabilir.


8

Komutu doğrudan kısayol tanımında da kullanabilirsiniz, böylece bunun için bağımsız bir komut dosyası oluşturmanız gerekmez.

"Uyku 1" geçici çözümünü kullanmak yerine --clearmodifiersbayrağı kullanabilirsiniz; özel kısayolunuz şöyle görünür:

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

Benim için bu, kısayolları eşleştirirken işe yarar Super+F9.


Yukarıdaki kod pasajı bir dosya mıdır? Öyleyse, kısayolu uygulamak için belirli bir yere koymanız veya belirli bir komutu çalıştırmanız gerekir mi?
JellicleCat

1
Parçacık sadece kullandığım kısayolun bir açıklamasıdır. Ubuntu'da klavye ayarlarında özel kısayollar oluşturabilirsiniz. Ancak, o zamandan beri Ubuntu sürümümü yükselttim ve şimdi doğrudan "Oynat (veya oynat / duraklat)" eylemini seçerek, xdotool kullanmaktan daha güvenilir olduğu kanıtlanan bir anahtar kombinasyonuyla eşleştirebiliyorum.
Ocak

Bir --clearmodifiers komutundan daha da iyisi, komut dosyasını çağırmak için kullandığınız kısayol tuşu için bir "keyup" vermektir. Biraz dezavantajı, komut dosyasını çağırmak için kısayol tuşunu değiştirirseniz komut dosyasını güncellemeniz gerekir.
vanadium

1

Kullanmaya alternatif (snappier performansı için) sleep 1 && xdotool ...kısayol tuşlarınızı serbest bırakmak için xdotool kullanmaktır. Biraz daha uzun, ama aynı zamanda

/bin/bash -c "xdotool keyup R Alt_L Ctrl_L && xdotool key XF86AudioPlay"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.