Ánh xạ Super + [Trái | Phải] đến Trang chủ / Kết thúc


8

Làm cách nào để ánh xạ khóa "Siêu" sao cho khi kết hợp với Trái / Phải, nó tạo ra mã khóa Home / End?

Setxkbmap hiện tại của tôi:

setxkbmap \
  -model pc105 \
  -layout 'us(dvorak-intl),us(alt-intl)' \
  -option \
  -option grp:lctrl_lshift_toggle \
  -option compose:rwin

1
Chỉ cần FYI, Gedit tôn vinh các gtktextviewphím tắt: Ctrl + Shift + PageUpCtrl + Shift + PageDown để chọn (hoặc tiếp tục chọn) cho đến đầu và tương ứng ở cuối dòng. Tôi không nghĩ đó là những gì bạn đang theo đuổi, mặc dù ... :)
don_crissti

Tôi đã cập nhật câu hỏi này để cụ thể hơn về root của những gì tôi muốn ... không chỉ cho gedit mà càng rộng càng tốt trong X.
iokevins

Câu trả lời:


11

Bạn không thể làm điều đó chỉ với tùy chọn setkxbmap, vì không có tùy chọn mặc định nào làm những gì bạn muốn.

Nhưng bạn có thể làm điều đó bằng cách xác định hành vi chính ở cấp độ thấp hơn.

Trang http://madduck.net/docs/extending-xkb/ đã giúp tôi hiểu và tìm ra cách để làm điều đó.

Tạo một tệp ~ / .xkb / keymap / mykbd nơi bạn đặt đầu ra của setxkbmap, nó sẽ là định nghĩa bàn phím cơ sở của bạn; ví dụ:

setxkbmap -print > ~/.xkb/keymap/mykbd

sau đó chúng tôi sẽ tạo một ~/.xkb/types/mytypestập tin và đặt như sau:

partial
xkb_types "super_level2" {
    Virtual_modifiers Super;
    type "SUPER_LEVEL2" {
        modifiers= Super;
        map[Super]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Super";
    };
};

nó xác định loại SUPER_LEVEL2 sẽ cho phép dễ dàng xác định các ký hiệu được gửi khi nhấn phím Super.

sau đó, ~/.xkb/symbols/mysymbolsđặt các dòng sau:

partial modifier_keys
xkb_symbols "super_arrows_home_end" {
    key <LEFT>  {
        type[Group1] = "SUPER_LEVEL2",
        symbols[Group1] = [    Left,   Home      ]
    };
    key <RGHT>  {
        type[Group1] = "SUPER_LEVEL2",
        symbols[Group1] = [    Right,  End       ]
    };
};

(lưu ý việc sử dụng loại "SUPER_LEVEL2 mà chúng tôi đã xác định, điều đó có nghĩa là biểu tượng thứ hai (cấp 2) trên dòng ký hiệu được kích hoạt khi nhấn phím Super (thay vì phím Shift).

Cuối cùng, chỉnh sửa ~/.xkb/keymap/mykbdtệp để tải đoạn mã chúng tôi đã viết:

  • trong xkb_typesdòng thêm +mytypes(super_level2)vào bên trong dấu ngoặc kép
  • trong xkb_symbolsdòng thêm +mysymbols(super_arrows_home_end)vào dấu ngoặc kép.

Bây giờ bạn có thể tải nó với

xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY

Kiểm tra các phím trái / phải của bạn, chúng sẽ hoạt động như bạn muốn.


1
Không hoạt động trên Ubuntu 16.04. Super key vẫn mở Dash Home.
Peter Dotchev

@PeterDotchev DE của bạn sẽ luôn đến trước, vì vậy bạn phải tắt hoặc sắp xếp lại các phím tắt trước.
owzim

Điều đó làm việc tốt. Làm thế nào bạn sẽ đi về và ánh xạ super+ shift+ leftđến shift+ homesuper+ shift+ rightđến shift+ endđể lựa chọn?
owzim

1
Bạn không thể ánh xạ khóa hoặc tổ hợp phím thành tổ hợp phím. Bạn chỉ có thể ánh xạ tới một khóa khác (ký hiệu của khóa); hoặc đến một chuỗi. Nếu bạn tình cờ biết một chuỗi (có mã thoát và như vậy) đó là những gì bạn thực sự muốn sản xuất, thì bạn có thể ánh xạ tới chuỗi đó. Vì vậy, bạn nên xem những gì được tạo ra bởi shift + home trên bàn phím hiện tại của bạn và ánh xạ tới đó. Tuy nhiên, lưu ý rằng các chương trình hiện đại cho phép xác định các phím tắt chính có khả năng bỏ qua điều đó; mặt khác, họ thường cho phép bạn xác định lại các phím tắt bằng cách chỉ cần gõ bất kỳ kết hợp nào bạn thích.
Pablo Saratxaga

Tôi gặp lỗi khi làm theo các hướng dẫn sau: syntax error: line 12 of mysymbols last scanned symbol is: End Error: Error interpreting include file "mysymbols" Exiting Abandoning symbols file "(null)" Error: success in unknown Couldn't write keyboard description to :0 Tôi đang chạy Linux Mint 19 (dựa trên Ubuntu 18). Tôi hiểu rằng câu trả lời ban đầu khá cũ, vì vậy có lẽ có gì đó đã thay đổi trong định dạng. Bất kỳ gợi ý được đánh giá cao.
Alex Fedulov
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.