Я могу Изменить Caps Lock на Модификатор Hyper/Additional?

Можно проверить источник на FreeBSD из управления версиями здесь. Руководство разработчика отвечает на большое количество вопросов о разработке FreeBSD. Почему Вы не создающий его из самого FreeBSD? Это кажется отчасти... нечетным для создания из Ubuntu.

6
01.07.2014, 02:35
3 ответа

Хотя другие ответы с использованием xmodmap верны, есть гораздо более простой способ. Вместо:

Option "XkbOptions" "ctrl:nocaps"

Просто используйте:

Option "XkbOptions" "caps:hyper"

Вы можете найти все опции в /usr/share/X11/xkb/rules/base.lst

2
27.01.2020, 20:23

Это может быть легче сделать с xmodmap. Поместите следующее в свой .xsession или .xinitrc:

xmodmap -e "keysym Caps_Lock = Hyper_L"

Необходимо будет также удостовериться, что Hyper_L присвоен карте модификатора, не совместно использованной с другими ключами, иначе он может генерировать модификатор для тех ключей вместо этого (или те ключи могут стать Hyper). Выполненный xmodmap с не параметры (Ваш вывод может отличаться):

> xmodmap
xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_L (0x42),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce), Hyper_L (0x4e)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

В этом примере Hyper_L присваивают тому же modifer как Супер ключи и так рассматривают как Супер ключ. Эти команды удалят его из mod4 и поместят его в пустую mod3 карту модификатора:

xmodmap -e "remove Mod4 = Hyper_L" -e "add Mod3 = Hyper_L"

Если Hyper_L не появляется в списке карт модификатора, удалить команда не может быть необходимой.

Карта модификатора arcanity происходит из-за того, как X11 связывается, снижается ли модификатор. Это отправляет однобайтовое битовое поле, каждый бит, соответствующий одной из карт модификатора, вместо того, чтобы отправить "Hyper" или "Супер". Приложения должны пойти и посмотреть на карту модификатора и выяснить то, что на самом деле означал конкретный бит. Если Вы имеете, например, и ключи Super и Hyper, присвоенные mod4, приложение не имеет никакого способа сказать, удерживаются ли Super или Hyper (или оба).

8
27.01.2020, 20:23
  • 1
    Это работает (xev берет CapsLock как Hyper_L)..., но его действие больше как Сдвиг, чем Ctrl/Alt и Emacs не берет его как модификатор. Действительно ли там что-то дополнительно, я могу сделать? Действительно изящный –  bitflips 21.09.2013, 23:10
  • 2
    @mellowmaroon, я развернул свой ответ, он должен теперь иметь то, что необходимо получить его работа. Я предполагаю xmodmap -e "remove shift = Hyper_L" -e "add mod3 = Hyper_L" может быть тем, в чем это нуждается, или возможно mod1 или mod4 вместо shift. –  wingedsubmariner 22.09.2013, 00:03
  • 3
    я пытался переместить Hyper в Mod3 как Вы, имеет, но он все еще делает то же самое. Я действительно ценю помощь все же. Что-либо еще, что могло бы портить его? –  bitflips 22.09.2013, 01:11
  • 4
    @mellowmaroon Этот ответ должен иметь все, которое Вам нужно. Возможно, Ваша первоначальная конфигурация модификатора отличается от wingedsubmariner's и таким образом, необходимо изменить его по-другому. Отправьте вывод xmodmap. –  Gilles 'SO- stop being evil' 22.09.2013, 02:06
  • 5
    Хорошо у меня есть все работающее теперь! Это оказалось консольной неспособностью Emacs обнаружить Super и Hyper (по крайней мере, с urxvt) это отбрасывало меня. Большое спасибо! –  bitflips 22.09.2013, 03:10

Это работало для меня:

keycode 66 = BackSpace
remove Mod4 = Hyper_L
add Mod3 = Hyper_L
keycode 66 = Hyper_L
3
27.01.2020, 20:23

Теги

Похожие вопросы