Làm cách nào để xác định Khóa soạn thảo trong thiết bị đầu cuối (không có môi trường máy tính để bàn)?


17

Tôi muốn xác định một composekhóa trên hệ thống của mình (Debian Sid "Wheezy"). Tôi không có Xorg (và không muốn bất kỳ môi trường máy tính để bàn nào). Chỉ trong thiết bị đầu cuối.

Tôi muốn thiết lập nó trên Alt-Grchìa khóa của tôi (phải Alt). Tôi đã thử một lúc nhưng tôi không thể tìm ra cách thiết lập nó.

Tôi đã nghiên cứu và tìm thấy một số hướng:

  • $ showkeyđưa cho tôi mã Alt-Grkhóa của khóa của tôi (# 100)

  • $ dumpkeys$ dumpkeys --compose-onlyxuất "nội dung hiện tại của trình điều khiển bàn phím", theo định dạng được chỉ định bởi keymaps, theo mantrang

  • $ loadkeys tải một bảng dịch bàn phím

Tôi chắc chắn điều đó không khó nhưng tôi nhớ cách đối phó với điều đó ...


Hừm, tôi không theo dõi 100%, bạn muốn Alt-Gr làm gì khi đánh nó?
Emanuel Berg

Tôi muốn nó là Khóa soạn thảo . Trên thực tế, tôi chỉ muốn xác định Khóa soạn thảo ở đâu đó và vì tôi đã từng sử dụng nó trên Alt-Gr của mình, tôi muốn xác định nó ở đó. Việc cài đặt với GUI rất dễ dàng , nhưng tôi có thể xác định nó ở chế độ bảng điều khiển thuần vì tôi chưa cài đặt hệ thống X (đây không phải là một tùy chọn). Tôi chỉ không thể tìm ra làm thế nào.
cedbeu

Câu trả lời:


10

Trên các hệ thống Debian và Ubuntu mới hơn, cài đặt bàn phím của bạn được đặt /etc/default/keyboardvà chia sẻ giữa X và bảng điều khiển. Chỉ cần chạy

sudo dpkg-reconfigure keyboard-configuration

và chọn Compose key: Right Alt (AltGr)trên màn hình thích hợp.

Bạn cũng có thể đưa XKBOPTIONS=compose:raltvào /etc/default/keyboardvà chạy

sudo dpkg-reconfigure console-setup

Các hệ thống cũ hơn có phím Soạn trên bảng điều khiển theo mặc định. Trong uscách bố trí, nhấn cả hai Alt phím với nhau hoạt động như thế nào Compose. 1

Ví dụ: Alt+ AltGr, ", A=> Ä

Nếu bạn AltGrchỉ thích được Compose, bạn cần thay đổi

alt keycode 100 = Compose

trong bản đồ bàn phím hoạt động của bạn để

keycode 100 = Compose

Cách dễ nhất để làm điều này là thực hiện các thay đổi ở trên /lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc.

Cách tốt hơn là tạo một tệp mới được gọi /lib/kbd/keymaps/i386/include/altgr-is-compose.incvới dòng trên, tạo một sơ đồ phím mới bao gồm nó và đặt tệp đó vào sơ đồ phím mặc định của bạn.

  1. PrtScncũng hoạt động như Composemặc định.

Tôi không làm việc này. Các dpkg-reconfigurethuật sĩ thực sự yêu cầu về một phím soạn, nhưng nó nói nó không làm việc trong "chế độ Unicode" (?). Ngoài ra, khi không ở chế độ đó, nó cho biết Control + period hoạt động như một phím soạn thảo. Nhưng tôi cũng không làm việc đó.
Emanuel Berg

Tôi nghĩ rằng thông điệp cảnh báo đề cập đến unicode_start. Đối với tôi, nó vẫn hoạt động, miễn là tôi chạy setupconnhư đã dpkg-reconfigurenói.
Mikel

Khi tôi chạy setupcontrong thiết bị đầu cuối X ( urxvt), nó báo "Chúng tôi không ở trên bàn điều khiển, bàn điều khiển không được cấu hình." Ngoài ra, showkeyphàn nàn "Không thể đưa mô tả tệp vào bảng điều khiển". Trong đó tty, cả hai đều hoạt động nhưng showkeynói (điều đầu tiên) rằng "chế độ kb là UNICODE", vì vậy có lẽ đó thực sự là lý do tại sao nó không hoạt động. Nhưng, thời gian Control + hoạt động trong tty. OK, nó có ý nghĩa bây giờ.
Emanuel Berg

Câu hỏi của bạn nói rằng bạn không có X? Bạn cần chạy setupcontrên bảng điều khiển ảo Linux, ví dụ Ctrl + Alt + F1.
Mikel

1
Có vẻ như console-setupkhông hỗ trợ rất nhiều trình tự soạn theo mặc định. Bạn có thể chạy dumpkeys --compose-onlyđể xem cái nào. Bạn sẽ có thể sửa đổi console-setuptập lệnh init để thêm các quy tắc soạn thảo bổ sung nơi nó chạy loadkeys.
Mikel

2

"Soạn" trên bàn điều khiển cho phép nhập hai ký tự nhưng xuất ký tự thứ ba.

vấn đề là các định nghĩa soạn thảo sử dụng byte , cả hai như là hai đầu vào (nghĩa là bạn không thể định nghĩa compose theo các phím được gõ mà chỉ theo các ký hiệu được gõ) và cho đầu ra.

để làm cho nó hoạt động trong UTF-8, đó là multibyte (ít nhất là 1 đến 4 byte) sẽ đòi hỏi những thay đổi lớn trong cách xử lý đầu vào của bàn điều khiển và thay thế mảng char đơn giản hiện đang được sử dụng bởi một thứ phức tạp hơn. Dường như không có kế hoạch để làm điều đó (sự đồng thuận giữa các nhà phát triển hạt nhân là giao diện điều khiển nên vẫn là một giao diện điều khiển, một cái gì đó đơn giản, chỉ được sử dụng cho ressort cuối cùng, nếu bạn thực sự cần unicode thì bạn cũng có thể cần thầu, định hình, v.v. tốt hơn là chạy một thiết bị đầu cuối đồ họa (xterm toàn màn hình trên X11; nhưng có những khả năng khác).

Vì vậy, thực sự nó không hoạt động, và sẽ không hoạt động, với các nhân vật đa nhân trên bảng điều khiển. NHƯNG, nó vẫn hoạt động nếu bạn giới hạn các định nghĩa soạn thảo thành ASCII đơn giản.

Và tôi cũng phát hiện ra rằng nó cũng hoạt động nếu đầu ra ở dạng iso-8859-1 (tương ứng với các giá trị unicode lên đến 0x00ff); cho rằng bạn có thể đặt một số tập lệnh bắt đầu một dòng:

    loadkey / somepath / somefile

và đặt vào tệp đó các định nghĩa soạn thảo mà bạn muốn (hãy cẩn thận lưu tệp ở dạng mã hóa ISO-8859-1; và chỉ sử dụng các ký tự lớn hơn 0x7f), cú pháp của tệp đó rất đơn giản, các dòng như sau:

    soạn 'somechar' 'somotherchar' thành 'mong muốn'

ví dụ:

    soạn 'a' 'a' thành 'å'
    soạn 'a' 'e' thành ''

dấu nháy đơn phải được thoát ra.

ảnh hưởng của các khóa dấu phụ cũng được xác định trong tệp đó; cho dead_acute + a bạn xác định một dòng như:

    soạn '\' '' a 'thành' á '

dead_grave sử dụng backtick (`), dead_diaeresis sử dụng doublequote ("), dead_circumflex sử dụng cyclflex (^) và dead_tilde sử dụng tilde (~).


Cảm ơn, có nó để làm việc. Chỉ, tôi đã phải thay đổi compose 'a' 'a' to 'å'thành compose 'o' 'a' to U+00E5, nếu không thì loadkeysphàn nàn về một lỗi cú pháp.
Emanuel Berg

Khi bạn sử dụng 'å', bạn đã viết tệp trong iso-8859-1 (không phải utf-8)?
Pablo Saratxaga

Tôi không biết. Làm thế nào để tôi kiểm tra điều đó?
Emanuel Berg

để kiểm tra xem một tập tin có ở utf-8 không: iconv -f utf-8 -t utf-8 filename nếu không có lỗi, thì đó là trong utf-8
Pablo Saratxaga

Điều đó dường như làm hỏng tập tin, nhưng không, echo $?ít nhất không có lỗi và không có đầu ra stderr. Ngoài ra, filecho tôi biết đó là UTF-8 vì vậy nó có ý nghĩa.
Emanuel Berg
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.