LINUX.ORG.RU

Как сделать чтоб...

 ,


1

2

функции ctrl выполнял caps lock, в сочетаниях с ctrl менялась раскладка, а традиционные функции капса выполнялись по Alt+Ctrl?

У меня:

$ setxkbmap -layout "us,ru(winkeys)" -option "grp:lalt_lshift_toggle,ctrl:swapcaps,ctrl:nocaps,grp:caps_switch,terminate:ctrl_alt_bksp"

Опция grp:caps_switch не работает.

★★★★★

Последнее исправление: ados (всего исправлений: 1)

Не совсем понял по поводу раскладки, но у меня Ctrl на капсе, по нажатию на левый Ctrl меняется раскладка. .xmodmap:

remove Lock = Caps_Lock
keysym ISO_Next_Group = Super_R
keysym Control_L = ISO_Next_Group
keysym Caps_Lock = Control_L
add Control = Control_L

setxkbmap:

setxkbmap -layout 'us,ua,ru' -variant ',winkeys,winkeys' -option grp:menu_toggle -option compose:ralt -option terminate:ctrl_alt_bksp
unlog1c ★★★
()

Вряд ли получится такое средствами иксов. actkbd может заставить иксы поверить, что у тебя на клавиатуре есть пара лишних клавиш и слать иксам press/release на тех же alt-ctrl, например. А смену раскладки, если setxkbmap недостаточно гибок, можно руками через xmodmap (ISO_FIRST_GROUP, ISO_NEXT_GROUP, ISO_LAST_GROUP) ставить на любые клавиши.

Хотя в некоторых сочетаниях, может, и получится средствами иксов. Давно не читал маны по xmodmap.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Вряд ли получится такое средствами иксов.

Похоже на то. Наверное опции xkb используют хаки недоступные из xmodmap. Я уже поставил Ctrl на Caps_Lock. Но настройка Ctrl + Alt как написано в документации не работает:

! Ctrl key
keycode 37 = Mode_switch Mode_switch NoSymbol NoSymbol Caps_Lock
$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Mode_switch (0x42)
control     Control_L (0x25),  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 (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Что интересно xmodmap показывает неуказанное в опциях поведение Shift + Ctrl, которое работает (это без ручных установок xmodmap-ом):

$ xmodmap -pke|grep " 37" 
keycode  37 = Control_L ISO_Next_Group Control_L ISO_Next_Group

Как и написано она меняет раскладку.

А установленное xkb поведение с Alt-ом вообще непонятно как описаны в xmodmap:

$ xmodmap -pke|grep " 66" # Alt + Caps_Lock = традиционная функция Caps_Lock
keycode  66 = Mode_switch Caps_Lock Mode_switch Caps_Lock
$ xmodmap -pke|grep " 50" # Смена раскладки по Alt + Shift
keycode  50 = Shift_L ISO_Next_Group Shift_L ISO_Next_Group
$ xmodmap -pke|grep " 64" # Здесь работает как и документации к xmodmap
keycode  64 = Alt_L ISO_Next_Group Alt_L ISO_Next_Group
ados ★★★★★
() автор топика
Ответ на: комментарий от ados

Поэтому и советую actkbd, его рулесы слегка запутаны, но могут вообще всё. А потом в иксах вешать что угодно на созданные actkbd виртуальные клавиши.

Кто-нибудь должен запилить статью в лор/арчвике по поводу такого смешанного костылинга.

x3al ★★★★★
()
Ответ на: комментарий от x3al

его рулесы слегка запутаны

Вот именно. Пока я покрутил его, перемещения добиться не получается - или клавиши нажимаются вместе или клавиатура отнимается как в моём конфиге:

58:key:ungrabbed,all,grab,noexec,ignrel,key(29):
58:rep:grabbed,all,noexec,ignrel,rep(29):
58:rel:grabbed,ungrab,noexec,allrel,rcvrel,rel(29):

29:key:ungrabbed,all,grab,noexec,ignrel,key(58):
29:rep:grabbed,all,noexec,ignrel,rep(58):
29:rel:grabbed,ungrab,noexec,allrel,rcvrel,rel(58):

Но я так понимаю grab - единственный способ подавить событие с клавиши.

ados ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.