Làm cách nào để thay đổi sơ đồ bàn điều khiển trong Linux?


36

Tôi muốn trao đổi EscCapsLocktrong bảng điều khiển (không phải trong X và sử dụng xev), làm thế nào tôi có thể làm điều đó?

Hệ điều hành của tôi là Ubuntu.

Câu trả lời:


60

Các công cụ để thao tác bố trí bàn phím trên bảng điều khiển ảoloadkeys, dumpkeysshowkey. Đọ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:

  1. 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.

  2. 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).

  3. 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
    ...
    
  4. Lưu ý dòng keymap từ dumpkey:

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. Tạo một tệp sơ đồ phím chuyển ESC và CAPSLOCK:

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. Tải sơ đồ:

    $ sudo loadkeys swap_esc_capslock.kmap
    
  7. 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 ở:


5
Bạn cũng có thể sử dụng 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
bukzor

Nó là an toàn hơn để sử dụng /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.
Tháng Tám Karlstrom

@AugustKarlstrom Lệnh trong rc.localthực thi mỗi khi hệ thống khởi động. @ bukzor của sudo setupconkhô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.
RobertL

@RobertL hãy xây dựng 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.
lesmana

Tôi không thể xác minh tuyên bố của @ bukzor về 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 sudorc.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.
RobertL

4

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
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.