Jak sprawić, by klawisze Hyper i Super nie robiły tego samego?

8

Użyłem xkb do zmiany przypisania odpowiedniego klawisza Windows (RWIN) do Hyper_R, ponieważ chcę używać go z AutoKey do specjalnych skrótów. Zrobiłem to, edytując

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

modyfikowanie linii RWIN:

  key <RWIN> {  [ Hyper_R   ]   };

( Oto odpowiedź, która mnie poprowadziła )

Z tego, co mogę powiedzieć, to działa, a odpowiedni klawisz Windows uruchamia teraz Hyper_R. Wydaje się jednak, że w Ubuntu (a dokładniej Xubuntu) Hyper i Super w jakiś sposób robią to samo. Tak więc Super + e uruchamia edytor, podobnie jak Hyper + e.

Nie jestem pewien, dlaczego to jest ani gdzie mogę zmienić to zachowanie. Chcę, aby Hyper i Super były różnymi modyfikatorami.

Alexander Rechsteiner
źródło
Było coś na nim tutaj , chociaż nie sądzę, dialog już istnieje w 13.10 ...
fotograf Wilf
Ale to musi gdzieś być konfigurowalne, prawda?
Alexander Rechsteiner
Możesz je znaleźć wdconf-editor
Wilf
1
Dzięki, ale nie ma szczęścia. Cholera, ta cała zmiana mapowania klawiatury w Linuksie daje mi cukrzycę.
Alexander Rechsteiner
+1: zgoda (w części dotyczącej cukrzycy). Nie udało mi się znaleźć ładnego, kompleksowego i szczegółowego przewodnika na temat zarządzania klawiaturą w systemie Ubuntu. Istnieje szereg interakcji między centrum kontroli gnome, narzędziem gnome-tweak-tool, xkbd, xmodmap, które są dość złożone i, najgorsze, nieudokumentowane. Jeśli znajdziesz jakiś link, udostępnij go! (Chociaż podejrzewam, że prawie nikt nie wie o tym na serio. Zobacz tylko brak poprawności bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/… )
Rmano

Odpowiedzi:

11

Z jakiegoś powodu Ubuntu obecnie przypisuje zarówno Mod Super, jak i Hyper. Możesz to zobaczyć w / usr / share / X11 / xkb / symbols / pc:

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

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

Byłem w stanie to zmienić, aby umieścić super i hyper na osobnych modyfikatorach bez konieczności rootowania lub modyfikowania plików systemowych. Nie jestem pewien, czy jest to najlepszy sposób, ponieważ zdecydowanie nie jestem ekspertem od xkb, ale jest to sposób, który był dla mnie niezawodny.

Najpierw utwórz plik symboli lokalnych. Mam swój w $ {HOME} /. Config / xkb / symbols / local. To przypisuje Super do Mod3 i Hyper do 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> };
};

Następnie ponownie skompiluj istniejącą mapę, aby dodać „lokalną”:

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

Umieść to w skrypcie, który będzie uruchamiany po zalogowaniu. Możesz uruchomić go jako zwykły użytkownik.

ergosys
źródło
Czy można po prostu edytować ten plik, aby zmienić HYPR na Mod3?
Alex Moore-Niemi
3
Możesz to zrobić. Zaletą braku edycji w miejscu jest to, że aktualizacja systemu nie zastąpi twoich zmian.
ergosys
Dla siebie miałem to krótko współpracować z raw.githubusercontent.com/jabbalaci/dotfiles/master/.Xmodmap, choć wciąż tajemniczo się zatrzymuje ...
Alex Moore-Niemi
Wadą metody mojej odpowiedzi, którą znalazłem, jest to, że jeśli klawiatura jest odłączona lub utraci komunikację USB z powodu przypadkowej usterki, skrypt musi zostać uruchomiony ponownie. Prawdopodobnie jest jakiś sposób, aby uruchomić go ponownie automatycznie, ale nie przyjrzałem się temu. Na szczęście przypadkowa usterka zdarza się dla mnie tylko raz w miesiącu. Jeśli edytujesz pliki systemowe, nie powinno to stanowić problemu. Są więc plusy i minusy.
ergosys
1
Ja też tego używam. Jest już gotowa konfiguracja, więc używam: setxkbmap -option 'caps: hyper'
ergosys
3

Za pomocą xmodmapmożesz zmienić to zachowanie za pomocą 2 poleceń:

## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"
Alex Stragies
źródło