Chciałbym zdefiniować compose
klucz w moim systemie (Debian Sid „Wheezy”). Nie mam Xorga (i nie chcę żadnego środowiska graficznego). Tylko w terminalu.
Chciałbym ustawić to na moim Alt-Gr
kluczu (po prawej Alt
). Próbowałem przez jakiś czas, ale nie mogę wymyślić, jak to skonfigurować.
Badałem i znalazłem kilka wskazówek:
$ showkey
daje mi kod mojegoAlt-Gr
klucza (# 100)$ dumpkeys
i$ dumpkeys --compose-only
wypisuje „aktualną zawartość sterownika klawiatury”, w formacie określonym przezkeymaps
, zgodnie zeman
stroną$ loadkeys
załaduj tabelę tłumaczeń klawiatury
Jestem pewien, że nie jest to takie trudne, ale brakuje mi tego, jak sobie z tym poradzić ...
console
keyboard-layout
Cededu
źródło
źródło
Odpowiedzi:
W nowszych systemach Debian i Ubuntu ustawienia klawiatury są wprowadzane
/etc/default/keyboard
i współużytkowane przez X i konsolę. Po prostu biegniji wybierz
Compose key:
Right Alt (AltGr)
na odpowiednim ekranie.Można również umieścić
XKBOPTIONS=compose:ralt
w/etc/default/keyboard
i metęStarsze systemy mają domyślnie klawisz Compose na konsoli. W
us
układzie naciśnięcie obu Alt klawiszy razem działa jak Compose. 1Na przykład: Alt+ AltGr, ", A=> a
Jeśli wolisz AltGrbyć Compose, musisz się zmienić
w aktywnej mapie klawiatury do
Najłatwiej to zrobić, wprowadzając powyższe zmiany w
/lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc
.Lepszym sposobem jest utworzenie nowego pliku o nazwie
/lib/kbd/keymaps/i386/include/altgr-is-compose.inc
z powyższą linią, utworzenie nowej mapy klawiszy, która go zawiera, i ustawienie domyślnej mapy klawiszy.źródło
dpkg-reconfigure
Kreator rzeczywiście prosi o klucz komponować, ale mówi, że to nie działa w trybie „Unicode” (?). Poza tym, gdy nie jest w tym trybie, napisano, że Control + kropka działa jak klawisz tworzenia. Ale też nie działam.unicode_start
. Dla mnie to nadal działa, pod warunkiem, że będę działaćsetupcon
jakdpkg-reconfigure
mówi.setupcon
na swoim X terminalu (urxvt
), mówi: „Nie jesteśmy na konsoli, konsola pozostaje nieskonfigurowana”. Narzeka także:showkey
„Nie można pobrać deskryptora pliku do konsoli”. Wtty
obu przypadkach działa, aleshowkey
mówi (pierwsza rzecz), że „tryb kb był UNICODE”, więc być może właśnie dlatego nie działa. Ale okres Control + działatty
. OK, teraz ma to sens.X
? Musisz uruchomićsetupcon
na wirtualnej konsoli Linux, np. Ctrl + Alt + F1.console-setup
że domyślnie nie obsługuje bardzo wielu sekwencji tworzenia. Możesz uruchomić,dumpkeys --compose-only
aby zobaczyć, które z nich. Powinieneś być w stanie zmodyfikowaćconsole-setup
skrypt inicjujący, aby dodać dodatkowe reguły tworzenia tekstu w miejscu jego uruchomienialoadkeys
.„komponuj” na konsoli pozwala wpisać dwa znaki, ale wypisać trzeci.
Problem polega na tym, że definicje tworzenia używają bajtów , zarówno jako dwóch danych wejściowych (to znaczy, nie można zdefiniować komponowania pod względem wpisywanych klawiszy, ale tylko pod względem wpisywanych symboli) i jako wynik.
aby działało w UTF-8, który jest wielobajtowy (przynajmniej 1 do 4 bajtów), wymagałoby wielkich zmian w sposobie obsługi danych wejściowych konsoli i zastąpiłby prostą tablicę char obecnie używaną przez coś bardziej złożonego. Wygląda na to, że nie ma takich planów (konsensus między deweloperami jądra jest taki, że konsola powinna pozostać konsolą, czymś prostym, używanym tylko do ostatniego ressortowania; jeśli rzeczywiście potrzebujesz Unicode, to prawdopodobnie potrzebujesz także bidi, kształtowania itp .; następnie lepiej jest uruchomić terminal graficzny (pełnoekranowy xterm na X11; ale są też inne możliwości).
Tak więc rzeczywiście nie działa i nie będzie działać ze znakami wielobajtowymi na konsoli. ALE to nadal działa, jeśli ograniczysz definicje tworzenia do zwykłego ASCII.
Dowiedziałem się również, że działa również, jeśli dane wyjściowe są w iso-8859-1 (które odpowiadają wartościom Unicode do 0x00ff); w tym celu możesz wstawić wiersz skryptu startowego:
i wstaw do tego pliku odpowiednie definicje tworzenia (pamiętaj o zapisaniu pliku w kodowaniu ISO-8859-1 i użyj znaków większych niż 0x7f jako samych danych wyjściowych) składnia takiego pliku jest bardzo prosta, takie wiersze:
na przykład:
apostrof musi zostać ocalony.
efekt martwych kluczy diakrytycznych jest również zdefiniowany w tym pliku; dla dead_acute + a definiujesz linię taką jak:
dead_grave używa backtick (`), dead_diaeresis używa doublequote ("), dead_circumflex używa circumflex (^), a dead_tilde używa tyldy (~).
źródło
compose 'a' 'a' to 'å'
wcompose 'o' 'a' to U+00E5
przeciwnym razieloadkeys
narzekali błąd składni.iconv -f utf-8 -t utf-8 filename
jeśli nie ma błędów, to jest w utf-8echo $?
przynajmniej nie ma błędów i nie ma wyjściastderr
.file
Mówi mi też, że to UTF-8, więc ma to sens.