วิธีสร้างทางลัดที่เรียกใช้งานคำสั่ง xdotool เพื่อจำลองการกดปุ่ม


11

ฉันพยายามจำลองการกดปุ่มสื่อโดยใช้ทางลัดที่กำหนดเอง

จนถึงตอนนี้ฉันสามารถบรรลุการจำลองที่ฉันต้องการโดยใช้คำสั่ง:

xdotool key XF86AudioPlay

มันทำงานได้อย่างสมบูรณ์แบบหยุดหรือเริ่มเครื่องเล่นเพลงทุกครั้งที่ทำงาน

ปัญหาเกิดขึ้นเมื่อพยายามเรียกใช้เป็นทางลัด

ก่อนอื่นฉันพยายามเรียกใช้นามแฝงด้วยทางลัดที่กำหนดเอง แต่ไม่ได้ผล

ตามที่อธิบายไว้ในคำถามนี้ :

คำสั่งที่ทำงานโดยการผูกคีย์บอร์ดจะไม่ถูกวิเคราะห์ผ่านเชลล์ ทางออกที่ดีที่สุดของคุณคือการสร้างไดเรกทอรีถังขยะในบ้านของคุณ

ต่อไปฉันสร้างสคริปต์ที่แนะนำและตั้งชื่อsimplay:

#!/bin/sh
xdotool key XF86AudioPlay

มันตั้งอยู่ภายในโฟลเดอร์ถังขยะซึ่งเป็นส่วนหนึ่งของPATHมันทำงานได้ดีและสามารถเรียกใช้จากตำแหน่งใด ๆ

เมื่อพยายามสร้าง Custom Shortcut ฉันไม่สามารถเรียกใช้งานได้การกำหนดค่ามีดังนี้:

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

หลังจากค้นหาอีกเล็กน้อยฉันพบวิธีอื่นในการใช้งานทางลัด:

gnome-terminal -e simplay

ฉันลองมันบนเครื่องเทอร์มินัลและสังเกตว่าเมื่อทำการมันมันจะเปิดหน้าต่างเทอร์มินัลใหม่อย่างรวดเร็วทำการประมวลผลลูกหยุดเพลงและปิดหน้าต่างทันที

ฉันเปลี่ยนคำสั่งบนช็อตคัตและเมื่อกดปุ่มฉันสังเกตเห็นว่าพฤติกรรมเดียวกันเปิดเทอร์มินัลและถูกปิดทันที แต่คราวนี้กระบวนการลูกไม่หยุดเพลงชั่วคราวซึ่งทำให้ฉันคิดว่าสคริปต์ถูกเรียกใช้ก่อนหน้านี้ทั้งหมด แต่มันก็ไม่สามารถดำเนินการได้

ฉันจะแก้ปัญหานี้ตามความรู้ของคุณได้อย่างไร

คำตอบ:


12

ปัญหา

ทางลัดของคุณถูกดำเนินการในเวลาเดียวกับการกดปุ่มจำลองของคุณ

หากคุณเรียกใช้คำสั่งจำลองการกดปุ่มเรียกด้วย ... การกดปุ่มอีกครั้งคุณจะจำลองการกดปุ่มที่สามซึ่งเป็นการรวมกันของทั้งสอง :)

เพื่อแก้ปัญหา

คุณต้องป้องกันไม่ให้ทางลัดของคุณทำงานพร้อมกับการกดปุ่มจำลองในคำอื่น ๆ เพิ่มความล่าช้า:

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

เพิ่มคำสั่งนี้ให้กับทางลัดและควรใช้งานได้

บันทึก

แน่นอนว่าคุณสามารถเล่นได้เล็กน้อยด้วยค่าในsleep 1การตั้งค่าให้เป็นค่าที่ดีที่สุดที่รู้สึกสบายขึ้นอยู่กับการกด "เหนียว" ของชุดค่าผสม sleep 0.5อาจทำได้ดีมากและทำให้ทางลัดทำงานได้รวดเร็วขึ้น


8

คุณยังสามารถใช้คำสั่งโดยตรงในการกำหนดทางลัดดังนั้นคุณไม่จำเป็นต้องสร้างสคริปต์แบบสแตนด์อโลน

แทนที่จะใช้วิธีแก้ปัญหา "sleep 1" คุณสามารถใช้การ--clearmodifiersตั้งค่าสถานะได้เช่นทางลัดที่กำหนดเองของคุณจะมีลักษณะดังนี้:

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

Super+F9สำหรับฉันนี้จะทำงานเมื่อทำแผนที่ทางลัดไปยัง


ข้อมูลโค้ดด้านบนมีความหมายว่าเป็นไฟล์หรือไม่ ถ้าเป็นเช่นนั้นคุณต้องวางไว้ในตำแหน่งเฉพาะหรือเรียกใช้คำสั่งเฉพาะเพื่อใช้ทางลัดหรือไม่
JellicleCat

1
ตัวอย่างเป็นเพียงคำอธิบายของทางลัดที่ฉันใช้ ใน Ubuntu คุณสามารถสร้างทางลัดที่กำหนดเองในการตั้งค่าแป้นพิมพ์ อย่างไรก็ตามฉันได้อัปเกรดอูบุนตูตั้งแต่ตอนนี้และตอนนี้สามารถแมปแอคชั่น "เล่น (หรือเล่น / หยุดชั่วคราว)" เป็นการรวมคีย์ของการเลือกของฉันซึ่งพิสูจน์ได้ว่าเชื่อถือได้มากกว่าการใช้ xdotool
ม.ค.

ดียิ่งขึ้นกว่า --clearmodifiers คือการออก "keyup" สำหรับฮอตที่คุณใช้ในการเรียกสคริปต์ ข้อเสียเปรียบเล็กน้อยคือคุณต้องอัปเดตสคริปต์หากคุณเปลี่ยนฮอตคีย์เพื่อเรียกใช้สคริปต์
วานาเดียม

1

อีกทางเลือกหนึ่ง (สำหรับประสิทธิภาพของsleep 1 && xdotool ...Snappier ) คือการใช้ xdotool เพื่อปล่อยปุ่มลัดของคุณ ยาวขึ้นเล็กน้อย แต่คุณสามารถใช้งานได้เช่นกัน

/bin/bash -c "xdotool keyup R Alt_L Ctrl_L && xdotool key XF86AudioPlay"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.