Câu trả lời:
Các công cụ để thao tác bố trí bàn phím trên bảng điều khiển ảo là loadkeys, dumpkeysvà showkey. Đọc các trang của họ và thông báo cho bạn về sự phức tạp của họ.
Lưu ý rằng các công cụ này chỉ hoạt động trong bảng điều khiển ảo, không phải trong trình giả lập thiết bị đầu cuối trong môi trường đồ họa như gnome. Tìm hiểu về sự khác biệt đọc câu hỏi và câu trả lời này: https://askubfox.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .
Dưới đây là một hướng dẫn ngắn để làm những gì bạn muốn:
Lưu bố cục bàn phím hiện tại của bạn:
$ dumpkeys > backup.kmap
Trong trường hợp có lỗi xảy ra, bạn có thể khôi phục sơ đồ bàn phím của mình bằng lệnh:
$ sudo loadkeys backup.kmap
Nếu bàn phím bị rối đến mức bạn thậm chí không thể làm điều này thì tùy chọn duy nhất của bạn không liên quan đến phép thuật hạt nhân cổ là khởi động lại.
Kiểm tra mã khóa nào được gán cho khóa của bạn:
$ showkey
Bây giờ nhấn phím ESC và phím CAPSLOCK. Các mã khóa sẽ hiển thị trên màn hình. Lưu ý các mã khóa. Trên hệ thống của tôi, ESC có mã khóa 1 và CAPSLOCK có mã khóa 58. showkeysẽ chấm dứt sau 10 giây không hoạt động (ít nhất là trên Ubuntu 10.04 của tôi).
Lưu ý tên của các phím ESC và CAPSLOCK từ thùng rác:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
Lưu ý dòng keymap từ dumpkey:
$ dumpkeys | head -1
keymaps 0-127
Tạo một tệp sơ đồ phím chuyển ESC và CAPSLOCK:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
Tải sơ đồ:
$ sudo loadkeys swap_esc_capslock.kmap
Kiểm tra: Kiểm tra khóa CAPSLOCK là hiển nhiên. Chỉ cần nhấn phím CAPSLOCK và kiểm tra xem các phím khác có được viết hoa không. Để kiểm tra khóa ESC, bạn có thể sử dụng CTRL + V theo sau là ESC. Nó nên in ^[. CTRL + V làm cho shell in nguyên văn khóa tiếp theo thay vì diễn giải nó.
Để tải sửa đổi này trên mỗi lần khởi động lại, hãy đặt dòng sau vào /etc/rc.localtệp của bạn :
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
Thông tin được thu thập từ nhiều trang khác nhau, bao gồm, nhưng không giới hạn ở:
/usr/bin/loadkeystrong /etc/rc.localvì biến môi trường đường dẫn không đảm bảo được thiết lập ở giai đoạn này. Và sudokhông cần thiết trong rc.local.
rc.localthực thi mỗi khi hệ thống khởi động. @ bukzor của sudo setupconlà không trong rc.local, đó là một thiết lập lệnh một lần, thay thế sơ đồ bàn phím mặc định của hệ thống, mà không cần thêm bất kỳ mã khởi động chạy. Thêm loadkeys vào rc.local, thêm mã khởi động bổ sung và sao chép những gì đã được thực hiện bởi các trình tải mặc định của hệ thống. Các rc.localphương pháp thực sự có thể là ít an toàn vì nó phụ thuộc vào một con đường phi tiêu chuẩn với sơ đồ bàn phím.
setupconphương pháp. Thêm câu trả lời của riêng bạn hoặc chỉnh sửa của tôi nếu bạn muốn.
setupcon. Dường như tháng tám đã giả định rằng sudo setupcon --savesẽ đi vào rc.localmà tôi không nghĩ là đúng, nhưng nếu có, bạn không cần phải sudoở rc.local. Tôi nghĩ rằng chúng tôi cần thêm thông tin trước khi cập nhật câu trả lời của bạn. Câu hỏi chính là "Làm thế nào để cài đặt sơ đồ bàn phím đã sửa đổi để nó được tải tự động trong quá trình khởi động?" Tôi thực sự không biết cách nào tốt hơn rc.localhoặc cài đặt sơ đồ bàn phím hoặc ngay cả khi cài đặt sơ đồ bàn phím sẽ hoạt động. Tôi đã nghiên cứu điều này gần đây và tôi sẽ kiểm tra lại ở đây.
Sử dụng 'ctrl: nocaps' thay vì 'ctrl: hoán đổi' nếu bạn chỉ muốn có hai khóa mũ (capslock bởi một tên khác vẫn siêu vô dụng).
X11: (xem thêm /usr/share/X11/xkb/rules/base.lst:)
sudo vim /etc/default/keyboard
XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm
Bảng điều khiển văn bản: (bị đánh cắp từ setupcon)
#!/bin/sh
. /etc/default/console-setup
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
"$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
| gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
sudo setupcon --saveđể thay đổi vĩnh viễn, thay vì chỉnh sửa RC.local. Điều đó về cơ bản giống nhưdumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz