Чи існує розкладка клавіатури США на Linux, яка імітує поведінку Windows?


13

Я звик використовувати США International як макет клавіатури. Однак реалізація, як видається, сильно відрізняється між Windows та Linux (у моєму випадку Gnome - це може бути проблемою GTK, оскільки GTK поводиться так само в Windows).

Схема використовує мертві клавіші, наприклад , для ключів , таких як ', ", ^, & с. що дозволяє легко вводити символів з діакритикою. У Windows натискання мертвої клавіші, а потім клавіша, яка не має пари, пов'язана з символом мертвої клавіші (коли вона поєднується з пробілом) та символом другої клавіші. Приклад: Натискання ", aвиходи «А», тим НЕ менш, при натисканні ', sвиходи « 'S», так як немає спарювання для 'і s.

Тепер існує мова під назвою англійська, яка часто використовує саме ці два символи, і оскільки вона працює в Windows, щоб просто набрати їх як завжди, це для мене м'язова пам'ять. Що приводить мене до моєї проблеми:

У Linux (і GTK в Windows) є створення пари для ( 'і sсеред багатьох інших), в результаті чого ś(що, в свою чергу, призводить до того, що я часто набираю "itś"). Так , набравши «це» вимагає , щоб я типу ',         , sв кінці кінців.

Є кілька інших комбінацій, до яких я звик, які не працюють. Серед них те, що для неіснуючих пар просто нічого не є результатом. Введення "я" призводить до "Я". Двічі натискання однієї з цих клавіш призводить до діакретики без інтервалу, що порушує мою звичку вводити рядки, спочатку вводячи обидві лапки (в результаті чого виникає гострий акцент або макрон без проміжків).

Короткий опис короткого оповідання: жодна з поставлених макетів США International не працює так само, як у Windows - чи є такі, які працюють однаково? Або якийсь шанс налаштувати його таким чином? Хоча це може бути непогано набрати текст з гострим акцентом або нерозбіжною діакритикою, для мене це не зовсім загальні потреби.


1
Для тих, хто цікавиться, чому я використовую US International, а не щось інше: я з Німеччини і мені потрібно вводити речі типу ä, ö, ü, ß часом. Але більшість дизайнерів мов програмування розробляють свої мови точно для однієї верстки, тому людям доводиться вдаватися до розбиття пальців комбінацій клавіш, щоб ввести символи, такі як фігурні фігурні дужки або зворотний нахил.
Joey

Ви завжди можете використовувати AHK або подібне рішення для перетворення рядка в процесі за допомогою hotscripting? Я не впевнений, наскільки добре він працює з Linux, ось нитка щодо цього.
Арктичний

Відповіді:


6

Однією можливістю є не мати мертвих клавіш і набирати букви наголосів за допомогою клавіші Compose. Наприклад, введіть Compose " aдля введення ä. Вам доведеться вибрати варіант розкладки клавіатури, що включає Composeключ; загальним вибором є ключ ліворуч від правої Ctrlклавіші (на яку я думаю, що Windows дзвонить Menu). Перевага Composeполягає в тому, що ви зможете набрати багато фантазійних символів, не змінюючи основного макета. Недоліком є ​​те, що для письма з наголосом потрібно три натискання замість двох.

Крім того, ви можете налаштувати ефект мертвих клавіш, створивши файл, який називається .XCompose(примітка CApitalization) у вашому домашньому каталозі, та перелічивши потрібні комбінації. Щось на зразок:

включити "/usr/share/X11/locale/en_US.UTF-8/Compose"

<dead_acute> <простір>: "" "апостроф
<dead_acute> <exclam>: "'!"
<dead_acute> <quotedbl>: "'\" "
# тощо ...
<dead_acute> <a>: "á"
<dead_acute> <b>: "'b"
# тощо ...

Синтаксис досить простий: послідовність клавіш зліва від :значка перетворюється на рядок між ""праворуч від :. Додаткове слово праворуч - це клавіша (тобто назва ключа), що відповідає цій послідовності клавіш; це не страшно важливо. Все, що від a #до кінця рядка, ігнорується.

Змініть перший рядок, щоб вказати на системний файл, якщо ваш дистрибутив розмістить його в іншому місці. Ви можете шукати в цьому файлі додаткові приклади синтаксису. <Multi_key>- інша назва Composeключа.

Ліворуч назви між <кутовими дужками >є ключовими символами. Ви можете знайти список ключових символів у /usr/include/X11/keysymdef.h(цей файл знаходиться в пакеті розробки, наприклад, x11proto-core-devна Ubuntu).

Так, це дуже багато набору тексту, але ви повинні мати можливість автоматизувати велику частину, вставляючи шматки копіювання keysymdef.hта виконуючи кілька розумних масових замін. Щось допоможе, це те, що ви можете використовувати шістнадцятковий код праворуч, щоб зробити правий рядок завдяки синтаксису "\ x dd ": поверніть, наприклад,

#define XK_exclam 0x0021 / * U + 0021 ЕКСКЛАМАЦІЙНА МАРКА * /

в

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

Нарешті, ви можете встановити розкладку клавіатури із мертвими клавішами та Composeклавішею. Будучи німецькою, ви можете налаштувати лише "як мертвий ключ. Якщо ви їдете цим маршрутом, найпростішим варіантом є використання графічного інтерфейсу для встановлення клавіатури без мертвої клавіші та .Xmodmapфайлу для мертвої клавіші, що містить щось подібне

keyym apostrophe = apostrophe dead_quotedbl

1
Гаразд, я перегляну це (не зараз на іншій машині). Використання Compose не є можливим, оскільки мені доведеться заново вивчити м'язову пам'ять, і Linux все одно не є моєю основною системою. І не вважайте, що тільки тому, що я німець, мені більше ніколи не знадобиться нічого, крім умлаутів ;-). Існує досить багато слів, імпортованих з інших мов, які також використовують серйозний або гострий наголос.
Joey

Напевно, було б краще почати з просто перекреслення саме тих комбінацій, з якими у вас виникають проблеми, і додайте до таблиці, коли ви знайдете нові речі, які вас <dead_acute> <s> : "'s"
помиляють

Вам також може знадобитися GTK_IM_MODULE=ximвикористовувати послідовності складання, визначені в ~/.XCompose, а не вбудовані GTK (!).
RolKau

3

Мені відомо, що це питання на певний час було вирішено. Однак я хочу представити своє рішення, яке поєднує висновки на цій сторінці з великою кількістю тестування та експериментів.

Win US Intl для Linux - це низка сценаріїв, які я написав, щоб вирішити проблему виникнення проблем із власною американською розкладкою клавіатури Intl в США, як написав ОП. Я використовую його головним чином тому, що моя рідна мова - іспанська, і я все ще використовую безліч англійських форумів, текстів, чатів тощо (як цей сайт).

Зауважимо: насправді це схоже (не зовсім рівно) на поведінку Windows XP US - Міжнародна розкладка клавіатури.

Ви можете зайти на http://tamh.info/en/win-us-intl-4-linux/, щоб перевірити це. Я зараз вдосконалюю це, додаючи додаткові записи XCompose для кількох інших прикордонних випадків, серед інших змін.


3
Посилання не працює.
тинк

3

В даний час існує github repo, який надає файл .deb, який вирішує цю проблему:

Windows ™ US International XCompose для Linux

Він заснований на спеціалізованому файлі .XCompose, як пропонують інші відповіді.


1

Отож, є рішення, оскільки хтось розмістив тут репост github, який може зробити цю роботу: https://github.com/raelgc/win_us_intl Ось що ви хочете зробити:

  1. завантажити zip-файл

  2. витягніть, де ви хочете, ваша увага повинна бути зосереджена на файлі XCompose.

  3. Відкрийте файл XCompose у вибраному текстовому редакторі, а потім покладіть нижче, включаючи "/usr/share/X11/locale/en_US.UTF-8/Compose" такий рядок: включіть "% L"

  4. Перемістіть файл XCompose в каталог ~ /

  5. Редагувати:

    • Цей крок більше не потрібен, він обійдеться без нього у всіх нових випусках Linux, якщо він не працює для вас, виконайте цей крок, якщо ви знаєте, що ви робите, оскільки XIM має деякі відомі проблеми.
    • Відредагуйте свій ~ / .profile та поставте Export GTK_IM_MODULE = "xim" у кінці файлу.
  6. Редагувати:

    • Якщо ви використовуєте GNOME: IBus поставляється заздалегідь встановленим із цим середовищем і перехід на інший метод введення не матиме жодного ефекту, оскільки GNOME все одно запустить його та налаштує важливі змінні.
    • Якщо ви не хочете використовувати IBus, введіть цю команду в термінал: im-config -n uim
  7. Перезавантажте

Примітка. Для мене це рішення не працює без кроку 5, тому якщо ви знаєте, як допомогти мені та іншим у такій же ситуації, як я, це посилання на інше питання, яке я порушив: Моя система не читає. XCompose файл

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.