Câu trả lời:
xmodmap
Là lỗi thời; Vì vậy, thực sự nó nên được thực hiện với các xkb
công cụ.
Việc hoán đổi bạn muốn dường như không được bao gồm trong các tệp X11 mặc định; vì vậy bạn phải tự viết nó
Trang http://madduck.net/docs/extending-xkb/ đã giúp tôi hiểu và tìm ra cách để làm điều đó.
Tạo một tệp ~/.xkb/keymap/mykbd
nơi bạn đặt đầu ra setxkbmap
, nó sẽ là định nghĩa bàn phím cơ sở của bạn; ví dụ:
setxkbmap -print > ~/.xkb/keymap/mykbd
sau đó, tạo một tệp biểu tượng để xác định hoán đổi khóa của bạn, ví dụ như đặt nó vào ~/.xkb/symbols/myswap
ở đó, đặt các dòng sau:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
Sau đó, chỉnh sửa ~/.xkb/keymap/mykbd
tệp và thay đổi xkb_symbols
dòng để thêm
+myswap(swap_l_shift_ctrl)
cuối cùng, bạn có thể tải nó với xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(bạn không thể sử dụng "~" cho -I
tham số). Nó có thể sẽ đưa ra rất nhiều cảnh báo về các ký hiệu không xác định cho một số khóa hiếm, nhưng bạn có thể bỏ qua chúng (ví dụ: lỗi chuyển hướng sang dave 2> /dev/null
:).
Nếu bạn muốn có thể dễ dàng trao đổi giữa một ctrl / ca đảo ngược bình thường của bạn; chỉ cần tạo trong ~/.xkb/keymap/
một tệp khác mà không có tùy chọn "myswap" bổ sung và tải nó với xkbcomp
. Bạn có thể tạo hai tập lệnh nhỏ để tải chúng.
xkbcomp $DISPLAY some.dump
sau và trước khi gọi IBus, và thực hiện một khác biệt của hai bãi (đó là định nghĩa bàn phím hoàn chỉnh); bạn có thể sẽ thấy sự khác biệt
setxkbmap -option caps:escape
hoạt động. IBus nhớ các phím được hoán đổi Các phím Esc và Caps_Lock Nhưng nó không làm được với các phím Shift trái và Phím điều khiển trái.
Tôi gặp một số vấn đề về ánh xạ LALT
khi Control_L
sử dụng giải pháp của Pablo , có vẻ như bạn cũng cần thiết lập các modifier_map
tùy chọn.
Tôi đã sao chép một mẫu từ /usr/share/X11/xkb/symbols/altwin
- tìm kiếm xkb_symbols "ctrl_alt_win"
- và sửa đổi nó để đặt các thay đổi sau:
Các ~/.xkb/symbols/myswap
tập tin cuối cùng là:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
Tôi cũng đã thêm -w0
vào xkbcomp
lệnh để tránh bất kỳ đầu ra cảnh báo khi mở một lớp vỏ mới.
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** Chuyển đổi giữa Mac và Linux rất nhiều, tôi muốn có hai phím điều khiển trên Linux để xấp xỉ bàn phím Mac cho bộ nhớ cơ của mình.