Nie można wpisać żadnego znaku specjalnego ani umlaut w terminalu

13

Środowisko:
używam Ubuntu 11.10 z wmii 3.9 jako GUI i uxterm jako terminal z bash jako powłoką. Sprzęt to Lenovo ThinkPad W500 z układem klawiatury Swissgerman (dlatego potrzebuję umlautów). Używam ibus do wprowadzania danych japońskich.

Objawy:
Kiedy piszę klucze / znaki ~, ^na terminalu nic się nie dzieje. Jeśli naciśniesz ö(arg: 6)”, änic się nie dzieje, üczasem pojawia się polecenie z historii.
To samo zachowanie we wszystkich testowanych do tej pory terminalach (gnome-terminal, xfce4-terminal, xterm). Działa zgodnie z potrzebami w innych aplikacjach X, takich jak przeglądarka chromowa, skype lub edytory tekstowe.

Dodatkowe informacje:

> locale
LANG=de_CH.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="de_CH.UTF-8"
LC_TIME="de_CH.UTF-8"
LC_COLLATE=en_US.UTF-8
LC_MONETARY="de_CH.UTF-8"
LC_MESSAGES=en_US.UTF-8
LC_PAPER="de_CH.UTF-8"
LC_NAME="de_CH.UTF-8"
LC_ADDRESS="de_CH.UTF-8"
LC_TELEPHONE="de_CH.UTF-8"
LC_MEASUREMENT="de_CH.UTF-8"
LC_IDENTIFICATION="de_CH.UTF-8"
LC_ALL=

> setxkbmap -print
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+ch+inet(evdev)+terminate(ctrl_alt_bksp)"    };
        xkb_geometry  { include "pc(pc105)"     };
};
jonas
źródło

Odpowiedzi:

17

Miałem podobny problem podczas łączenia przez ssh z Mac OS X za pomocą emulatora terminala. Chociaż ustawiłem LANG na, de_DE.UTF-8nie mogłem wpisywać żadnych znaków za pomocą umlautów.

Znalazłem poprawkę polegającą na utworzeniu / edycji ~/.inputrc (lub edycji następujących wierszy /etc/inputrc):

set input-meta on
set output-meta on
set convert-meta off

Teraz mogę pisać umlauty. Uważam, że dotyczy to ogólnie xtermów.

Arcdale
źródło
Dziękuję, to rozwiązuje problem umlaut! Ale nadal nie jestem w stanie wpisywać znaków takich jak ~, ^ lub ¨.
jonas
Naprawiłem to też dla mnie (po nowym logowaniu), ale wciąż jest coś dziwnego: jeśli piszę ö, dostaję ö, ale wydaje się, że jest też ukryty znak: mogę usunąć dwa znaki Backspace, chociaż tylko wpisałem jeden ö. Wpisanie LANG=de_DE.UTF-8w wierszu polecenia powoduje błąd dla tej sesji, ale zniknęło w nowej powłoce
rubo77
@ rubo77 dodaj export LANG=de_DE.UTF-8do~/.bashrc
naitsirch
5

Ustaw odpowiednie ustawienia regionalne za pomocą

sudo dpkg-reconfigure locales

Tam wybrałbyś de_DE.UTF-8jako swoje ustawienie. To rozwiązuje wszystkie problemy;)

Informacja: Zmiana wartości dla set convert-meta offin /etc/inputrcnie działa całkowicie:
Naprawiła to również, ale wciąż jest coś dziwnego: jeśli piszę ö, dostaję ö, ale wydaje się, że przed ö jest ukryta postać: mogę usuń, który Backspace dwa znaki, chociaż wpisałem tylko jeden ö

rubo77
źródło
Dziękuję za odpowiedź, niestety nie mogę przetestować wyniku twojej sugestii, ponieważ system ten problem już nie istnieje. Ponadto nie rozumiem, dlaczego zmiana ustawień regionalnych z de_CH.UTF-8 na de_DE.UTF-8 powinna zmienić sytuację.
jonas
Nie jestem pewien, wcześniej miałem angielski układ. Ale może układ ch używa także deadkeys dla ö?
rubo77
Tak, tak, de_CH jest układem szwajcarsko-niemieckim, jest bardzo podobny do układu niemieckiego.
jonas
1
Myślę, że ta odpowiedź powinna pozostać dla użytkowników, którzy mają podobny problem, ale nie używają układu CH. dpkg-reconfigure locales
Wydaje
Zgoda! Chciałbym móc przetestować, czy to rozwiąże problem.
jonas
-1

Oprócz wymienionych odpowiedzi może się zdarzyć, że ustawienia regionalne nie zostaną skompilowane. Pliki źródłowe ustawień regionalnych znajdują się w / usr / share, a skompilowane pliki ustawień regionalnych w / usr / lib. Te w katalogu / usr / lib mogą być uszkodzone lub nieskompilowane, aby naprawić, że do skompilowania plików można użyć narzędzia localedef. Lub w systemach opartych na Debianie dpkg-rekonfiguruj.

Toasterson
źródło