Zmiana klawisza Mod w Awesome WM

9

Próbowałem zmienić klawisz mod w awesome z klawisza Windows na Pause, Scroll Lock i Escape.

Dla wszystkich kluczy próbowałem zmienić wpis w rc.luapliku konfiguracyjnym; Próbowałem użyć xmodmap do wyczyszczenia blokad iadd mod4 = ...

Wydaje się jednak, że bez względu na to, co robię, klawisze stają się „lepkie” (czasem w dziwny niespójny sposób), a mianowicie, jeśli uderzę w nie, gdy komputer działa tak, jakby były ciągle naciskane.

Czy istnieje rozsądny sposób na zmianę tego zachowania?

Archie
źródło

Odpowiedzi:

2

Mam plik z tymi dwiema liniami w domu:

clear lock 
keysym Caps_Lock = Super_L

Jest wywoływany z mojego rc.lua w następujący sposób:

awful.util.spawn("xmodmap /home/username/your_xmodmap.file")
kioopi
źródło
Nie chcę używać Capslocka jako klucza. że clear lockczyści polecenie przesunąć blokadę, i nie powinno być żadnej blokady klawiszy shift zarówno dla wymienionych w pierwszym wierszu moje pytanie.
Archie,
2

Znacznie późno, ale w celach informacyjnych:

Problem polega na tym, że xmodmap nie identyfikuje żadnego z klawiszy wymienionych jako klucze modyfikujące. AwesomeWM nie pozwala więc na używanie ich jako klawiszy modyfikujących.

Możesz spróbować dodać klucz, którego chcesz używać jako Mod3 (który wydaje się nie być używany do niczego w większości systemów, które widziałem), a następnie twój rc.lua może wypisać klucz jako „Mod3”.

Dodaj jako klawisz modyfikujący

Możesz zobaczyć swoje klawisze modyfikujące za pomocą xmodmap. Domyślnie prawdopodobnie otrzymasz coś takiego:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

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

Dzięki xevmożesz zobaczyć nazwę dowolnego klawisza, który naciskasz podczas jego działania, a dla Scroll Lock moja pojawia się jako:

KeyPress event, serial 36, synthetic NO, window 0x2200001,
    root 0x225, subw 0x0, time 23086947, (433,729), root:(470,783),
    state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x2200001,
    root 0x225, subw 0x0, time 23087091, (433,729), root:(470,783),
    state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Zauważysz, że nazwa klucza to Scroll_Lock.

Aby dodać do Mod3, musisz utworzyć lub dodać do ~/.Xmodmap. Dodanie tej linii powoduje, że Mod3 będzie tylko klawiszem Scroll_Lock:

add Mod3 = Scroll_Lock

Aby przetestować zmiany i sprawdzić błędy w pliku .Xmodmap, uruchom

xmodmap ~/.Xmodmap

Aktualizacja rc.lua

Jak już jasno zrozumiałeś, w górnej części pliku rc.lua (który zwykle jest w ~/.config/awesome/rc.luaśrodku), jest modkey = "Mod4"linia. Zmień to na modkey = "Mod3".

Ostrzeżenia

Klawisz Esc jest używany do wielu mapowań klawiszy przez AwesomeWM. Sugerowałbym zamiast tego spróbować Scroll Lock lub Pause, ponieważ jest mniej prawdopodobne, że wystąpią poważne konflikty. W rzeczywistości AwesomeWM wydaje się zakładać, że Esc jest zarezerwowany do anulowania bieżącej operacji.

Scroll Lock wydaje się być magicznie traktowany jako klucz blokujący, podobnie jak Caps Lock. Różnica polega na tym, że zachowanie blokowania Caps Lock jest stosunkowo trywialne do wyłączenia, podczas gdy Scroll Lock nie może wyłączyć tego zachowania, o ile wiem.

Sugeruję wypróbowanie tego z kluczem takim jak klawisz Numpad 0 lub czymś, co zwykle nie jest zaprojektowane jako klucz blokujący stan, potwierdź, że działa, a następnie spróbuj przełączyć się na odpowiedni klucz.

mtalexan
źródło
0

Wiem, że jestem spóźniony o 3 lata, ale jeśli to komuś pomoże, zmień

modkey = "Mod4"

z

modkey = "Mod1"
TuxForLife
źródło
To podstawowa koncepcja, ale określonych kluczy, które wymienił, nie można używać z taką prostą modyfikacją rc.lua. Ustawienie modkey w rc.lua można najwyraźniej ustawić tylko na klucze, które xmodmap traktuje jak klawisze modyfikujące (jak Shift lub Ctrl) i nie można ustawić na coś takiego jak „x”.
mtalexan