Tạo cấu hình xkb từ xmodmap


8

Tôi có một xmodmaptệp tùy chỉnh tôi sử dụng, bao gồm các dấu phụ đa ngôn ngữ hữu ích, trích dẫn tiếng Anh, dấu gạch ngang & c. Tôi muốn sử dụng bản đồ này kmscon, vì vậy tôi cần tạo một xkbcấu hình từ nó. Có một phương pháp tự động để làm điều đó? Hoặc thậm chí là một quy trình thủ công đơn giản, vì tôi sẽ không cần phải làm điều này thường xuyên?

Câu trả lời:


7

Tạo tập tin cấu hình xkb của riêng bạn

Ý tưởng là "đọc" cấu hình bàn phím hiện tại (không gọi xmodmap) và viết tệp biểu tượng của riêng bạn dựa trên nó. Đầu tiên:

xkbcomp -xkb $DISPLAY

Điều này tạo ra server-0_0.xkb. Trong tệp này, lấy khối sau:

xkb_symbols "pc+inet(evdev)+compose(menu)+whatever(option)" {
    key <ESC> { [ Escape ] };
    ...
};

thay đổi dòng đầu tiên thành:

default xkb_symbols "my_symbols" {
    include "pc+inet(evdev)"
    include "compose(menu)+whatever(option)"

(Tôi nghĩ bạn có thể chia các tùy chọn thành nhiều dòng "bao gồm" tùy thích). Thay đổi các khóa bạn muốn sửa đổi và thêm chúng vào override:

override key <AE10>  { [ 0, parenright, degree ]};

Hủy bỏ tất cả các phím không thay đổi.

Cài đặt toàn hệ thống

Đặt tất cả điều này vào /usr/share/X11/xkb/symbols/my_terrific_kb. Bây giờ người dùng có thể tải nó bằng setxkbmap my_terrific_kb(trong .xinitrchoặc .xsessionrc). Có lẽ bạn có thể đưa Option "XkbLayout" "my_terrific_kb"vào xorg.confmột sự thay đổi toàn hệ thống.

Cài đặt một người dùng

Đặt tất cả điều này vào ~/anywhere/my_terrific_kb. Tìm id XInput của bàn phím của bạn với xinput list. Sau đó chạy xkbcomp -i <XInput_id> ~/anywhere/my_terrific_kb $DISPLAY.


Ok, nhưng tôi nên làm gì trên một hệ thống mà tôi không root?
Frank Breitling

Chỉnh sửa câu trả lời. Tôi không chắc chắn 100% cho phần cuối cùng: Tôi tìm thấy trong kho lưu trữ của mình, tôi đã sử dụng xkbcomp để áp dụng cấu hình xkb tùy chỉnh của mình; tuy nhiên tôi đã bỏ phương pháp này để cài đặt toàn hệ thống, tôi không thể nhớ tại sao. Có lẽ bạn cần một định nghĩa bàn phím đầy đủ, không chỉ ghi đè. Hãy kiểm tra. Chuẩn bị dòng lệnh setxkbmap detrong một thiết bị đầu cuối trong trường hợp xảy ra sự cố (sao chép-dán một dòng mới để xác thực dòng nếu Trả lại cũng bị hỏng)
L. Levrel

Cảm ơn. Trông phức tạp. Tôi sẽ thử nó ngay khi tôi tìm thấy thời gian cho loại thí nghiệm này. Thật không may, cài đặt một người dùng yêu cầu root hoặc xinput đã được cài đặt. Tôi hy vọng XInput_id sẽ không thay đổi từ phiên X này sang phiên khác.? Nếu không có giải pháp nào dễ dàng hơn, xkb là một tên khốn thực sự què quặt và tôi sẽ ở lại với Xmodmap.
Frank Breitling

Nếu tập tin có thể đọc được, bạn có thểgrep XINPUT /var/log/Xorg.0.log
L. Levrel

Lưu ý rằng trong khi với "không gọi xmodmap", nếu bạn bỏ qua hướng dẫn đó và bắt đầu này làm gọi nó với cấu hình bạn muốn nhập khẩu, và sau đó tiếp tục từ đó, bạn sẽ nhận được một tập tin trong đó bao gồm ánh xạ trước đó xác định của bạn , làm cho điều này một điểm khởi đầu tiện dụng.
mattdm

2

Tệp bản đồ được tạo bởi xkbcomp :0 custom-xkb-keymapbao gồm nhiều thành phần mà bạn có thể tải bằng cách hoán đổi các đối số xkbcomp custom-xkb-keymap :0. Nó cho thấy một vài cảnh báo ở đây, nhưng dường như hoạt động, khi tôi thay đổi bố cục trong tệp.

Bố cục xkb được lưu trữ trong symbolsthư mục, vd /usr/local/share/X11/xkb/symbols. Đường dẫn có thể thay đổi tùy theo hệ thống. Khi bạn cần bố trí, bạn cần cắt bỏ phần giống như:

xkb_symbols "id+id+id(pc104)" {
    name[group1]="..."
    .
    .
    .
};

và lưu trữ nó trong symbolsthư mục. Hãy chắc chắn rằng, bạn không ghi đè lên bất kỳ tập tin nào ở đó! Khi nó được lưu trữ ở đó (ví dụ như mylayout), bạn có thể tải nó bằng cách gõ setxkbmap mylayout. Và điều này tương ứng với xorg.confcài đặt Option "XkbLayout" "mylayout"trong phần InputDevice(xem trang man cho kbd để biết thêm chi tiết).

Có vẻ như các phần khác trong xkcompđầu ra tương ứng với các tệp trong các thư mục khác, vì vậy nếu một cái gì đó không hoạt động, bạn có thể sẽ phải tách ra custom-xkb-keymapthành phần của nó và sao chép nó vào các thư mục thích hợp bên dưới /usr/local/share/X11/xkb. Nhưng đây là điều tôi chưa bao giờ làm, chưa.

Bố trí tốt hơn

Thay vì sử dụng các bãi chứa thô trông giống như mã dịch ngược, bạn cũng có thể tạo symbolstệp của riêng mình , dễ đọc hơn. Tôi đã có bố cục tùy chỉnh của riêng mình, có thể sẽ không thể sử dụng được cho hầu hết các bạn, nhưng bạn vẫn có thể xem tệp ngắn này mà tôi sử dụng để lập trình trên bàn phím tiếng Đức (chỉ để biết ý tưởng này trông như thế nào và những gì bạn có thể làm với một symbolstập tin).


1

Tôi chỉ giải quyết vấn đề. Sau khi tôi áp dụng xmodmapcấu hình của mình , tôi đã sử dụng xkbcomp :0 custom-xkb-keymapsao chép xkbsơ đồ bàn phím hiện tại (từ màn hình :0) sang một tệp có tên custom-xkb-keymap.


1
Khi bạn đã thực hiện điều đó, bạn sẽ đặt tệp ở đâu để nó được tải tự động?
mattdm

0

Có một vấn đề tương tự trong luồng này: Xephyr: ánh xạ bàn phím không hoạt động đúng Tương tự như giải pháp được cung cấp, bạn có thể lưu cài đặt bàn phím của mình với

setxkbmap -display :0 -print > mykeymap

Tập tin này có thể được áp dụng bởi xkbcomp trên các hệ thống khác:

xkbcomp mykeymap :0

Lệnh này có thể diễn ra trong quá trình tự khởi động của gnome hoặc các DE khác. Tôi không biết nếu tất cả các thay đổi thủ công sẽ được thực hiện, nhưng tôi nghĩ rằng nó đáng để thử. Nơi để đặt tệp này được tải tự động mà không cần sử dụng xkbcomp, tôi không biết.

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.