Skonfiguruj Caps Lock jako AltGr i strzałki jak w vimie

9

1. W jaki sposób można globalnie map Caps Lockdo AltGr?

Nie potrzebuję CapsLock i wolę mieć tam łatwy dostęp do AltGr Key

2. Chcę zamapować wszystkie klawisze ruchu na vimpodobne pozycje

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

Więc mogę łatwo przejść przez mój kod bez odsuwania ręki od pozycji 10 palców (jak w vimedytorze)

Znalazłem odpowiedź: jak zmienić przypisanie klawisza Caps Lock do klawisza Backspace?
sugerowanie użycia

xmodmap -e "keycode [code] = [new key]"

patrz: http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

Ale nie mogę zrozumieć, jak dodać to do kombinacji na przykład AltGr + J

Kolejnym początkiem byłoby ustawienie „Klawisz znaku alternatywnego” w unity-control-center-> Klawiatura-> Skróty-> Pisanie jakoCaps Lock

Aktualizacja: Znalazłem kilka rozwiązań (patrz poniżej), ale wszystkie nie działają we wszystkich aplikacjach. Sądzę, że jest to ustawienie globalne o nazwie „XFree 4”, z którego korzystają niektóre aplikacje.

Jak ustawić również przypisania klawiszy dla XFree 4?

rubo77
źródło
Nie mam klucza AltGr, ale może się okazać, że to podobne pytanie dostarcza wskazówek.
Elder Geek

Odpowiedzi:

4

1. dodaj nowy plik częściowy XKB

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

z tą zawartością:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. dołącz częściowe do pliku językowego

na przykład dla niemieckiego to /usr/share/X11/xkb/symbols/de(gdzie /dejest twój język) dodaj to w pierwszym bloku ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

Uwaga: tę część należy powtórzyć po każdej aktualizacji dystrybucji

3. ponownie załaduj sesję okna

Naciśnij ALT + F2, wpisz „r”, aby ponownie załadować sesję gnome lub po prostu wyloguj się i zaloguj ponownie. Teraz będą dostępne nowe kluczowe kompozycje

trochę problemów

Niektóre aplikacje nie akceptują ustawień, na przykład: sublimektóre można zastąpić atom.

Niektóre aplikacje wymagają dodatkowych ustawień, np. W yakuakeprzypadku przypisania klawiszy ustawionych na „XFree 4”, jeśli ustawisz je na „Linux” lub „Solaris”, wówczas ustawienia XKB również tam działają:

rubo77
źródło
1
zdecydowanie zalecam użycie opcji XKB lv3:caps_switchzamiast zmiany <CAPS>definicji podczas pokazu. patrz /usr/share/X11/xkb/symbols/level3(gdzie ta opcja jest zdefiniowana).
donkiszot
@ quixotic: czy możesz dodać nową odpowiedź z potrzebnymi konfiguracjami? Mogę potrzebować dobrej, kompletnej odpowiedzi na nagrodę;)
rubo77
To działało idealnie dla mnie. Tylko jedna głowa do góry, może chcieć zmienić „sekcję” na „numery” dla shift + 3
mowwwalker
0

w celu uzyskania AltGr+ h, j, k, llub dowolny inny klawisz, bez jakiegokolwiek zastosowania jak Autokey do peform można dostosować układ klawiatury znajdują się w katalogu / usr / share / X11 / xkb / symbole / . W tej chwili używam niemieckiego układu „de”. Przede wszystkim chciałbym:

1- skopiuj standardowy układ

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- otwórz układ za pomocą edytora preferencji tekstowych (tutaj: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

tam zobaczysz coś takiego:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

Jak widać, AB, AC, AD, AE reprezentuje wiersz, a liczba reprezentuje jego pozycję na klawiaturze (istnieją specjalne klawisze, takie jak klawisz mniej / większy, które można również przypisać do innych klawiszy ..

Tam nie znajdziesz całej klawiatury, tylko te, które różnią się układem, na którym opiera się klawiatura. Niemiecki oparty jest na „latin (type4)”, jak widać na początku pliku:

include "latin(type4)"

Następnie wystarczy zmienić w zależności od potrzeb. Działa jak:

klawisz {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(możliwe jest również dodanie modyfikatorów 5. poziomu lub więcej)

jeśli chcesz sprawdzić zmiany bez restartu; (zmiana „de” dla twojego układu ... oto lista możliwych układów )

 setxkbmap -layout de

Strzałki są oznaczone tak jak „Lewo, Prawo, Dół, Góra”, zgodnie z oczekiwaniami. Oto dobra lista możliwych wartości.

oto przykład mojego niestandardowego układu. (ale w tej chwili nie jest używany)

Następnie trzeba ponownie mapować Capslock i AltGr, czy też zadziałało już po wysłaniu pytania?

Jeśli chcesz również zachować „normalny” niemiecki układ, możesz wprowadzić zmiany w innym układzie, którego zwykle nie używasz (lub zmienić „niemiecki brak martwych klawiszy”, który znajduje się w dalszej części tego samego pliku „de”. ..)

Źródło: link do bardzo wyczerpującego objaśnienia xbk i niestandardowych układów.
link do podobnego pytania z dobrą odpowiedzią.

Marcelo Avila
źródło
1
we współczesnym Ubuntu i pochodnych możesz ustawić układy i opcje XKB /etc/default/keyboardpo wprowadzeniu tych zmian. zobacz man 5 keyboardszczegóły. zalecam dodawanie nowych wariantów i opcji zamiast zmieniania istniejących.
donkiszot
0

Aby ponownie przypisać CapsLock do AltGr, użyj

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(źródło: https://superuser.com/a/138757/160420 )

Aby odwzorować klawisze strzałek na AltGr + h, j, k i l, użyj, xmodmap -pkeaby znaleźć odpowiednie ustawienia:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

i zmień piątą wartość na nowe klucze i dodaj to wszystko w skrypcie bash:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(źródło: https://askubuntu.com/a/466315/34298 )

Umieść ten skrypt bash w aplikacjach startowych (wybierz Dash> Aplikacje startowe> Dodaj i dodaj polecenie).

Uwaga: dziwnie w gnome-terminaltym działa dobrze, ale yakuakedziała dla BackSpace na AltGr + F, ale ustawia AltGr + h, j, k i l na D, B, A i C, chyba że ustawisz Key Binding na „Linux” zamiast „(Domyślnie) XFree 4” i w sublime-textogóle nie działa

rubo77
źródło
xmodmapjest przestarzałe i odradzane. nadal działa w środowiskach X11, ale nie będzie działać w Wayland i innych zamiennikach X11. zdecydowanie zaleca się stosowanie rozwiązań opartych na XKB.
donkiszot
Więc chyba muszę dodać nowy niestandardowy układ klawiatury? askubuntu.com/questions/482678/…
rubo77
1
dodanie niestandardowego układu jest jednym ze sposobów, chociaż prawdopodobnie można uniknąć tej opcji . w GNOME lub Unity może być konieczne wyłączenie wtyczki klawiatury demona ustawień dla dostosowania xmodmap, aby działało, ale jeśli utworzysz nowy systemowy układ / wariant / opcję XKB, możesz je ustawić /etc/default/keyboard.
donkiszot
1
To wydaje się dość pracochłonne, ale czy rozwiąże problem, że nowe kombinacje klawiszy nie działają w niektórych aplikacjach?
rubo77