LINUX.ORG.RU

Переключение раскладки нестандартной комбинацией кнопок

 , , ,


0

1

Ввиду несовместимости стандартных клавиатурных комбинаций в Cinnamon DE с некоторым прикладным софтом (в GNOME та же история) требуется перейти на альтернативные комбинации шорткатов, в которых Alt-Shift уже занят и не может исользоваться без неприятных последствий. Одна из стандартных альтернатив для переключения раскладок - это Ctrl+Win, но в обратном порядке нажатия она не работает. Можно ли как-то настроить нестандартную комбинацию Win+Shift или Win+Ctrl для переключения раскладок?

Для тех, кто не совсем понял почему для меня важен именно такой порядок поясню. Дело в том, что от долгого использования Alt-Shift закрепилась привычка переключать раскладку вначале нажимая большим пальцем левой руки по Alt. Эту привычку не побороть и к тому же иногда приходится пользоваться ещё и виндой. Поэтому требуется нечто тактильно похожее и совместимое.

P.S. Использую Cinnamon DE и поэтому xorg.


Ответ на: комментарий от einhander

На чужих компьютерах не работает и несовместимо с моими привычками.

Почему все сразу начинают предлагать вовсе не то, о чём я спросил?

zg
() автор топика
Последнее исправление: zg (всего исправлений: 1)
Ответ на: комментарий от zg

Я посоветовался с copilot (все же так делают? вот и я попробовал). Он утверждает, что достаточно

1. Добавить в ~/.bashrc следующие строки
 
# Переключение раскладки клавиатуры
xmodmap -e "keycode 133 = Control_R"
xkbcomp -I$HOME/.xkb $HOME/.xkb/symbols/ru $DISPLAY

2. Перезапустить X-сервер или перезагрузить компьютер, чтобы изменения вступили в силу.

Этот скрипт изменяет код клавиши Win на Ctrl_R, что позволяет использовать сочетание Ctrl+Ctrl_R для переключения раскладки.

Т.е. прописываем переключение на CtrlL+CtrlR, жмём на Win+Ctrl. (моё понимание)

Звучит более менее здраво. Естественно код его я не проверял.

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

Пропустил суть: переопределение кейкода клавиши Win.

Ну а если мне кнопка Win понадобится по её прямому назначению? Например в Cinnamon она открывает стартовое меню после её одиночного нажатия и затем отжатия.

zg
() автор топика
Ответ на: комментарий от zg

Вот-вот. Можно конечно и её куда-то перемапить, «но зачем»?

в Cinnamon она открывает стартовое меню после её одиночного нажатия и затем отжатия

и как прикажите различать нажата кнопка для вызова главного меню или далее последует переключение раскладки?

В других DE может открывать главное меню уже по нажатию, Cinnamon давно не видел.

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

и как прикажите различать нажата кнопка для вызова главного меню или далее последует переключение раскладки?

Главно меню открывается не просто по нажатию, а по последующему отжатию кнопки Win. Если после нажатия и удержания Win была нажата ещё какая-то кнопка, главное меню не открывается даже сейчас.

В других DE может открывать главное меню уже по нажатию, Cinnamon давно не видел.

В Cinnamon как раз правильно сделали.

zg
() автор топика

Блин, пропач ты иксы и будут тебе любые комбинации и любые переключения.

Патч существует лет 15, но его никогда не примут видимо еще тогда было решено, что Xorg должен умереть…

По дефолту хоткеи срабатывают при нажатии, с патчем при отпускании кнопок.

Юзаю патченные иксы со времен 10 бубунты - все четко. Раньше даже PPA был. Сейчас на дебиане патчу себе сам - там плевое дело, тем более иксы уже принудительно 10 лет как заморожены…

anonymous
()
Ответ на: комментарий от zg

На чужих компьютерах не работает и несовместимо с моими привычками.

Почему все сразу начинают предлагать вовсе не то, о чём я спросил?

Так не понятно, что же ты просишь. Нестандартная комбинация кнопок и чтобы работало на чужих компьютерах - вещи изначально не совместимые. У тебя в каждой системе и ДЕ будут свои особенности с этим, а где-то твоей проблемы с порядком нажатия просто нет (в кде вейленде подобные комбинации срабатывают при нажатии в любом порядке).

Один из способов обойти ограничения по назначению хоткеев для переключения раскладки - использовать keyd. Можно на желаемую комбинацию клавиш замапить работающую в xorg или твоем де комбу для переклюючения. Но на чужих машинах работать не будет, а самая распространённая дефолтная комбинация между де/системами - «win-space».

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

Например вариант с keyd:

[meta]
control = macro(M-space)

Делаешь переключение раскладки на win-space, при зажатой win сонтрол выдаст win-space. Аналогично можно с любой удобной тебе комбинацией.

В идеале, в качестве видимой системе комбинации переключения раскладки лучше не использовать чистые модификаторы типа (win+control) и вешать как в примере что-то типа win-space. Так как вешая комбы из чистых модификаторов на комбы из чистых модификаторов можно получить непредсказуемое поведение. Но через костыли можно и их использовать, например этот мапинг при переключении в системе на win+ctrl:

[meta]
leftcontrol = macro(C-leftshift)

Такая странная связка даст побочный эффект в виде того, что последовательность win->ctrl начнет переключать раскладку (правда только на отжатии). По сути тут не важно что там в macro после C-, лишь бы это ничему другому не мешало.

altwazar ★★★★★
()

требуется нечто тактильно похожее и совместимое.

Зачем сам себе создаёшь проблему? Совместимое это [Win]+[Space]. Привыкнешь быстро и проблем вообще никаких никогда не будет.

anonymous
()
Ответ на: комментарий от zg

На чужих компьютерах не работает и несовместимо с моими привычкам

Это работает везде. Решай проблему а не следствие - меняй привычку.

anonymous
()
Ответ на: комментарий от altwazar

Так не понятно, что же ты просишь. Нестандартная комбинация кнопок и чтобы работало на чужих компьютерах - вещи изначально не совместимые.

Если бы ты читал не по диагонале, то не задавал бы этот вопрос. Мне предложили ещё и на Винде сменить комбинацию. Но периодически приходится иметь дело с немоими компьютерами, в которых я не могу менять эти настройки.

Один из способов обойти ограничения по назначению хоткеев для переключения раскладки - использовать keyd.

Из твоего текста дальше я так и не понял можно ли настроить этот keyd например на Win+Shift слева - тактильно наиболее близкая комбинация к Alt+Shift.

zg
() автор топика

к тому же иногда приходится пользоваться ещё и виндой

Там уже много лет как win+space. Впрочем как и почти во всех линуксовых ДЕ.

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

Мне предложили ещё и на Винде сменить комбинацию. Но периодически приходится иметь дело с немоими компьютерами, в которых я не могу менять эти настройки.

Ну так win-space дефолтная комбинация переключения раскладки везде. Она работает на чужих вин-машинах, даже если пользователь переключает её там по ctrl+shift или alt+shift. В то время как win-ctrl/win-shift на них не будет работать из коробки, из-за чего не понятны твои требования. Мне win-space комбинация не нравится только из-за цикличного переключения и рандомного расположения кнопки win на разных клавиатурах (особенно ноутбуках).

Из твоего текста дальше я так и не понял можно ли настроить этот keyd например на Win+Shift слева - тактильно наиболее близкая комбинация к Alt+Shift.

Прелесть keyd в том, что можно на что угодно повесить и работает эта штука и в консоли, и в иксах, и в вейленде с любыми ДЕ:

[meta]
leftshift = macro(M-space)

При нажатии на клавиши в порядке win->leftshift выстрелит нажатие win-space, на которую можно повесить переключение раскладки. Естественно, это сломает комбинации типа Win+Shift+Еще_одна_кнопка, но в отличие от варианта с ремапом win кнопки она и все Win+Еще_одна_кнопка продолжат работать.

Второй неплохой вариант для тебя - использовать патченный xorg, у которого переключение раскладки происходит по отжатию. Тогда можно тупо использовать atl+shift, но у этого подхода два недостатка. Патч этот надо накладывать с каждым обновлением, поэтому больше подходит для дистрибутивов, к которым кто-то стабильно поставляет этот патченный xorg. Второй недостаток - перед вводом следующего символа клавиши эти надо отжать, но комбинация типа alt+shift достаточно неудобная, чтобы пользователь и так её отжимал перед вводом символов, задевать это будет пользователей переключалки на капслок. Ну и нет никакой гарантии, что ты всегда будешь сидеть на одном дистрибутиве, что патченный иксорг не перестанут поставлять с каким-нибудь обновлением, что ты не перейдешь потом на какой-нибудь гном-вейленд. Keyd же будет работать в любом случае.

altwazar ★★★★★
()
Последнее исправление: altwazar (всего исправлений: 2)
OSZAR »