Tắt khóa Caps khi nhấn Escape


10

Có cách nào để vô hiệu hóa CapsLockbất cứ khi nào Escđược nhấn. Vâng, tôi sử dụng VIM! Tôi thực sự có một bố trí bàn phím all-caps thay thế trên Ctrl-6nhưng tôi thấy nó cồng kềnh và muốn hệ điều hành vô hiệu hóa CapsLock bất cứ khi nào Escđược nhấn. Ngoài ra, tôi thường SSH vào các máy chủ khác trong một vài giờ vì vậy tôi đang sử dụng VIM chứng khoán ở đó.

Lưu ý rằng tôi đã trao đổi CapsLockEsccác phím. Tuy nhiên, khi Escnhấn phím (điều này được dán nhãn CapsLocktrên bàn phím và bên cạnh A), tôi cần nó để thực hiện cả hai EscapeDisable-CapsLock-If-It-Is-Enabled.

Đây là trên Kubfox 12.10. Cảm ơn.


Bạn cần thêm chức năng đó chỉ cho vim, hoặc máy tính để bàn hoàn chỉnh?
mtk

Tôi muốn nó là một tính năng máy tính để bàn.
dotancohen

Câu trả lời:


5

Trong X11 (trên bảng điều khiển tôi không biết) bạn có thể làm điều đó bằng cách xác định lại hành vi của phím Escape. Tôi đã xem định nghĩa "shift (break_caps)" để xem cách nó hoạt động và điều chỉnh nó.

Nhìn vào câu trả lời này trên xkb để biết thêm chi tiết về cách / nơi để đặt các tập tin được sửa đổi tại địa phương và tải chúng.

Và để làm những gì bạn muốn, bạn cần trong tệp biểu tượng cục bộ (ví dụ ~/.xkb/symbols/mysymbols:) một phần như thế này:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

và trong tệp sơ đồ bàn phím cục bộ (ví dụ : ~/.xkb/keymap/mykbd; bạn có thể tạo nó với setxkbmap -print > ~/.xkb/keymap/mykbd) thay đổi xkb_symbolsdòng cần thêm +mysymbols(esc_breaks_caps).

Bây giờ bạn có thể tải nó bằng: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY và nhấn Escsẽ loại bỏ trạng thái CapsLock (thực ra, hiệu ứng xảy ra khi phát hành Esc; tôi nghĩ rằng chỉ các phím bổ trợ mới có hiệu lực ngay lập tức; các hiệu ứng khác là sau khi phát hành.)

Ồ, nếu bạn cũng muốn trao đổi các phím Escape và CapsLock; sau đó sử dụng cái này thay thế (và bạn đặt "+ mysymbols (esc_swap_and_breaks_caps)" trong tệp mykbd của bạn):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

lưu ý các phím vật lý là <CAPS><ESC>; <CAPS>(khóa được khắc CapsLocktrong bàn phím của bạn) gửi Escape và <ESC>(khóa được khắc Esc) gửi CapsLock, với <CAPS>(gửi Escape) cũng bỏ cài đặt trạng thái capslock


1

Thêm các dòng này vào ~/.Xmodmap:

clear lock
keycode 0x42 = Escape

Sau đó, gõ lệnh:

xmodmap ~/.Xmodmap

Caps LockKhóa của bạn bây giờ được ánh xạ vào Esckhóa.

Url tham chiếu .


Cũng đi qua bài viết hay này về Ánh xạ CapsLock để thoát trong Ubuntu , có vẻ như là một người dùng unix.se :)


Cảm ơn bạn. Tôi đã trao đổi CapsLock và Esc. Tuy nhiên, khi nhấn phím Esc (được dán nhãn CapsLock trên bàn phím và bên cạnh A), tôi cần nó để thực hiện cả Escape Disable-CapsLock-If-It-Is-En bật. Tôi sẽ chỉnh sửa câu hỏi để làm rõ. Cảm ơn.
dotancohen

Tôi nghĩ bạn cần vòng ngược lại. Hơi bối rối ở đây. Điều gì xảy ra khi nhấn EscCapslockssau những thay đổi này?
mtk

Hiện tại: khi nhấn ESCphím, CapsLockchức năng sẽ bật và khi nhấn CapsLockphím, ESClệnh sẽ được gửi (tức là ESCphím được ánh xạ tới CapsLockCapsLockphím được ánh xạ lại ESC). Mục tiêu của tôi với câu hỏi này là phải có nhấn CapsLockquan trọng thực hiện cả các ESCchức năng (mà nó hiện đang làm) tắt CapsLockchức năng khi và chỉ khi các CapsLockchức năng được kích hoạt (tức là không bật tắt các CapsLockchức năng, mà là vô hiệu hóa nó nếu CapsLockđược kích hoạt).
dotancohen

1

Tôi không chắc chắn nếu điều này trả lời câu hỏi của bạn, nhưng để ánh xạ Escchức năng tới CapsLockkhóa, bạn có thể sử dụng điều này:

setxkbmap -option "caps:escape"
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.