Как заставить двойную кавычку вести себя как мертвый ключ, кроме случаев, когда она используется вместе с самим собой

14

Когда я использую клавиатуру, я ожидаю следующих действий (и я полагаюсь на эти поведения):

  • Нажмите ", отпустите" : должен помнить ключ как мертвый ключ
  • Пресс ", релиз ", пресс <space>, релиз<space> : следует напечатать"
  • Пресс ", релиз ", пресс ", релиз" : следует напечатать""

Я понимаю, что это поведение определяется раскладкой клавиатуры, поэтому я провел некоторое исследование.

На раскладке клавиатуры «Английский - США с мертвыми клавишами» я получаю два верхних поведения, которые я предпочитаю, но последнее поведение не выполняется, и я получаю странный символ, ¨когда пытаюсь это сделать.

На раскладке клавиатуры «Английский - США с мертвыми клавишами AltGr» я получаю только последнее поведение, но клавиша больше не ведет себя мертвой.

Как я могу изменить раскладку клавиатуры, чтобы она соответствовала 3 видам поведения, которые я ожидаю при использовании клавиатуры?

Ferrybig
источник
Этот вопрос был бы намного лучше с некоторой мотивацией.
Джошуа
Я считаю, что его мотивация состоит в том, чтобы избегать несовпадающих двойных кавычек в строковых литералах. Кажется, это немного излишне для достижения этой цели путем изменения общего поведения клавиатуры - это должно обрабатываться IDE, используемой для любых целей.
teukkam
2
@ Джошуа В моей стране люди выросли с компьютерными уроками на Windows, и эти «мертвые клавиши» по умолчанию используются на Windows в моей стране. Очень трудно изменить привычку, которую вы выучили 20 лет назад, когда вы одновременно используете Ubuntu и Windows. В Windows раскладка клавиатуры с таким поведением называется «Английский - США - Международный с мертвыми клавишами»
Ferrybig

Ответы:

12

Попробовав разные способы решения этой проблемы, я в конце концов нашел решение с помощью чата для этой проблемы.

Основная причина проблемы на самом деле вызвана тем фактом, что в Linux нет по умолчанию « dead_apostropheа» и «а dead_quotedbl», поэтому по умолчанию «используемая нами мертвая клавиатура» отображает dead_acuteлибо «мертвый» ключ , либо сопоставленный ему ключ ".

Это означало, что эту проблему невозможно решить, создав собственную раскладку клавиатуры, как мне было предложено в чате.

После дальнейших исследований и изучения новых ключевых слов для поиска я нашел это решение в Unix & Linux StackExchange , что помогло мне решить эту проблему.

Я выполнил следующие шаги, перечисленные в этом ответе:

  1. sudo apt install uim
  2. echo 'export GTK_IM_MODULE="uim"' >> ~/.profile
  3. echo 'export QT_IM_MODULE="uim"' >> ~/.profile
  4. curl 'https://gist.githubusercontent.com/guiambros/b773ee85746e06454596/raw/0ea6d7f7cf9a6ff38b4cafde24dd43852e46d5e3/.XCompose' > ~/.XCompose
  5. Сконфигурировать раскладку клавиатуры на «Английский (США - международный с мертвыми клавишами)»
  6. Перезагрузил Ubuntu (по комментариям достаточно выйти из системы и войти)

После этих шагов мне удалось оправдать следующие ожидания относительно моей клавиатуры:

  • Нажмите ", отпустите" : должен помнить ключ как мертвый ключ
  • Пресс ", релиз ", пресс <space>, релиз<space> : следует напечатать"
  • Пресс ", релиз ", пресс ", релиз" : следует напечатать""
Ferrybig
источник
4
Выйти из сеанса и войти снова должно быть достаточно, чтобы изменения в пользовательской конфигурации вступили в силу. Нет необходимости перезагружаться.
Дэвид Фёрстер