Vì bạn muốn ánh xạ lại các phím cho tất cả các ứng dụng, tùy chọn tốt nhất là sử dụng xmodmap. Nó linh hoạt và rất mạnh mẽ nhưng liên quan đến việc gõ một vài lệnh vào một thiết bị đầu cuối.
Bước 0 - Cách tiếp cận
Máy chủ X quản lý bàn phím và tất cả các sự kiện chính và dịch mã đó thành mã phím cho tất cả các ứng dụng.
Cách tiếp cận sẽ là ánh xạ một phím bổ trợ (như phím Super hoặc phím Alt phải) làm phím "chuyển đổi chế độ" và báo cho máy chủ X tạo các mã khác nhau tùy thuộc vào việc phím được nhấn với phím Chế độ có được giữ hay không.
Theo mặc định, không có khóa chuyển đổi chế độ được xác định và tất cả các khóa được cấu hình để tạo cùng một mã khi chúng được nhấn có hoặc không có công tắc chế độ. Điều này là tốt vì điều này có nghĩa là ngoại trừ các khóa bạn ghi đè rõ ràng, không có khóa nào khác sẽ hoạt động khác hoặc cần cấu hình bổ sung.
Tuy nhiên, tôi muốn bạn xem xét sử dụng phím Right Alt làm công tắc chế độ, đặc biệt nếu bạn cũng đang sử dụng compiz vì một số plugin compiz ánh xạ các phím tắt siêu khóa (ví dụ: bộ chọn cửa sổ, bộ chuyển đổi, v.v.). Nếu bạn không thích điều khiển compiz qua bàn phím thì Super vẫn ổn.
Đối với xmodmap, các siêu khóa được xác định là Super_L hoặc Super_R. Bạn cần chọn một để sử dụng làm phím chuyển đổi chế độ. Ngoài ra, phím alt bên phải là Alt_R. Bạn có thể xác nhận những điều này bằng cách chạy xev và nhấn các phím cần thiết trên bàn phím của bạn. Xem bài này cho các bước.
Bước 1 - Thiết lập bản đồ sửa đổi
Mở terminal ( Applications -> Accesories -> Terminal
) và chạy lệnh sau để tạo tệp với các phím bấm hiện tại . Chúng tôi sẽ sử dụng điều này như là điểm khởi đầu.
xmodmap -pke > curkeys.map
xmodmap -pm >> curkeys.map
Mở cái này trong trình soạn thảo văn bản yêu thích của bạn. gedit curkeys.map &
mở nó trong gedit. Đến cuối tập tin, bạn sẽ thấy một số dòng như thế này:
keycode 253 =
keycode 254 =
keycode 255 =
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Xóa dòng bắt đầu bằng "xmodmap: tối đa 4 ..."
Chỉnh sửa bản đồ sửa đổi để nó trông như thế này. Đặt từ "thêm" vào đầu mỗi dòng và chèn "=" vào sau tên bổ nghĩa. Sau đó xóa mã trong ngoặc đơn và dấu phẩy. Cũng lưu ý rằng tôi đã chuyển Mode_switch
từ mod5
dòng này sang mod3
dòng khác vì nó trống. Bảng đã sửa đổi sẽ trông như thế này - nội dung thực tế sẽ thay đổi đôi chút trong trường hợp của bạn so với bên dưới (tùy thuộc vào bố cục bàn phím của bạn).
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L Alt_R
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift
Remap phím chuyển đổi chế độ vật lý. Thêm một dòng như thế này ở cuối (Thay thế Super_L bằng Super_R hoặc Alt_R nếu được yêu cầu).
keysym Super_L = Mode_switch
Xóa tên khóa (Super_L) khỏi bất kỳ định nghĩa sửa đổi. Đối với Super_L, điều này có nghĩa là xóa nó khỏi dòng mod4.
add mod4 = Super_R Hyper_L
Bây giờ phím "Super" bên phải vẫn sẽ hoạt động như một siêu khóa thông thường trong khi phím bên trái sẽ có các thuộc tính đặc biệt.
Bây giờ chúng ta cần ánh xạ lại các phím để tạo ra các mã khác nhau cho dù chúng có được nhấn trong khi giữ Super_L hay không. Mỗi dòng trong tệp của chúng tôi bắt đầu bằng keycode
chỉ định 4 phím cho mỗi phím được tạo dựa trên việc Mod1 (phím shift) và phím chuyển đổi Chế độ có được nhấn hay không. ( Liên kết )
!...........................................................................
! Key Base Shift Mode Mode+Shift
!---------------------------------------------------------------------------
keycode 13 = 4 dollar 4 quotedbl
keycode 14 = 5 percent 5 colon
keycode 15 = 6 asciicircum 6 comma
keycode 16 = 7 ampersand 7 period
...
keycode 45 = k K k K
Nếu chúng ta muốn nhấn phím Super_L + k để tạo khóa "+" thì chúng ta cần sửa đổi nó để đọc
keycode 45 = k K plus plus
Điểm cộng cuối cùng cũng ánh xạ Shift + Super_L + k thành dấu cộng, nhưng điều này có thể được ánh xạ sang thứ khác. Đối với mỗi khóa có chính xác 1 dòng để sửa đổi. Chỉnh sửa nhiều dòng hơn để ánh xạ lại nhiều phím hơn - giữ nguyên 2 mục nhập đầu tiên để giữ hành vi nhấn phím bình thường.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Cài đặt sơ đồ bàn phím bằng cách chạy các lệnh sau trong một thiết bị đầu cuối. Cái đầu tiên thiết lập nó cho phiên này, cái thứ hai làm cho nó vĩnh viễn cho các phiên trong tương lai.
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Bạn có thể kiểm tra ngay điều này bằng cách nhấn các phím đã sửa đổi (ví dụ Super_L + k).
Bước 3 - Thêm / chỉnh sửa bản đồ
Khi bản đồ được sửa đổi được cài đặt, thật dễ dàng để thêm các khóa mới.
Sử dụng xev để tìm mã khóa và keyyms
kiểm tra nó bằng cách chạy lệnh này để ánh xạ khóa:
xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
Thay thế các mục trong dấu ngoặc nhọn (như <code>
<base>
vv) bằng các giá trị phù hợp.
Sao lưu curkeys.map
tập tin.
- Mở
curkeys.map
và chỉnh sửa dòng cho mã khóa tương ứng.
Áp dụng lại với các lệnh dưới đây (lệnh đầu tiên là không cần thiết nếu bạn đã làm bước 2)
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Lưu ý: 1 : Các sửa đổi được thực hiện trong Phím tắt (thông qua ví dụ System -> Preferences -> Keyboard Shortcuts
:) ảnh hưởng đến bản đồ sửa đổi và thường sẽ bị mất trong lần đăng nhập tiếp theo. Vì vậy, xin vui lòng tránh điều đó.
Lưu ý: 2 : Đôi khi tôi nhận được thông báo lỗi như thế này trong khi sử dụng phương pháp này. Tôi không biết điều này có nghĩa là gì, tuy nhiên, những thứ này thường vô hại.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 263
Current serial number in output stream: 263
Trợ giúp chi tiết cho xmodmap có sẵn ở đây .