Làm cách nào để cho phép hợp âm của các phím bàn phím tạm thời thay đổi sơ đồ phím?


9

Tôi đã thực sự quen với các "đồng thời Vi Mode" chức năng của KeyRemap4MacBook cho phép bạn nhấn và giữ sdphím cùng một lúc và sau đó sử dụng h, j, k, và lcác phím như các phím mũi tên. Khi sdđược nhấn cùng nhau, không có shoặc dsự kiện nào được kích hoạt, nhưng khi tôi gõ bình thường, tôi không nhận thấy bất kỳ vấn đề chậm trễ nào khi nhấn shoặc driêng lẻ.

Làm cách nào tôi có thể tạo lại chức năng này trong Linux (cụ thể là RHEL 6.4)?

Một vài ý tưởng tôi đã có:

  1. Nếu s+ dcó thể được ánh xạ lại để sửa đổi, sau đó các phím h, j, k, l+ modifier có thể được ánh xạ cho phù hợp. (Bàn phím tôi đang sử dụng hiện không có bất kỳ phím sửa đổi dự phòng nào có sẵn để sử dụng thay vì s+ d, cộng với điểm của Chế độ Vi đồng thời là giữ tất cả các ngón tay trên hàng chủ. CapsLockĐã được ánh xạ lại ControlEscape).

  2. Lý tưởng nhất, tôi sẽ tìm một cách để làm điều này bằng cách sử dụng cài đặt hệ thống hoặc một cái gì đó như bàn phím XKB mà tôi đang sử dụng. Nếu điều đó là không thể, có lẽ một cái gì đó tương tự như chương trình xcape (mà tôi đang sử dụng và cho phép các phím được ánh xạ tới các ký hiệu phím bấm và phím bổ trợ khác nhau) có thể được viết. xcapeMặc dù kích hoạt phát hành khóa, do đó, nó sẽ phải được điều chỉnh để giữ cho các phím sdquá chậm.


Trên RHEL 6.4? Bạn đang sử dụng vim từ X hoặc qua thiết bị đầu cuối?
Otheus

Ồ, và làm thế nào để bạn ánh xạ CapsLock để Kiểm soát VÀ Thoát ??
Otheus

Ánh xạ CapsLock thành Điều khiển và sau đó sử dụng xcape (được liên kết ở trên) để ánh xạ các phím bấm điều khiển ngắn để Thoát. Trong câu hỏi, tôi đề cập đến một chế độ giống Vi của KeyRemap4MacBook, chứ không phải vim chính nó. Cho đến nay, tùy chọn hứa hẹn nhất mà tôi tìm thấy cho những gì tôi đang tìm kiếm là sử dụng mô-đun Python Xlib theo cách tương tự như sử dụng bởi Plover. Cho đến nay, tôi không có nhiều thời gian để làm việc này.
ws_e_c421

Câu trả lời:


2

Bạn không thể làm điều này với các công cụ tiêu chuẩn, bạn sẽ phải viết một cái gì đó (có thể rất nhiều xserver sẽ bị ảnh hưởng và nếu bạn muốn nó hoạt động bên ngoài X, sẽ có thay đổi kernel).

Lý do cho điều này là các ý tưởng mà thiết kế dựa trên (và được tối ưu hóa) không bao gồm các từ khóa thông thường hoặc phát ra các ký tự từ các từ bổ nghĩa.


Tôi vẫn đang xem xét điều này (cần thêm thời gian). Tôi đã tìm thấy dự án Plover dường như cung cấp một mẫu cho giải pháp dựa trên X, nhưng tôi muốn chuyển sang Wayland vì vậy tôi đã ngừng xem xét điều đó. Gần đây, tôi phát hiện ra caps2esc sử dụng libevdev và libudev để lấy và ánh xạ lại các thiết bị một cách linh hoạt. Tôi nghĩ rằng một cách tiếp cận như thế này có thể hoạt động để theo dõi ngoài việc ánh xạ lại nhưng nó cần được nghiên cứu thêm (tôi cũng thích một giải pháp libinput hơn).
ws_e_c421

Bình luận libinput của tôi đã bị thông tin sai. Tôi nghĩ caps2esc đã làm việc với trình điều khiển xf86-input-evdev, một giải pháp thay thế cho libinput, nhưng nó thực sự hoạt động ở cấp libevdev, một thư viện cấp thấp hơn được sử dụng bởi cả hai dự án. Công cụ cho caps2esc đã được tái cấu trúc thành dự án công cụ đánh chặn . Tôi tin rằng một plugin được viết tốt cho các công cụ đánh chặn có thể cung cấp tính năng mà tôi đã mô tả. Nó nằm trong danh sách của tôi để điều tra.
ws_e_c421

2

Vì vậy, sau bốn năm, cuối cùng tôi đã có một bản thảo sơ bộ về câu trả lời cho câu hỏi này. Câu trả lời là sử dụng Công cụ đánh chặn sử dụng libevdev để lấy đầu vào bàn phím và xử lý nó trước khi phát lại. Về bản đồ chủ chốt đồng thời, tôi đã thực hiện một plugin thô cho Interception cụ gọi Chorded Keymap cho phép h, j, k, lhành động như các phím mũi tên khi sdđược ép cùng một lúc.


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.