Как заставить Control-j работать как Возврат без установленного бита управления (!), Используя xkb [и | или] xmodmap
Мне кажется очень удобным использовать 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 ответ
Я нашел решение для моего вопроса. Вы можете назначить действие для каждого ключа в разделе xkb_symbols. Перенаправление - это действие, которое нам нужно:
key <AC07> { [ j, J, plusminus, NoSymbol, NoSymbol ],
type[Group1]="EIGHT_LEVEL_SEMIALPHABETIC",
actions = [ NoAction(), NoAction(), NoAction(), NoAction(),
Redirect(key=<RTRN>, clearmods=all) ]
};
Используя это действие, вы можете очистить существующие модификаторы или добавить новые.