Ánh xạ lại một tổ hợp phím sang một tổ hợp khác, ví dụ Super + Ctrl + Shift + J -> Ctrl + Shift + Left


11

Tôi muốn triển khai một lớp khóa bổ sung, để tôi có thể truy cập các phím không chữ và số mà không phải di chuyển cổ tay.

Tôi đã sử dụng Autokey cho mục đích này, nhưng trải nghiệm không đạt yêu cầu: nó thỉnh thoảng bị trễ và để tổ hợp phím gốc trượt vào một số ứng dụng nhất định.

Vì vậy, tôi cần một giải pháp cấp thấp.


bạn có thể phải tạo trình điều khiển đầu vào ảo tùy chỉnh để làm điều này mà tôi đoán sẽ được viết bằng C
Amias

@Amias, bạn có thể vui lòng giải thích?
lolmaus - Andrey Mikhaylov

bạn có thể có trình điều khiển xinput chạy trình điều khiển bàn phím bình thường nhưng diễn giải các tổ hợp phím trước khi chuyển chúng sang xorg, điều này sẽ cung cấp cho bạn quyền kiểm soát hoàn toàn nhưng sẽ là một vài ngày làm việc phức tạp vừa phải cho một lập trình viên C.
Amias

Câu trả lời:


10

Hãy thử kết hợp xbindkeysxvkbd . xbindkeys lắng nghe các phím và gửi bản dịch tới xvkbd.

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

Mở .xbindkeysrc trong trình chỉnh sửa yêu thích của bạn. Tôi đã nhận xét mọi thứ khác, nhưng thật tốt khi tham khảo nếu được yêu cầu.

Để kiểm tra, tôi đã thử ánh xạ Ctrl +; sang Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

Tôi hy vọng bạn sau một cái gì đó như thế này

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

Lưu tệp, sau đó chạy xbindkeys

Để tải lại bất kỳ thay đổi cấu hình nào, tôi đã giết tiến trình xbindkeys sau đó khởi động lại.

cú pháp xbindkeys

Tôi đã tìm ra tổ hợp phím bằng cách sử dụng GUI cho xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Khi bạn chạy nó, nhấn Get Key cho tổ hợp để đưa vào dòng thứ hai của tệp .xbindkeysrc của bạn.

cú pháp xvkbd

Từ hướng dẫn:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

Thích nghe cách nó hoạt động và nếu sự kết hợp phù hợp với mục đích của bạn. Nó trông tốt như một keymapper, nhưng không nhất thiết phải là một trình chạy macro.


Này @MarkHewitt! Cảm ơn bạn rất nhiều vì đã trả lời chi tiết! Thật không may, điều này đối với tôi không tốt lắm: phím bấm ban đầu tiếp tục chạy qua, làm hỏng toàn bộ.
lolmaus - Andrey Mikhaylov

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.