Wayland เป็นทางเลือกสำหรับ xorg ของ xdotool หรือไม่


16

xdotool เป็นแอปพลิเคชั่น X ที่ดีฉันมักจะใช้มันเพื่อสร้างคำสั่งแมโคร (เช่น alt + f4 หรือ ctrl + w หรือ ctrl + alt + backspace หรืออะไรทำนองนั้น)

มันใช้งานง่ายและสะดวกมาก แต่ฉันไม่รู้โปรแกรมที่เข้ากันได้กับ Wayland แบบนี้ มีวิธีการส่งสัญญาณเมาส์และแป้นพิมพ์ไปยัง Wayland ตอนนี้คล้ายกับ xdotool สำหรับ X?

ส่วนใหญ่ใช้งานกับ xwayland ได้ในตอนนี้ แต่ไม่ใช่ทุกคำสั่งที่ใช้งานได้ (เช่น alt + f4, xev สามารถอ่านอินพุต alt + f4 ได้ แต่มันไม่ได้กระตุ้นให้แอปพลิเคชั่นหยุดทำงานเช่นการกดบนแป้นพิมพ์) อาจไม่ได้ใช้ xwayland


คำตอบ:


3

ไม่ฟีเจอร์ดังกล่าวได้รับการยกเว้นอย่างชัดเจนจากการออกแบบ Wayland ด้วยเหตุผลด้านความปลอดภัย (การอ่านอินพุตของโปรแกรมอื่นเป็นปัญหาที่ใหญ่ที่สุด แต่การยอมให้อินพุตปลอมถูกส่งไปยังโปรแกรมอื่นสามารถทำให้เกิดปัญหาได้เช่นกัน)

ที่กล่าวว่าฉันคาดหวังว่า Wayland WMs บางส่วนจะใช้งานคุณสมบัติของแมโครในที่สุด ท้ายที่สุดพวกเขาจะต้องสนับสนุนแป้นพิมพ์บนหน้าจอและการควบคุมด้วยเสียง (สำหรับการเข้าถึง)

แต่ถ้ามีคุณสมบัติดังกล่าวมันจะขึ้นอยู่กับผู้แต่ง Wayland ที่คุณใช้: Weston? KWin ของ KDE เหรอ เชลล์ GNOME ตรัสรู้? ไม่มี "เซิร์ฟเวอร์ดิสเพลย์ - ตัวจัดการหน้าต่าง" แยกใน Wayland; ตัวจัดการหน้าต่างคือเซิร์ฟเวอร์ Wayland และตัดสินใจว่าคุณลักษณะใดที่จะใช้ (ไม่ว่าจะเป็นโปรโตคอลย่อย Wayland หรือ API ของ D-Bus หรือเช่นนั้น)


1
มันควรจะเป็นไปได้ที่ฉันคิดว่าจะสร้างโปรแกรมที่เหมาะกับผู้แต่งเพลงเวย์แลนด์ทุกคน Libinput ส่งต่ออินพุตของผู้ใช้ไปยัง wayland และผ่าน libinput ที่ alt + f4 และคำสั่งอื่น ๆ ที่ใช้ฟังก์ชัน wayland สามารถถูกทริกเกอร์ สิ่งที่คุณต้องทำคือการหลอกให้ libinput อ่านมาโครเป็นคีย์บอร์ดหรือเมาส์ เป็นสิ่งที่ฉันคิด แต่ฉันไม่รู้ว่าจะทำเองได้อย่างไร
Cestarian

@Cestarian: คุณจะต้องสร้างอุปกรณ์อินพุตปลอมด้วยคุณลักษณะ uinput ของเคอร์เนล
user1686

1
มันไม่ควรจะยากขนาดนั้นฉันจำได้ว่าทำมันในไดร์เวอร์บางตัวทำงานครั้งเดียวบางทีถ้าฉันแค่ดูรหัสนั้นฉันก็สามารถหาวิธีได้ (แม้ว่าฉันจะไม่เคยรู้ว่าสิ่งที่ฉันทำในเวลานั้น)
เซสตาเรียน

1
มี RFC ในรายชื่อผู้รับจดหมายคือ: RFC: Interface สำหรับการฉีดของเหตุการณ์การป้อนข้อมูลและเพิ่ม API สำหรับการถ่ายภาพหน้าจอและบันทึกภาพหน้าจอ ดูเหมือนว่าความท้าทายอาจได้รับการแก้ไขด้วยการทำงานด้านความปลอดภัยเพิ่มเติม
Ben Creasy

3

มีวิธีแก้ปัญหานี้ไม่มีที่สมบูรณ์แบบ แต่มีหนึ่งใกล้: ydotool

มันใช้อินเตอร์เฟสuinputเป็นแบ็กเอนด์และไม่มีการพึ่งพาบนเซิร์ฟเวอร์ดิสเพลย์


น่าเศร้าที่ฉันไม่สามารถทำให้มันทำงานบน Ubuntu 19.04 ได้ ผมติดตั้งlibboost-program-options-dev, libevdevplus, libuinputplusและในที่สุดydotoolตัวเองแต่ฉันยังคงได้รับydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.