4

Мне кажется очень удобным использовать Control-j вместо Return в xterm и vim, и я хочу использовать эту последовательность для всех приложений X.

Это можно легко сделать с помощью xkb, переназначив ISO_Level5_Shift на клавишу Control и установив Return как символ 5-го уровня для клавиши j, но после этого все другие комбинации Control в vim и xterm перестают работать (потому что xterm и vim не могут понять Мод ключей), и это абсолютно недопустимо.

Мне удалось сделать это без переназначения ISO_Level5_Shift, используя тип ключа "LOCAL_EIGHT_LEVEL" в разделе xkb_symbols, который использует Control (вместо ISO_Level5_Shift) в качестве модификатора Level5:

    key <AC07> { [ j, J, plusminus, NoSymbol, Return ], type[Group1]= "LOCAL_EIGHT_LEVEL" };

Проблема этого решения - xkb устанавливает бит управления, а Control-j возвращает Control-Return вместо просто Return. Иногда (довольно часто, кстати) эта комбинация не работает как Return.

Итак, мне нужно изменить одно из этих решений, чтобы сбросить бит управления для комбинаций Control-j.

По этой ссылке: Arch Wiki статьи про XKB это можно сделать, но я не знаю, как это сделать. Итак, это мой вопрос.

Может быть, мне нужно добавить какое-нибудь правило xkb_compatibility для Return+Control или что-то в этом роде, или добавить несколько отображений xmodmap - любые решения приветствуются.

1 ответ1

5

Я нашел решение для моего вопроса. Вы можете назначить действие для каждого ключа в разделе xkb_symbols. Перенаправление - это действие, которое нам нужно:

key <AC07> { [ j,    J,     plusminus,      NoSymbol,      NoSymbol ],
  type[Group1]="EIGHT_LEVEL_SEMIALPHABETIC",
  actions = [ NoAction(), NoAction(), NoAction(), NoAction(), 
                                Redirect(key=<RTRN>, clearmods=all) ]
};

Используя это действие, вы можете очистить существующие модификаторы или добавить новые.

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