4

ОС: Ubuntu

В программировании и различных терминальных программах (Screen, Vim) [,], {и} часто используются. Я использую норвежскую клавиатуру, где они расположены так, что мне приходится вытягивать пальцы слишком долго, чтобы это было удобно. Чтобы сделать это проще, я хотел бы, чтобы alt+[некоторый ключ] был одним из этих символов. Есть ли способ, которым я могу связать, скажем, alt+æ (норвежское письмо) с '{' по всей системе?

Кстати, это называется связыванием, отображением или чем-то еще? Я немного запутался в терминах ... :)

1 ответ1

1

К сожалению, это не будет возможно с помощью клавиши Alt+. Вы видите, что ввод Alt+key в командном окне - это то же самое, что нажатие клавиши Escape с последующим нажатием клавиши.

Тем не менее, у меня есть своего рода решение для вас, но оно требует немного усилий и предполагает, что вы используете X. Ваш screen/vim в эмуляторе терминала все равно будет работать с этим.

Я использую испанскую клавиатуру, и символы []{} находятся на клавишах справа от моего мизинца на правой руке, но также требуют нажатия клавиши AltGr. Это значит, что я слишком сильно сжал мою правую руку. Я изменил это с помощью xmodmap.

Если вы добавите файл с именем.Xmodmap в ваш домашний каталог, затем он поступает каждый раз при входе в X. В качестве альтернативы вы можете выполнить его в любое время, используя xmmodmap ~/.Xmodmap .

Вот пример того, как это настроить. Правый символ фигурной скобки } находится на клавише с ç на моей клавиатуре, но я должен нажать AltGr вместе с клавишей, чтобы получить правильную фигурную скобку. Чтобы увидеть, какой код ключа сопоставлен с этим, я использую xmodmap -pk:

$ xmodmap -pk | grep brace
51 0x00e7 (ccedilla) 0x00c7 (Ccedilla) 0x00e7 (ccedilla) \
   0x00c7 (Ccedilla) 0x007d (braceright) 0xfe55 (dead_breve)
# split to prevent scroll, this is all on one line

Это означает, что код ключа 51 отображается на эти ключи с различными модификаторами. Вот что должен сказать man xmodmap :

keycode NUMBER = KEYSYMNAME ...
 The list of keysyms is assigned to the indicated keycode (which may be
 specified in decimal, hex or octal and can be determined by running the xev
 program). Up to eight keysyms may be attached to a key, however the last
 four are not used in any major X server implementation. The first keysym is
 used when no modifier key is pressed in conjunction with this key, the
 second with Shift, the third when the Mode_switch key is used with this
 key and the fourth when both the Mode_switch and Shift keys are used.

Итак, у нас есть:

  • без модификатора = ccedilla ç
  • сдвиг = Ccedilla Ç
  • Mode_switch = ccedilla
  • Mode_switch и shift = Ccedilla
  • AltGr = braceright}

Экспериментируя, кажется, что пятая запись на самом деле, когда AltGr и клавиша нажата. Так много для документации, а? Я понятия не имею, что такое клавиша Mode_switch, это, конечно, не Alt, Shift или Ctrl.

Я хотел изменить этот самый бесполезный из ключей по умолчанию } . Запись по моему.Xmodmap выглядит следующим образом:

keycode 51 = braceright Ccedilla ccedilla Ccedilla braceright dead_breve

Я никогда не пишу ccedillas (кроме как в этом посте, и здесь я написал это, набрав Ç, затем использую guw в Vim, чтобы сделать его строчным!) так что я не скучаю по ним. Другие ключи, такие как ключ с ] на нем были хитрее. На этом ключе написано *+] . Я переместил плюс на другую клавишу (удалив дублирующийся вверх ногами восклицательный знак ¡), выплюнул] по умолчанию и * со смещением. Поведение AltGr я оставил нетронутым.

У меня есть похожие записи для других кодов клавиш, соответствующих ключам других кодеров. Иногда я думаю, что мне следует переучить макет в США или Великобритании только для взлома. Я бы пропустил модные ключи в письмах, хотя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .