Czy w systemie Linux istnieje układ klawiatury US International, który naśladuje zachowanie systemu Windows?

13

Jestem przyzwyczajony do używania US International jako układu klawiatury. Jednak implementacja wydaje się znacznie różnić między Windows i Linuxem (Gnome, w moim przypadku - może być problemem GTK, ponieważ GTK zachowuje się tak samo w systemie Windows).

Układ wykorzystuje martwe klawisze, na przykład do kluczy, takich jak ', ", ^, & c. umożliwiając łatwe wprowadzanie znaków za pomocą znaków diakrytycznych. W systemie Windows naciśnięcie klawisza martwego, a następnie klawisza niepowiązanego z parą, powoduje powstanie znaku martwego klawisza (w połączeniu ze spacją) i znaku z drugiego klawisza. Przykład: Po naciśnięciu ", awydajność „A”, jednakże, prasowanie ', swydajność „" S”, jak to ma parowania 'i s.

Teraz jest język o nazwie angielski, który często używa dokładnie tych dwóch znaków, a ponieważ w systemie Windows po prostu wpisuje je jak zwykle, to dla mnie teraz pamięć mięśni. Co prowadzi mnie do mojego problemu:

W systemie Linux (i GTK w systemie Windows), nie jest uwierzytelnienie za 'i s(wśród wielu innych), w wyniku czego ś(co z kolei prowadzi do mnie często wpisując „ITS”). Więc pisanie „To” wymaga mnie do pisania ',         , sna końcu.

Jest kilka innych kombinacji, do których jestem przyzwyczajony, które nie działają. Wśród nich jest to, że dla nieistniejących par po prostu nic nie jest wynikiem. Wpisanie „Chciałbym” skutkuje „Ja”. Dwukrotne naciśnięcie jednego z tych klawiszy powoduje, że diakrytyk nie jest odstępami, co łamie mój zwyczaj pisania ciągów, najpierw wpisując oba znaki cudzysłowu (które teraz skutkują ostrym akcentem lub makronem bez odstępów).

Krótko mówiąc: żaden z dostarczonych układów US International wydaje się nie działać tak samo jak w Windows - czy są jakieś, które działają identycznie? Czy jest jakaś szansa na skonfigurowanie go w ten sposób? Chociaż fajnie jest pisać z ostrym akcentem lub bezprzestrzennymi znakami diakrytycznymi, nie są to dla mnie częste potrzeby.

Joey
źródło
1
Dla każdego, kto zastanawia się, dlaczego używam US International zamiast czegoś innego: jestem z Niemiec i czasami muszę pisać takie rzeczy jak ä, ö, ü, ß. Ale większość projektantów języków programowania projektuje swoje języki dla dokładnie jednego układu, więc ludzie muszą uciekać się do kombinacji klawiszy z łamanymi palcami, aby wprowadzić znaki, takie jak nawiasy klamrowe lub ukośnik odwrotny.
Joey,
Czy zawsze możesz użyć AHK lub podobnego rozwiązania, aby przekonwertować ciąg w procesie za pomocą skryptu? Nie jestem pewien, jak dobrze gra z Linuksem, oto wątek na ten temat.
Arctiic

Odpowiedzi:

6

Jedną z możliwości jest uniknięcie martwych klawiszy i zamiast tego wpisywanie liter akcentowanych za pomocą klawisza Compose. Na przykład wpisz, Compose " aaby wprowadzić ä. Musisz wybrać opcję układu klawiatury zawierającą Composeklawisz; powszechnym wyborem jest klawisz po lewej stronie prawego Ctrlklawisza (który, jak myślę, Windows nazywa Menu). Zaletą Composejest to, że możesz wpisać wiele fantazyjnych postaci bez zmiany głównego układu. Wadą jest to, że potrzeba trzech pras zamiast dwóch na akcentowaną literę.

Alternatywnie można skonfigurować efekt martwych kluczy, tworząc plik o nazwie .XCompose(uwaga CApitalizacja) w katalogu domowym i wyświetlając żądane kombinacje. Coś jak:

obejmują „/usr/share/X11/locale/en_US.UTF-8/Compose”

<dead_acute> <space>: "" "apostrof
<dead_acute> <exclam>: "'!"
<dead_acute> <quotedbl>: "'\"
# etc ...
<dead_acute> <a>: „á”
<dead_acute> <b>: „'b”
# etc ...

Składnia jest dość prosta: sekwencja kluczy po lewej stronie :jest zamieniana na ciąg znaków ""po prawej stronie :. Dodatkowym słowem po prawej stronie jest klawisz (tj. Nazwa klucza) odpowiadający tej sekwencji klawiszy; to nie jest strasznie ważne. Wszystko od a #do końca linii jest ignorowane.

Zmień pierwszy wiersz, aby wskazywał na plik systemowy, jeśli twoja dystrybucja umieszcza go w innym miejscu. W tym pliku można znaleźć więcej przykładów składni. <Multi_key>to inna nazwa Composeklucza.

Po lewej stronie nazwy między <nawiasami kątowymi >są skrótami klawiszowymi. Listę kluczy można znaleźć w /usr/include/X11/keysymdef.h(ten plik znajduje się w pakiecie programistycznym, np. x11proto-core-devNa Ubuntu).

Tak, to dużo pisania, ale powinieneś być w stanie zautomatyzować większość z nich, kopiując-wklejając fragmenty keysymdef.hi wykonując kilka sprytnych zamian mas. Coś, co pomoże, to to, że możesz ponownie użyć kodu szesnastkowego po prawej stronie, aby utworzyć łańcuch po prawej stronie dzięki składni „\ x dd ”: włącz np.

# zdefiniować XK_exclam 0x0021 / * U + 0021 ZNAK WYKLUCZENIA * /

w

<dead_acute> <exclam>: "'\ x21"

Na koniec możesz skonfigurować układ klawiatury z martwymi klawiszami i Composeklawiszem. Będąc Niemcem, możesz ustawić tylko "jako martwy klucz. Jeśli idziesz tą drogą, najprostszą opcją jest użycie GUI do skonfigurowania klawiatury bez martwego klawisza i .Xmodmappliku dla martwego klawisza, zawierającego coś w rodzaju

keysym apostrophe = apostrof dead_quotedbl
Gilles „SO- przestań być zły”
źródło
1
Ok, przyjrzę się temu (teraz nie na innej maszynie). Używanie komponowania nie wchodzi w grę, ponieważ musiałbym ponownie nauczyć się pamięci mięśni, a Linux i tak nie jest moim głównym systemem. I nie zakładaj, że tylko dlatego, że jestem Niemcem, nigdy nie będę potrzebować niczego poza umlautami ;-). Istnieje wiele słów importowanych z innych języków, które używają również poważnego lub ostrego akcentu.
Joey,
Prawdopodobnie lepiej zacząć od zastąpienia dokładnie tych kombinacji, z którymi masz problemy, i dodaj do tabeli, gdy znajdziesz nowe rzeczy, które Cię <dead_acute> <s> : "'s"
popełniają
Być może będziesz musiał ustawić GTK_IM_MODULE=ximużycie sekwencji tworzenia zdefiniowanych w ~/.XCompose, a nie wbudowanych GTK (!).
RolKau,
3

Wiem, że to pytanie zostało „rozwiązane” przez jakiś czas. Chcę jednak przedstawić moje rozwiązanie, które łączy wyniki z tej strony z dużą ilością testów i eksperymentów.

Win US Intl dla Linux to seria skryptów, które napisałem, aby rozwiązać problem z rodzimym układem klawiatury US Intl w Linuksie, tak jak napisał OP. Używam go głównie dlatego, że moim językiem ojczystym jest hiszpański, a nadal korzystam z wielu angielskich forów, tekstów, czatów itp. (Takich jak ta strona).

Uwaga: To jest w rzeczywistości podobne (nie do końca równe) do zachowania Windows XP US - międzynarodowy układ klawiatury.

Możesz przejść do strony http://tamh.info/en/win-us-intl-4-linux/, aby to sprawdzić. Jestem w trakcie ulepszania, dodając więcej wpisów XCompose dla kilku innych przypadków granicznych, między innymi zmianami.

Tamh
źródło
3
Link nie działa.
zadzwonić
1

Jest więc rozwiązanie, ponieważ ktoś tutaj opublikował repozytorium github, które może sprawić, że to zadziała: https://github.com/raelgc/win_us_intl Oto, co chcesz zrobić:

  1. pobierz plik zip

  2. wypakuj gdziekolwiek chcesz, twoja uwaga powinna się skupić na pliku XCompose.

  3. Otwórz plik XCompose za pomocą preferowanego edytora tekstu, a następnie umieść poniżej : „/usr/share/X11/locale/en_US.UTF-8/Compose” wiersz taki: dołącz „% L”

  4. Przenieś plik XCompose do ~ / katalogu

  5. EDYTOWAĆ:

    • Ten krok nie jest już potrzebny. Będzie działał bez niego we wszystkich nowych wersjach Linuksa, jeśli to nie zadziała, zrób to tylko, jeśli wiesz, co robisz, ponieważ XIM ma pewne znane problemy.
    • Zmodyfikuj swój ~ / .profile i umieść eksport GTK_IM_MODULE = "xim" na końcu pliku.
  6. EDYTOWAĆ:

    • Jeśli używasz GNOME: IBus jest fabrycznie zainstalowany z tym środowiskiem, a zmiana na inną metodę wprowadzania danych nie przyniesie żadnego efektu, ponieważ GNOME i tak go uruchomi i skonfiguruje ważne zmienne.
    • Jeśli nie chcesz używać IBusa, wpisz tę komendę w terminalu: im-config -n uim
  7. Restart

Uwaga: Dla mnie to rozwiązanie nie działa bez kroku 5, więc jeśli wiesz, jak pomóc mi i innym w takiej samej sytuacji, jak ja, to jest to link do innego pytania, które podniosłem: Mój system nie czyta. X Skomponuj plik

Eduardo Moraes
źródło