как подкачать ctrl и capslock, использующий xmodmap?

от: http://www.zsh.org/mla/users/2007/msg00398.html

The shell then executes code in the file
scripts/newuser in the shared library area (by default
/usr/local/share/zsh//scripts/newuser).  This feature can be
turned off simply by removing this script.  The module can be removed
entirely from the configured shell by editing the line starting
"name=zsh/newuser" in the config.modules file, which is generated in the
top level distribution directory during configuration: change the line to
include "link=no auto=no".

и /etc/zsh/zshrc получен каждой оболочкой, которая имеет interactive,rcs, & globalrc опции установлены. (который большинство интерактивных процессов zsh делает),


или добавьте zsh-newuser-install() { :; } в /etc/zsh/zshenv Который имеет очевидный побочный эффект пользователей, не бывших способных использовать функцию, пока они не не определяют Ваш.

Можно совершенствовать это путем добавления теста UID.

if (( EUID < 1000 )) && (( EUID != 0 )); then # or whatever the highest daemon uid on your system
  zsh-newuser-install() { :; }
fi

4
03.01.2014, 01:48
2 ответа

От Caps Lock перекарты:

человек xmodmap показывает, как подкачать левую клавишу CTRL и клавишу Caps Lock:

!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

Они keysym строки важны, так как они - те, которые отображают коды клавиши на противостоящие ключи, т.е. код клавиши для Capslock идет для Управления L и наоборот.

выборка из xmodmap страницы справочника*

   keysym KEYSYMNAME = KEYSYMNAME ...
           The KEYSYMNAME on the left hand side is translated into matching 
           keycodes used to perform the corresponding set of keycode 
           expressions.  Note that if the same keysym is bound to multiple 
           keys, the expression is executed for each matching keycode.

Наблюдение эффекта

Можно использовать инструмент xev видеть, что ключи были буквально повторно отображены. Таким образом, Capslock теперь отправляет scancode за Управлением L.

Пример

Нажатие Capslock отправляет Управление L.

$ xev
KeyPress event, serial 36, synthetic NO, window 0x3e00001,
    root 0x86, subw 0x0, time 890946390, (803,237), root:(804,294),
    state 0x2, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x3e00001,
    root 0x86, subw 0x0, time 890946462, (803,237), root:(804,294),
    state 0x6, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Нажатие Control L отправляет Capslock.

$ xev
KeyPress event, serial 36, synthetic NO, window 0x3e00001,
    root 0x86, subw 0x0, time 891083183, (793,9), root:(794,66),
    state 0x0, keycode 37 (keysym 0xffe5, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x3e00001,
    root 0x86, subw 0x0, time 891083302, (793,9), root:(794,66),
    state 0x2, keycode 37 (keysym 0xffe5, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Ссылки

4
27.01.2020, 20:54

правильно. Линии «Удалить» и «Добавить» отключить / включить ключи. Команды, которые на самом деле выполняют коммутатор, являются командами Keysym. Так что никогда не будет работать без команд Keysym.

1
27.01.2020, 20:54

Теги

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