xmodmap jak zmapować klucze i wyłączyć oryginalne?

4

Rozważam zakup klawiatury 60% i chcę wypróbować pracę z tym układem przed zakupem faktycznej klawiatury.

Próbuję mapować klawisze strzałek do czapek lock + ijkl i wyłączać prawdziwe klawisze strzałek. Dowiedziałem się, jak go zmapować, ale kiedy próbuję wyłączyć prawdziwe klawisze strzałek, zmapowane te pękają. Oto działająca mapa:

keycode 66 = Mode_switch
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right

Aby wyłączyć strzałkę, dodam

keycode 111 =

I jak tylko to zrobię, ijkl nie działa już jako postacie, ale działa jak strzałki, nawet bez naciskania modyfikatora (blokada czapek). Jak wyłączyć klawisze strzałek bez przerywania mojego poprzedniego mapowania?

Tomas
źródło
Czy działa dla Ciebie, jeśli wyłączysz go ręcznie? przez $ xmodmap -e 'keycode 111='
tukan
Działa tak samo jak z plikiem konfiguracyjnym. Mogę albo wyłączyć klucz, albo zmienić go, ale nie oba.
Tomas
Hmm to dziwne. W każdym razie dlaczego i tak próbujesz wyłączyć klawisze strzałek? Jeśli będziesz miał klawiaturę 60%, nie będziesz ich mieć. Jeśli ich nie masz, nie musisz ich wyłączać, prawda? Wystarczy wpisać działające mapowanie i wszystko w porządku.
tukan
Znalazłem xmodmapę github dla takich klawiatur. Możesz to wypróbować. gist.github.com/jeffeb3/743507871082c9e1ca44
tukan
Zapominam, że mam przemodelowanie i nadal używam klawiszy strzałek z przyzwyczajenia. Chcę wyłączyć klawisze strzałek, aby przypomnieć sobie, że ponowne mapowanie istnieje i powinienem go użyć. Sprawdziłem konfigurację w Githubie, wydaje się, że nie wyłącza ona żadnych kluczy, więc wątpię, czy byłoby to przydatne.
Tomas

Odpowiedzi:

2

Po przeczytaniu i zdobyciu informacji. Wydaje się, że problem polega na tym, że musisz usunąć modyfikatory przed dokonaniem zmiany mapowania.

Na odpowiedź:

Po zmianie ustawień moja xmodmap wygląda jak:

xmodmap: do 4 kluczy na modyfikator, (kody klawiszy w nawiasach):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Mode_switch (0x42),  Mode_switch (0xcb)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5      

Dochodzenie Mode_switch prowadzi nas do wniosku, że Caps_Lock został pomyślnie zmapowany:

[smalltalk@localhost ~]$ xmodmap -pke | egrep -e '(Mode_switch)'
keycode  66 = Mode_switch NoSymbol Mode_switch
keycode 203 = Mode_switch NoSymbol Mode_switch

Teraz zmień fragment fragmentu stron podręcznika:

       keycode NUMBER = KEYSYMNAME ...
               The list of keysyms is assigned to the indicated keycode (which
               may be specified in decimal, hex or octal and can be determined
               by running the xev  program).   Up  to  eight  keysyms  may  be
               attached  to  a  key, however the last four are not used in any
               major X server implementation.  The first keysym is  used  when
               no  modifier  key  is pressed in conjunction with this key, the
               second with Shift, the third when the Mode_switch key  is  used
               with  this  key  and  the  fourth when both the Mode_switch and
               Shift keys are used.

Następująca konfiguracja działa, ale musisz trzymać Caps_Lock podczas używania i, j, k, l (dokładnie tak, jak zostało to napisane na stronach man):

Edytować vim ~/.Xmodmap:

! make Capslock the "Mode_switch" key
clear Lock

! All Mod must be cleared
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5

! clearning current Caps_Lock assigment and assigning it new one
keycode 66 =
keycode 66 = Mode_switch

! setting all the modification keys
add Mod1 = Alt_L Alt_R Meta_L
add Mod2 = Num_Lock
add Mod3 = Mode_switch
add Mod4 = Super_L Super_R Hyper_R

! Clear must be done before configuring it
keycode 31 =
keycode 44 =
keycode 45 =
keycode 46 =

! Configuration (first column normal type, second with shift and second with Mod_switch)
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right

! Clearing the arrow keys and some functional keys like home
keycode 111 =
keycode 113 =
keycode 114 =
keycode 116 =
keycode 112 =
keycode 117 =

Teraz na wielkie pytanie:

Jak sprawić, by klawisze i, j, k, l działały podczas działania Caps_Lock? Prawdopodobnie będziesz musiał dokonać zmian xkb, które muszę przemyśleć.

Edytować

Tak, możesz. Zorientowałem się.

Uwaga: dotyczy to wszystkich klawiatur, wszystkich układów, więc jest dobry do testowania. Jeśli chcesz to zrobić przez xkb właściwie musisz stworzyć swój własny układ i mieć grupę1 i grupę2 + zrobić mapowanie.

Poniżej znajduje się hack idealny do testowania klawiatury (-ów) (nie zapomnij wykonać kopii zapasowej ../basic plik!):

Ostrzeżenie dotyczy to wszystkich klawiatur, wszystkich wariantów.

Edytuj plik: sudo vim / usr / share / X11 / xkb / compat / basic

# Add  Caps_Lock to virtual modifiers
    virtual_modifiers  NumLock,AltGr,Caps_Lock;

# change FROM:
    interpret Mode_switch {
        useModMapMods= level1;
        virtualModifier= AltGr;
        action= SetGroup(group=+1);
    };

# TO:
    interpret Mode_switch {
        useModMapMods= level1;
        virtualModifier= Caps_Lock;
        action= LockGroup(group=+1);
    };

# change from
    group 2 = AltGr;
TO:
    group 2 = Caps_Lock;

Uwaga: Jeśli masz wiele układów, może to przeszkadzać.

tukan
źródło
0

Przepraszam za pisanie odpowiedzi zamiast komentowania, ale wciąż nie mam wystarczającej reputacji. Wiem, że to nie odpowiada na twoje pytanie, ale może rozwiązać twój problem.

Zamiast zmiany mapowania kluczy w systemie operacyjnym, warto kupić klawiaturę, która obsługuje ponowne mapowanie kluczy. Zwłaszcza klawiatura obsługiwana przez Oprogramowanie układowe QMK . Możesz znaleźć listę wszystkich kompatybilnych klawiatur tutaj .

Dzięki temu oprogramowaniu możesz mapować dowolny klucz do dowolnej akcji, w tym dodawać wiele warstw, w których każdy klucz może robić różne rzeczy. Wyobraź sobie, jak naciśnięcie klawisza fn na laptopach, z wyjątkiem tego, że jest w pełni konfigurowalny. Możesz wybrać, który klucz aktywuje, która warstwa, a nawet jak. Na przykład możesz mieć włączoną / wyłączoną warstwę, utrzymywać ją aktywną, przytrzymując klawisz itd. W ten sposób możesz mieć Caps Lock być Caps Lock po dotknięciu i przejść do innej warstwy (gdzie ijkl klawisze to klawisze strzałek) po przytrzymaniu.

Jedynym minusem jest to, że ponowne mapowanie wymaga edycji tablic w kodzie C, choć w rzeczywistości jest to dość proste i nie wymaga wcześniejszej znajomości programowania. The dokumentacja jest dość obszerny i wyjaśnia wszystko, czego potrzebujesz, aby zacząć.

Istnieje wiele opcji klawiatury na 60%, choć większość z nich to zestawy, które musisz złożyć samodzielnie. Jeśli nie masz z tym problemu, sprawdź płyty GH60, Satan lub XD60. Możesz znaleźć wszystkich tych, którzy nie chcą złożyć tego samodzielnie, możesz sprawdzić Biały Lis klawiatura lub sprawdź, czy możesz znaleźć coś na Sklep KBDFans ponieważ oferują usługi montażu większości zestawów.

The Edge Of Rage
źródło
Jak już wspomniałem w pytaniu, nie jestem pewien, czy mógłbym żyć bez klawiszy strzałek, więc „[chcę] wypróbować pracę z tym układem przed zakupem faktycznej klawiatury”.
Tomas