Существует ли в Linux международная раскладка клавиатуры для Linux, которая имитирует поведение Windows?

5532
Joey

Я привык использовать US International в качестве раскладки клавиатуры. Однако, реализация, кажется, сильно отличается в Windows и Linux (Gnome, в моем случае - вполне может быть проблемой GTK, так как GTK ведет себя так же в Windows).

Схема использует мертвые клавиши, например, для ключей, таких как ', ", ^, & с. позволяет легко вводить символы с диакритическими знаками. В Windows нажатие мертвой клавиши, а затем клавиши, с которой нет связанной пары, приводит к символу мертвой клавиши (в сочетании с пробелом) и к символу второй клавиши. Пример: Нажатие ", aвыходы «A», однако, нажатие ', sдает «'s», так как нет спаривания для 'и s.

Теперь есть язык под названием английский, который часто использует именно эти два символа, и, поскольку он работает в Windows, просто печатая их как обычно, для меня сейчас это мышечная память. Что подводит меня к моей проблеме:

В Linux (и GTK на Windows), то есть спаривание для 'и s(среди многих других), в результате чего ś(что, в свою очередь, приводит к мне часто набрав «ИТС»). Так, набрав «это» требует, чтобы я типа ',         , sв конце концов.

Есть несколько других комбинаций, к которым я привык, которые не работают. Среди тех, что для несуществующих пар просто ничего не является результатом. Ввод «Я» приводит к «Я». Двойное нажатие на одну из этих клавиш приводит к непостоянному диакритическому знаку, который ломает мою привычку печатать строки, сначала печатая обе кавычки (что теперь приводит к неразрывному острому акценту или макрону).

Короче говоря: Ни один из поставляемых международных США макетов представляется, не функционируют так же, как и в Windows - есть ли что делать работают одинаково? Или есть возможность настроить его таким образом? Хотя может быть неплохо набирать буквы s с острым акцентом или диакритическими знаками без пробелов, для меня это не совсем общие потребности.

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

3 ответа на вопрос

7
Gilles

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

Кроме того, вы можете настроить эффект мертвых ключей, создав файл с именем .XCompose(обратите внимание на CApitalization) в своем домашнем каталоге и перечислив комбинации, которые вы хотите. Что-то вроде:

include "/usr/share/X11/locale/en_US.UTF-8/Compose"  <dead_acute> <пробел>: "апостроф" <dead_acute> <exclam>: "'!" <dead_acute> <quotedbl>: "'\" " # так далее... <dead_acute> <a>: "а" <dead_acute> <b>: "'b" # так далее... 

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

Измените первую строку, чтобы указать на системный файл, если ваш дистрибутив помещает его в другое место. Вы можете посмотреть в этом файле больше примеров синтаксиса. <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файла для мертвой клавиши, содержащего что-то вроде

KeySim Апостроф = Апостроф Dead_quotedbl 
Хорошо, я посмотрю на это (не на другой машине прямо сейчас). Использование Compose не вариант, так как мне придется заново изучать мышечную память, а Linux в любом случае не является моей основной системой. И не думайте, что только потому, что я немец, мне больше ничего не понадобится, кроме умлаутов ;-). Есть много слов, импортированных из других языков, которые также используют серьезный или острый акцент. Joey 13 лет назад 1
Вероятно, было бы лучше начать с переопределения именно тех комбинаций, с которыми у вас возникли проблемы, и добавить их в таблицу, когда вы найдете новые вещи, которые вас беспокоят, например: : "s" ` RolKau 13 лет назад 0
Вам также может потребоваться установить `GTK_IM_MODULE = xim`, чтобы использовать последовательности компоновки, определенные в` ~ / .XCompose`, а не встроенные модули GTK (!). RolKau 13 лет назад 0
3
Tamh

Я знаю, что этот вопрос был "решен" некоторое время. Тем не менее, я хочу представить свое решение, которое сочетает в себе результаты, полученные на этой странице, с большим количеством испытаний и экспериментов.

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

На заметку: это на самом деле похоже (не полностью совпадает) на поведение Windows XP US - Международная раскладка клавиатуры.

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

Ссылка не работает. tink 5 лет назад 0
3
yms

Currently there is a github repo that provides a .deb file that solves this problem:

Windows™ US International XCompose for Linux

It is based on a customized .XCompose file as other answers have suggested.