Wygodniejszy będzie X11 Emacs, który może odbierać dane z klawiatury i wyświetlać tekst bez przechodzenia przez kodowanie i dekodowanie terminala . Głównym powodem używania edytora trybu tekstowego jest uruchomienie go na ekranie lub tmuxie na zdalnym komputerze, ale dzięki Trampowi zwykle łatwiej jest edytować plik zdalny w lokalnym Emacsie. Biorąc to pod uwagę, możesz robić, co chcesz, pod warunkiem współpracy emulatora terminala, co ma miejsce w przypadku Xterm.
Po naciśnięciu klawisza lub kombinacji klawiszy w terminalu jest on przesyłany do aplikacji działającej w terminalu jako sekwencja jednego lub więcej znaków. Na przykład po naciśnięciu aaplikacja odbiera a. Po naciśnięciu Enteraplikacja otrzymuje znak CR(aka ^M(wymawia się „control-emm”), aka znak numer 13, aka \rlub \015). Kombinacje klawiszy Altsą zwykle przesyłane jako znak ESC(np. ^[Aka \elub \033), a następnie sekwencja dla klawisza lub kombinacji klawiszy bez Alt. Klawisze funkcyjne i inne kombinacje klawiszy są przesyłane jako sekwencje specjalne rozpoczynające się od \e[lub \eO.
Sekwencje specjalne nie są w pełni znormalizowane, a terminale zwykle ignorują określone atrybuty dla niektórych kluczy. Na przykład hiper i super modyfikatory są zwykle ignorowane. Możesz zobaczyć, co twój terminal wysyła dla kombinacji klawiszy, naciskając Ctrl+, Va następnie tę kombinację klawiszy w wierszu poleceń powłoki, C-qlub C-h cpo kombinacji klawiszy w Emacsie.
Xterm umożliwia skonfigurowanie sekwencje dla każdego klawisza poprzez zasobów X . Większość ustawień odczytuje zasoby od ~/.Xresourcesmomentu uruchomienia X i można ręcznie załadować plik xrdb -merge ~/.Xresources.
XTerm.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")
Powszechna konwencja wykorzystuje sekwencje specjalne formy ESC [ number1 ; number2 ~dla klawiszy funkcyjnych z modyfikatorami. number1oznacza klawisz funkcyjny ( 15do 24do F5do F12- ze względów historycznych, poprzez F1 F4mają różne sekwencje) i number2wskazuje na modyfikator ( 2na Shift, 5na Ctrl, 3na Meta, 8na Ctrl+ Metai dodać 1 do + Shift- nie, to nie jest bardzo spójne).
Będziesz musiał określić modyfikatory Hyper i Super poprzez ich liczbę, jak Mod1przez Mod5. Uruchom, xmodmap -pmaby zobaczyć mapowanie kluczy do modyfikatorów. Na przykład, jeśli Super_Ljest związany z Mod5, to następujący wiersz (użyj tego dokładnego przypadku) definiuje powiązanie dla Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacs tłumaczy sekwencje specjalne na wewnętrzną reprezentację klucza poprzez input-decode-maplublocal-function-key-map (lub function-key-mapprzed Emacsem 23).
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
Ten post jest wykonany w 80% z materiałów pochodzących z recyklingu. Czy są jakieś terminale linux, które mogą obsługiwać wszystkie kluczowe kombinacje?