Làm thế nào để làm cho các phím Hyper và Super không làm điều tương tự?


8

Tôi đã sử dụng xkb để ánh xạ lại phím windows bên phải (RWIN) sang Hyper_R vì tôi muốn sử dụng nó với AutoKey cho một số phím tắt đặc biệt. Tôi đã làm điều đó bằng cách chỉnh sửa

/usr/share/X11/xkb/symbols/pc

sửa đổi dòng RWIN:

  key <RWIN> {  [ Hyper_R   ]   };

( Đây là câu trả lời hướng dẫn tôi )

Từ những gì tôi có thể nói, điều này hoạt động và khóa Windows bên phải bây giờ kích hoạt Hyper_R. Tuy nhiên, có vẻ như trong Ubuntu (chính xác là Xubfox), Hyper và Super bằng cách nào đó đang làm điều tương tự. Super + e cũng khởi chạy trình chỉnh sửa và Hyper + e cũng vậy.

Tôi không chắc tại sao đây là nơi tôi có thể thay đổi hành vi này. Tôi muốn Hyper và Super là những sửa đổi khác nhau.


Có một điều ở đây , mặc dù tôi không nghĩ rằng cuộc đối thoại hiện tồn tại vào 13.10 ...
Wilf

Nhưng điều này phải được cấu hình ở đâu đó, phải không?
Alexander Rechsteiner

Bạn có thể tìm thấy chúng trongdconf-editor
Wilf

1
Cảm ơn, nhưng không có may mắn ở đó. Chết tiệt, toàn bộ điều này ánh xạ lại bàn phím trên Linux mang lại cho tôi bệnh tiểu đường.
Alexander Rechsteiner

+1: concord (về phần tiểu đường). Tôi không thể tìm thấy một hướng dẫn chi tiết, toàn diện, đẹp mắt về cách quản lý bàn phím trong Ubuntu. Có một loạt các tương tác giữa gnome-control-centre, gnome-Tune-tool, xkbd, xmodmap khá phức tạp và tệ nhất là không có giấy tờ. Nếu bạn tìm thấy một số liên kết xin vui lòng chia sẻ nó! (Mặc dù tôi nghi ngờ hầu như không ai biết nó thật Chỉ cần nhìn thấy ở unfixability của. Bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/... )
Rmano

Câu trả lời:


11

Vì một số lý do, Ubuntu hiện gán cả Super và Hyper cho Mod4. Bạn có thể thấy điều này trong / usr / share / X11 / xkb /bols / pc:

 key <SUPR> {   [ NoSymbol, Super_L ]   };
 modifier_map Mod4   { <SUPR> };

 key <HYPR> {   [ NoSymbol, Hyper_L ]   };
 modifier_map Mod4   { <HYPR> };

Tôi đã có thể thay đổi điều này để đặt siêu và siêu trên các sửa đổi riêng biệt mà không cần phải root hoặc sửa đổi bất kỳ tệp hệ thống nào. Tôi không chắc đây có phải là cách tốt nhất không vì tôi chắc chắn không phải là chuyên gia xkb, nhưng đó là cách đáng tin cậy đối với tôi.

Đầu tiên, tạo một tệp biểu tượng cục bộ. Tôi có của tôi trong $ {HOME} /. Config / xkb / biểu tượng / cục bộ. Điều này gán Super cho Mod3 và Hyper cho Mod4.

default  partial modifier_keys
xkb_symbols "superhyper" {

    modifier_map Mod3 { Super_L, Super_R };

    key <SUPR> {    [ NoSymbol, Super_L ]   };
    modifier_map Mod3   { <SUPR> };

    key <HYPR> {    [ NoSymbol, Hyper_L ]   };
    modifier_map Mod4   { <HYPR> };
};

Sau đó biên dịch lại bản đồ hiện có để thêm "cục bộ":

setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}

Đặt đoạn mã này trong tập lệnh sẽ được chạy khi bạn đăng nhập. Bạn có thể chạy nó như một người dùng thông thường.


Có thể chỉnh sửa tập tin đó để thay đổi HYPR thành Mod3 không?
Alex Moore-Niemi

3
Bạn có thể làm được việc này. Lợi ích của việc không chỉnh sửa tại chỗ là bản cập nhật hệ thống sẽ không ghi đè lên các thay đổi của bạn.
ergosys

Đối với bản thân tôi, tôi đã có nó hoạt động nhanh chóng với raw.githubusercontent.com/jabbalaci/dotfiles/master/.Xmodmap mặc dù nó tiếp tục dừng lại một cách bí ẩn ...
Alex Moore-Niemi

Ngoài ra, một nhược điểm của phương pháp trả lời của tôi mà tôi đã tìm thấy là nếu bàn phím của bạn bị rút phích cắm hoặc mất giao tiếp USB do trục trặc ngẫu nhiên, tập lệnh phải được chạy lại. Có lẽ có một số cách để chạy lại nó tự động, nhưng tôi đã không nhìn vào nó. May mắn là điều trục trặc ngẫu nhiên chỉ xảy ra một lần hoặc hơn một tháng đối với tôi. Nếu bạn chỉnh sửa các tập tin hệ thống thì đây không phải là vấn đề. Vì vậy, có những ưu điểm và nhược điểm.
ergosys

1
Tôi sử dụng nó là tốt. Đã có một thiết lập đóng hộp cho nó, vì vậy tôi sử dụng: setxkbmap -option 'caps: hyper'
ergosys

3

Với xmodmapbạn có thể thay đổi hành vi này với 2 lệnh:

## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"
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.