Из-за расположения моей клавиатуры я хочу иметь numlock, постоянно нажатый и использовать клавишу Num Lock в качестве клавиши Delete. Я, может казаться, не заставляю это работать. Любые идеи о том, как сделать это, ценились бы.
Править: Я работаю на Ubuntu 16
Вот то, что я попробовал:
Вдохновленный этим вопросом. Мое понимание - то, что xmodmap удерживается от использования, таким образом, это - вероятно, не прекрасная идея.
~/.Xmodmap
со строкой keycode 77 = Delete NoSymbol
xmodmap ~/.Xmodmap
numlockx on
Это позволяет numlock работать, как удаляют, и включает цифровую клавиатуру до первого раза, когда я нажимаю клавишу Num Lock. Затем клавиша Num Lock отключает цифровую клавиатуру.
/usr/share/X11/xkb/symbols/us
иметь key <NMLK> { [Delete, Num_Lock] };
в конце основной контурной карты. также попробованный:
/usr/share/X11/xkb/symbols/us
иметь replace key <NMLK> { [Delete, Num_Lock] };
в конце основной контурной карты. Это страдает от подобных проблем как другой метод, способность удалить работы, но клавиша Num Lock выключает цифровую клавиатуру. Это также, кажется, смешивает с другими ключами как ключ окон, когда цифровая клавиатура включена. Мне действительно нравится это, я получаю контроль numlock, использующего shift+numlock. Я не могу найти различие между использованием замены и не использованием его.
Пройдите Видео 30 секунд https://imgur.com/3eLhv14
~/.xmodmaprc
файл. Создайте файл, если Вы еще не присвоились для xmodmap
.Измените коды клавиши на основе своих результатов клавиатуры в ниже кода.
keycode 77 = Delete
keycode 119 = Num_Lock
clear Mod2
add Mod2 = Num_Lock
xmodmap ~/.xmodmaprc
в этой точке Вы достигли почти, что Вы хотите, который является физическим ключом, который появляется как NUMLOCK, работающий DEL и физическим ключевым DEL, работающим NUMLOCK.
xbindkeys
в сочетании с xte
или xdotool
и т.д. для моделирования ключа Num_Lock, который является Физически клавишей DEL на данном этапе.Вставьте ниже кода в файле ~/.xbindkeysrc.scm
И ПЕРЕЗАГРУЗКА. Создайте файл, если еще не создано для xbindkeys
. Измените значение "c:77"
на основе результатов Вашей клавиатуры. путем выполнения xbindkeys --key
и нажатие физической клавиши NUMLOCK
(xbindkey '(shift "c:77") "xte 'key Num_Lock'")
Это означает при нажатии Shift+NUMLOCK, он моделирует клавишу DEL и таким образом изменение состояния Num_Lock На и Прочь.
В ниже GIF можно наблюдать вверху слева символы 1 и Сдвиг, символ 1 переключатель, поскольку я нажимаю нажатие клавиши Shift+NUMLOCK и выпуск.
Вот способ сделать это, используя только xkb, что, на мой взгляд, лучше, чем использование xmodmap. Этот ответ включает больше деталей о том, чего я хотел достичь, чем исходный вопрос. Xmodmap и xkb не всегда хорошо работают вместе, этот подход обеспечивает большую гибкость:
Все это взято из: https://wiki.archlinux.org/index.php/X_keyboard_extension
Там это список доступных символов ключей, которые, кажется, работают здесь: http://docs.ev3dev.org/projects/grx/en/ev3dev-stretch/c-api/input_keysyms.html
Это делается вручную чтобы вы могли начать с конфигурации, которая уже есть на вашем компьютере, чтобы предотвратить проблемы совместимости с различными клавиатурами.
Примеры предыдущих запусков этого можно увидеть в config_files / linux / keyboards
Начните с запуска xkbcomp $ DISPLAY output.xkb
, чтобы получить текущую клавиатуру.
настройки.
Затем добавьте:
interpret osfLeft{
repeat= True;
action = RedirectKey(keycode=<LEFT>, clearmodifiers=Lock);
};
interpret osfRight{
repeat= True;
action = RedirectKey(keycode=<RGHT>, clearmodifiers=Lock);
};
interpret osfDown{
repeat= True;
action = RedirectKey(keycode=<DOWN>, clearmodifiers=Lock);
};
interpret osfUp{
repeat= True;
action = RedirectKey(keycode=<UP>, clearmodifiers=Lock);
};
interpret osfEndLine{
repeat= True;
action = RedirectKey(keycode=<END>, clearmodifiers=Lock);
};
interpret osfBeginLine{
repeat= True;
action = RedirectKey(keycode=<HOME>, clearmodifiers=Lock);
};
interpret osfEscape{
repeat=True;
action = RedirectKey(keycode=<ESC>, clearmodifiers=Lock);
};
в раздел совместимости сгенерированного файла.
Внизу раздела типов добавьте:
type "CUST_CAPSLOCK" {
modifiers= Shift+Lock;
map[Shift] = Level2; // Note that this maps Shift only of {Shift,Lock} to Level2. Alt+Shift will be mapped to Level2
map[Shift+Lock] = Level3; // but Lock+Shift won't map to Level2 even without this line.
map[Lock] = Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Lock";
};
interpret osfDelete{
repeat=True;
action = RedirectKey(keycode=<DELE>, clearmodifiers=Lock);
};
Найдите , интерпретируйте Caps_Lock
и измените LockMods
на SetMods
так что caps lock устанавливает только модификатор, а не блокирует его.
Чтобы разрешить capslock + WASD работать как клавиши со стрелками: отредактируйте клавиши
,
,
,
, чтобы иметь тип CUST_CAPSLOCK
и иметь соответственно osfUp
, osfLeft
, osfDown
, osfRight
в третьей позиции.
Чтобы разрешить capslock + HJKL работать как клавиши со стрелками: отредактируйте клавиши
,
,
,
, чтобы иметь тип CUST_CAPSLOCK
и иметь соответственно osfLeft
, osfDown
, osfUp
, osfRight
в третьей позиции.
Чтобы разрешить регистрацию capslock + 0 как home и capslock + $ как end: отредактируйте ключи
и
так, чтобы они имели тип CUST_CAPSLOCK
и соответственно osfEndLine
и osfBeginLine
на третьей позиции.
Чтобы разрешить регистрацию capslock + пробел как escape (удобно для vim), отредактируйте ключ
, чтобы он имел тип CUST_CAPSLOCK
, имел пробел
в во второй позиции и osfEscape
в третьей позиции.
Чтобы превратить клавишу numlock в клавишу удаления и сделать capslock + numlock, сделайте
типом CUST_CAPSLOCK
, первым и вторым положением osfDelete
] и позиция три имеют Num_Lock
Теперь загрузите измененный файл обратно на сервер с помощью: xkbcomp output.xkb $ DISPLAY
.
Если все работает, поместите файл куда-нибудь, ~ / .Xkeymap
работает и создайте сценарий, например, с именем ~ / start_keyboard.sh
с:
#!/bin/bash
xkbcomp ~/.Xkeymap $DISPLAY
Сделайте его исполняемым ( chmod u + x ~ / start_keyboard.sh
) и добавьте сценарий в свои автозагрузочные приложения.