Remap CapsLock để thoát và điều khiển hệ thống rộng


18

Có thể ánh xạ lại hệ thống phím CapsLock rộng sao cho khi nhấn nút CapsLock, nó đóng vai trò là phím thoát và khi nhấn bằng một phím khác, nó có tác dụng như phím điều khiển không?


5
Điều này có vẻ như sẽ rất khó khăn. Ví dụ: nó không thể tạo ra các sự kiện khóa, vì bạn không biết phím nào vừa được nhấn. Nếu nó được phát hành mà không cần nhấn phím khác, thì đó là Escape, nếu không thì đó là Control.
cjm

Câu trả lời:


16

Tôi đã tìm thấy một giải pháp rất tốt gọi là xcape . Từ README:

xcape chạy như một daemon và chặn phím Control. Nếu phím Control được nhấn và tự phát hành, nó sẽ tạo ra một sự kiện phím Escape.

Điều này có ý nghĩa hơn nếu bạn đã ánh xạ lại phím Caps Lock để Điều khiển. Các phiên bản tương lai của chương trình này có thể thực hiện việc lập bản đồ đó cho bạn, nhưng bây giờ đây là điều mà bạn phải tự làm.


Tôi đã tạo một kịch bản hacky để làm điều này: github.com/cmatheson/super-caps
cam

6

Tôi đã ánh xạ Caps thành Escape để tôi có thể thoải mái hơn khi gõ Vim. Tôi đã sử dụng xmodmap, và đặt nó vào ~/.Xmodmap.

clear Lock
keycode 0x42 = Escape

Để áp dụng : xmodmap ~/.Xmodmap. Bạn có thể đặt tệp này vào một tệp như ~ / .bash_profile (Tôi đã nhập ~ / .xinitrc, vì tôi không sử dụng trình quản lý đăng nhập.

Để ánh xạ CapsLock + [Khóa khác], hãy xem xét sử dụng xbindkeys.


4

Một giải pháp chỉ dành cho Linux để ánh xạ lại các khóa trên toàn hệ thống là viết quy tắc udev đơn giản. Nó sẽ không phụ thuộc vào X, sẽ hoạt động trên mọi thiết bị đầu cuối hoặc ứng dụng và có thể di chuyển giữa mọi cài đặt Linux gần đây bằng cách sao chép hai tệp.

Bạn cần phải viết 2 tệp: một tệp chứa quy tắc udev cho hạt nhân sắp xếp lại các khóa và một tệp chứa ánh xạ thực tế bạn cần.

Sử dụng phương pháp này Tôi đã ánh xạ lại toàn bộ bàn phím của mình, có thể mã này hữu ích như nguồn cảm hứng http://git.adirat.com/carpalx-keyboard


liên kết đã chết, bạn có thể vui lòng cập nhật nó không? cảm ơn!
qed

Tôi đã cập nhật nó, xin lỗi vì sự chậm trễ
gimmesudo

Bitbucket nói "Bạn không có quyền truy cập vào kho lưu trữ này." Bạn có thể làm cho nó công khai một lần nữa? Cảm ơn!
Tianyi Cui

@TianyiCui kiểm tra liên kết ngay bây giờ
gimmesudo

1
Liên kết đã chết hoặc bị chặn đối với tôi. Bất kỳ cơ hội nào bạn có thể đưa các tập tin thực tế lên trong câu trả lời của bạn?
mê cung


1

Tôi đã chạy qua một câu hỏi khác nhau trên AskUbfox có câu trả lời hay , nhưng tôi phải sửa đổi nó một chút để hoạt động trên hệ thống của mình.

Theo nhận xét của Louis và Sergiy ở đó, tôi đã đưa ra giải pháp này phù hợp với tôi trên Ubuntu 16.04 (Xenial) và tôi sẽ mang nó đến các hệ thống Linux khác mà tôi sử dụng.

Tôi đã cài đặt xcape và đặt các dòng mã sau vào .profiletệp của mình trong thư mục chính.

PHƯƠNG PHÁP CẬP NHẬT:

Do các trình quản lý hiển thị khác nhau (gdm / kdm / sddm / etc) hoạt động theo những cách lạ và đặt lại setxbmapsau khi tạm dừng / tiếp tục hoặc khóa / mở khóa, tôi đã phát hiện ra cách đặt các tùy chọn theo cách chúng kế thừa nó và không ' T thiết lập lại tất cả các thời gian. Bởi vì tôi tạm ngưng và tiếp tục rất nhiều, tôi cần đảm bảo rằng tôi đã không nhận được nhiều bản sao xcapechạy được giải quyết trong tập lệnh mới bên dưới.

Đầu tiên sửa đổi cấu hình bàn phím với sudo gedit /etc/default/keyboardvà đặt XKBOPTIONS="ctrl:nocaps"và sau đó ~/.xprofileđặt dòng đơn bên dưới.

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

Hy vọng rằng các phần khác nhau của tập lệnh giúp bạn tiết kiệm thời gian / rắc rối và ngăn chặn thông tin đăng nhập bị mắc kẹt. Đầu tiên, nó kiểm tra xem đã có phiên bản nào chạy chưa và giết nó, vì điều duy nhất xcapelà ánh xạ Ctrl sang Esc, điều này an toàn, sau đó hashphần đảm bảo rằng bạn đã xcape cài đặt nếu không hệ thống của bạn có thể bị treo khi bạn cố đăng nhập vì tất cả khởi động kịch bản dự kiến ​​sẽ thoát sạch.

Cách cũ:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

Trung sĩ:

Tôi đã sử dụng công cụ gnome-tinh chỉnh để ánh xạ Caps Lock sang Ctrl vì không có bố cục Bàn phím trong Cài đặt hệ thống trên Ubuntu 14.04. Sau đó xcape -e 'Control_L = Escape' không hoạt động, nhưng sau khi sử dụng xcape -d tôi đã phát hiện ra rằng Caps Lock tạo mã khóa 66 và ánh xạ lại tương ứng: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov ngày 4 tháng 9 năm 14 lúc 10:08

Louis:

Theo bài đăng trên blog này, có thể làm điều này chỉ với xcape: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'mũ: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Louis Simoneau ngày 4 tháng 8 năm 15 lúc 10:06

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.