Làm cách nào để tạo một phím tắt thực thi lệnh xdotool để mô phỏng một phím bấm?


10

Tôi đang cố gắng mô phỏng một phím bấm phương tiện bằng phím tắt tùy chỉnh.

Cho đến nay, tôi đã có thể đạt được mô phỏng tôi cần bằng cách sử dụng lệnh:

xdotool key XF86AudioPlay

Nó hoạt động hoàn hảo, nó tạm dừng hoặc khởi động trình phát nhạc mỗi khi chạy.

Vấn đề xảy ra khi cố gắng chạy nó như một phím tắt.

Đầu tiên tôi đã thử chạy một bí danh với một phím tắt tùy chỉnh, nhưng nó không hoạt động.

Như đã giải thích về câu hỏi này :

Các lệnh được chạy bởi các ràng buộc bàn phím không được phân tích cú pháp thông qua trình bao. Đặt cược tốt nhất của bạn là tạo một thùng thư mục trong homedir của bạn.

Tiếp theo tôi tạo tập lệnh được đề xuất và đặt tên cho nó simplay:

#!/bin/sh
xdotool key XF86AudioPlay

Nó được đặt bên trong một thư mục bin là một phần của PATH, cái này hoạt động tốt và có thể chạy từ bất kỳ vị trí nào.

Khi cố gắng tạo Lối tắt tùy chỉnh, tôi không thể thực hiện được, cấu hình như sau:

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

Sau khi tìm kiếm thêm một chút, tôi tìm thấy một cách khác để thực hiện phím tắt:

gnome-terminal -e simplay

Tôi đã thử nó trên một thiết bị đầu cuối và nhận thấy rằng khi thực hiện nó, nó sẽ nhanh chóng mở một cửa sổ thiết bị đầu cuối mới, thực hiện quy trình con, tạm dừng nhạc và đóng cửa sổ ngay lập tức.

Tôi đã thay đổi lệnh trên phím tắt và khi nhấn nó, tôi nhận thấy hành vi tương tự mở thiết bị đầu cuối và ngay lập tức bị đóng nhưng lần này quá trình con không tạm dừng nhạc, điều này khiến tôi nghĩ rằng kịch bản đã được gọi trong tất cả các lần thử trước của tôi nhưng nó bằng cách nào đó không thể thực thi.

Làm thế nào tôi có thể giải quyết vấn đề này theo kiến ​​thức của bạn?

Câu trả lời:


12

Vấn đề

Phím tắt của bạn được thực hiện cùng lúc với phím bấm mô phỏng của bạn

Nếu bạn chạy một lệnh, mô phỏng một lần nhấn phím, được gọi bằng ... một lần nhấn phím khác, bạn thực sự sẽ mô phỏng một lần nhấn phím thứ ba , đó là sự kết hợp của cả hai :)

Để giải quyết

Bạn cần ngăn lối tắt của mình chạy cùng lúc với phím bấm mô phỏng, nói cách khác, thêm độ trễ:

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

Thêm lệnh này vào một phím tắt, và nó sẽ hoạt động.

Ghi chú

Tất nhiên bạn có thể chơi một chút với giá trị trong sleep 1, để đặt nó thành giá trị tốt nhất mà cảm thấy thoải mái, tùy thuộc vào mức độ "dính" của sự kết hợp được nhấn. sleep 0.5rất có thể làm, và làm cho các phím tắt hành động kịp thời hơn.


8

Bạn cũng có thể sử dụng lệnh trực tiếp trong định nghĩa phím tắt, vì vậy bạn không cần tạo tập lệnh độc lập cho nó.

Thay vì sử dụng cách giải quyết "ngủ 1", bạn có thể sử dụng --clearmodifierscờ, tức là lối tắt tùy chỉnh của bạn sẽ như thế này:

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

Đối với tôi điều này hoạt động khi ánh xạ các phím tắt đến Super+F9.


Đoạn mã trên có nghĩa là một tệp? Nếu vậy, bạn có phải đặt nó ở một nơi cụ thể hoặc chạy một lệnh cụ thể để thực hiện các phím tắt?
JellicleCat

1
Đoạn mã chỉ là một mô tả về các phím tắt tôi đã sử dụng. Trong Ubuntu, bạn có thể tạo các phím tắt tùy chỉnh trong cài đặt bàn phím. Tuy nhiên, tôi đã nâng cấp phiên bản Ubuntu của mình và bây giờ có thể ánh xạ trực tiếp hành động "Phát (hoặc phát / tạm dừng)" thành tổ hợp chính mà tôi chọn, điều này chứng tỏ độ tin cậy cao hơn so với sử dụng xdotool.
ngày

Thậm chí tốt hơn so với - bộ giải mã rõ ràng là phát hành "keyup" cho phím nóng bạn đang sử dụng để gọi tập lệnh. Hạn chế nhẹ là bạn cần cập nhật tập lệnh nếu bạn thay đổi phím nóng để gọi tập lệnh.
vanadi

1

Một cách khác (cho hiệu suất snappier) để sử dụng sleep 1 && xdotool ...là sử dụng xdotool để giải phóng các phím tắt của bạn. Dài hơn một chút, nhưng bạn cũng có thể sử dụng

/bin/bash -c "xdotool keyup R Alt_L Ctrl_L && xdotool key XF86AudioPlay"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.