Câu trả lời:
Có một chương trình gọi là key-mon theo dõi các phím được nhấn. Đã được một thời gian kể từ khi tôi sử dụng nó, nhưng nó hoạt động tốt và màn hình hiển thị khá hấp dẫn.
Bạn có thể sử dụng xev
(các sự kiện X) để làm điều này.
Bắt đầu ứng dụng bạn muốn theo dõi, ví dụ , xman &
.
Sau đó, sử dụng wmctrl -l
để liệt kê các cửa sổ X. Nó có thể trông như thế này:
0x00400009 0 VLAN-.... urxvt
0x00e0007a 0 VLAN-.... Iceweasel
0x00800011 0 VLAN-.... xman
Bạn cần ID cửa sổ (hex) trong cột đầu tiên; để có được nó, bạn có thể sử dụng grep
và tìm nạp dòng theo cột thứ tư (tên ứng dụng, sẽ tự nhiên hơn nhiều khi bạn sử dụng như một con người) - khi bạn có dòng này, bạn có thể lấy cột đầu tiên với cut
( cột đầu tiên trường với -f1
, sử dụng một dấu phân cách khoảng trắng -d" "
để tách các trường).
Dĩ nhiên, bạn có thể phân tích dữ liệu (để lấy ID) theo một số cách hoặc thậm chí nhập ID theo cách thủ công. (Các số 0 trong cột thứ hai ở trên là số máy tính để bàn.)
Vậy hãy thử đi
xev -id `wmctrl -l | grep xman | cut -d" " -f1` | tee event.txt
Nó sẽ hiển thị các tổ hợp phím (và hơn thế nữa) trong cùng một thiết bị đầu cuối khi lệnh được gọi; cộng với tee
, nó sẽ lưu trữ những gì bạn nhìn thấy trong một tập tin. Nó có thể là một ý tưởng tốt để cho đầu ra được hiển thị stdout
trong thiết bị đầu cuối vì điều này sẽ cho bạn thấy ngay lập tức hành động; Ngoài ra, nếu bạn không chạy lệnh dưới dạng quá trình nền (với &
), bạn có thể chấm dứt dễ dàng vớiCtrl-C.
LƯU Ý Nó hoạt động cho urxvt và xman, nhưng vì một số lý do, nó không thành công với Iceweasel trong danh sách trên (nó ghi lại một cái gì đó, nhưng nó không trình bày các sự kiện chính rõ ràng (như vậy) như các trường hợp khác.