Comments 63
В виме также можно вместо Esc нажимать Ctrl+[
Очень удобно, если Caps и левый Ctrl поменяны местами
У меня правый альт — для третьего-четвёртого слоёв. При включении в настройках клавиатуры дополнительных типографских символов это даёт раскладку, близкую к раскладке Ильи Бирмана. А в роли Cоmpose — правая виндовая клавиша и с её помощью я ввожу то, чего нет в третьем-четвёртом слое.
В ~/.xsessionrc
Warning: No symbols defined for ...»
Можно игнорировать
Cinnamon что-то переопределяет позже
Вполне возможно. У меня AwesomeWM, он не умничает так :)
В /usr/share/X11/xkb/symbols/group сделал под новым именем копию конфига наиболее близкой комбинации, поправил коды клавиш на нужные. Далее поиском по имени исходной комбинации нашел все её упоминания в файлах в /usr/share/X11/xkb/ (нашлось несколько файлов разных форматов, в том числе xml-подобный список комбинаций с текстами для пунктов меню настроек) и по аналогии добавил везде свою новую комбинацию. Новый пункт сразу появился в меню и заработал как ожидалось.
Поставим-ка BackSpace на $mod3+Space ($mod3 наш модификатор третьего уровня)!
Кстати, может быть более полезно так (неразрывный пробел иногда нужен):
replace key <SPCE> {
type="THREE_LEVEL",
symbols[Group1]= [ space, BackSpace, nobreakspace ]
};
Получается $mod3+Space == неразрывный пробел (иногда нужен); Shift+Space == Backspace.
"THREE_LEVEL" указывает, что $mod3+Shift и без шифта не различаются.
Ну или поменять местами BackSpace и nobreakspace, если так удобнее.
А вот идея с capslock вместо левого ctrl мне нравится. У меня как раз давно левый ctrl перестал работать из-за пролитого пива.
setxkbmap
Крайне плохо дружится с десктопными окружениями. И Gnome и KDE любят вставлять свои приколы, поэтому если поковыряться в setxkbmap
может внезапно перестать работать управление клавиатурой которое в системных настройках установлено.
Сейчас адекватно можно использовать D-Bus интерфейсы:
Gnome:
org.gnome.Shell.Eval "imports.ui.status.keyboard"
KDE:
org.kde.keyboard /Layouts
Давно не правил клавиши под linux, но вроде большую часть из описанного можно реализовать силами Sxhkd. Один конфигурационный файл править или закидывать на новую систему гораздо проще, чем десяток файлов, и он отлично дружит со всеми окружениями.
Аналогично под виндовс можно сделать один конфиг силами Ahk.
Что касается радикального изменения клавиш это здорово ровно до того момента, пока не приходится периодически работать за другими компами или дать доступ к своему: презентации, удаленка, тонкие клиенты, браузер для супруги и т д. Эффективнее или перейти на другую раскладку а-ля дворак, которую можно моментально использовать или потренировать классическую, например, вот тренажер для питона, возможно просто не полноценно используете десятипальцевый набор.
Ну и стоит подобрать более удобную клавиатуру. Сам являюсь сторонником vim биндов и использую их повсеместно и 60% клавиатуры очень хорошо для этого подходят — тянуться легко до любых клавиш. Посоветую IKBC Poker, которой сам пользуюсь: программируемый слой, физический переключатель раскладок (Qwerty, Dvorak, Colemak, Workman) ну и размер идеальный. Раз настроить свой слой и на любой машине чувствуешь себя комфортно без лишних манипуляций.
Как можно настроить, чтобы на входе в систему всегда был английский для ввода пароля?
Я думал во всех популярных дистрибутивах это уже из коробки решается.
$ localectl --no-convert set-x11-keymap us,ru "" "" grp:alt_shift_toggle
$ systemctl restart display-manager
или в ручном варианте
$ nano /etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us,ru"
Option "XkbModel" "pc105"
Option "XkbVariant" ","
Option "XkbOptions" "grp:alt_shift_toggle"
EndSection
Первой раскладкой при запуске будет первая указанная (us,ru). За что отвечают остальные строчки можно почитать арчвики тут и тут.
И вообще, независимо от того какой системой вы пользуетесь, начинайте поиск оттуда. Большая часть написанного актуальна для всех дистрибутивов.
Никогда даже не задумывался что это проблема. Впрочем у меня линукс только на старом thinkpad x220 там вход по отпечатку. Да и по логике не входит в задачи скринсейвера язык проверять.
Думаю для такой узкоспецифичной задачи стоит просто скрипт написать, отслеживать запущенный xscreensaver и менять язык на английский. Ну и в crontab его закинуть.
Да, вот как раз эта проблема. Включился скринсейвер, после этого нужно снова залогиниться, а язык тот, который был последний включен. Нужно проверить сначала, что за язык включен, переключиться на английский и после этого ввести пароль. Хочется сразу ввести пароль и не смотреть, что за язык включен. У меня Ubuntu, Gnome. Не нашел как это настраивается.
Напишите скрипт. Отлавливайте запуск скринсейвера (что-то вроде "ps aux | grep -v grep | grep xscreensaver") и меняйте язык на английский если он запущен.
Более примитивный способ "в лоб" менять язык, если была нажата комбинация блокировки, но он работает при допущениях, что вы блокируете комбинацией клавиш, а не уходите и ждете пока он сам уснет и пользуетесь именно хоткеем.
Сначала разберемся, как можно настроить смену раскладки клавиатуры.
А лучше не перенастраивать и привыкнуть к Super + Space. Сейчас все операционные системы по-умолчанию используют такую раскладку.
Еще хочется узнать, как с помощью клавиатуры переключаться между несколькими открытыми окнами, например, PyCharm'a или Google Chrome.
как с помощью клавиатуры переключаться между несколькими открытыми окнами, например, PyCharm'a или Google Chrome.
Вам под какую систему переключение нужно? Если под linux ставите sxhkd в конфиге пишите свои хоткеи. Для примера команды по открытию приложений и изменению яркости из офф репа на GitHub
super + o ; {e,w,m}
{gvim,firefox,thunderbird}
{_,shift + ,super + }XF86MonBrightness{Down,Up}
bright {-1,-10,min,+1,+10,max}
А лучше не перенастраивать и привыкнуть к Super + Space.
Нет Super + Space ужасное решение, которое крайне неудобно нажимать одной рукой, не перенося для этого всю руку. Лучший вариант найти клавишу, которую используешь в среднем никогда и поставить переключение на нее.
А лучше не перенастраивать и привыкнуть к Super + Space
то есть опять циклическое переключение со всеми его недостатками?
Прочитал, наконец, до конца всю статью.
Хочу предупредить, вы поменяете у себя раскладку на нестандартную, привыкнете к ней, и потом будете испытывать каждый раз сильный дискомфорт когда придется сесть за какой-нибудь другой компьютер другого пользователя, у которого стандартная раскладка.
Изменим циклическое переключение поAltGr
на ациклическое:AltGr
переключает на латинскую раскладку,Shift+AltGr
— на русскую.
Меня в этом варианте раздражает, что Shift
надо нажимать до AltGr
, нельзя ли сделать чтобы порядок нажатия кнопок не играл роли?
Можно, но с некоторым побочным эффектом. Для этого нужно вернуть AltGr
значение Alt_R
(или другое, но нужно, чтобы оно не использовалось на других клавишах) и задать значение с шифтом ISO_Last_Group
, дальше задать такое же значение на шифтах при нажатом Alt_R
:
key <RALT> {
symbols[group1] = [ Alt_R, ISO_Last_Group ],
virtualMods= AltGr
};
key <RTSH> {
type[group1] = "PC_RALT_LEVEL2",
symbols[group1] = [ Shift_R, ISO_Last_Group ]
};
key <LFSH> {
type[group1] = "PC_RALT_LEVEL2",
symbols[group1] = [ Shift_L, ISO_Last_Group ]
};
И чтобы переключение на английскую раскладку было при нажатии AltGr
, используем $ xcape -t <xxx> -e "Alt_R=ISO_First_Group
.
Здесь нужно либо подобрать время, через которое будет срабатывать переключение, либо убрать его вообще, но тогда, если сначала нажимается шифт, а потом альт, нужно отпускать вместе (иначе сработает переключение на английский).
Как сделать по другому пока не представляю, потому что комбинацию AltGr+Shift
просто не задать.
С другой стороны, по этой же схеме, но без xcape
можно сделать, чтобы в одном порядке переключало в одну сторону, а в обратном — в другую.
мне не особо нравится идея использовать xcape
— это же, как я понимаю, демон-костыль, который существует отдельно от иксов.
но без него такие простые вещи, как "нажатый-отпущенный AltGr
переключает раскладку, зажатый AltGr
с кнопками работает как модификатор" не сделать, я правильно понимаю?
xcape -t <xxx> -e "Alt_R=ISO_First_Group"
— так не работает, похоже нельзя ISO_First_Group.
а так по обдумыванию мне понравилась идея повесить, например на оба alt
латиницу, а на оба shift
кириллицу, оставив при этом их работу комбинациях так, как есть по умолчанию.
я так понимаю, средствами самих иксов такого не добиться, только с xcape
или чем-то ещё сторонним.
У меня работало, но при этом ISO_First_Group было назначено и на другую комбинацию. Может с этими связано.
Если имеется ввиду комбинация Alt_L+Alt_R — латиница, Shift_L+Shift_R — кириллица, то без xcape получится. Мы можем задать значение шифтов в модификатором Shift (просто второй параметр) и значение альтов с модификатором Alt (тип -> PC_ALT_LEVEL2, и теперь второй параметр). Это похоже на то, что было выше.
Если имеется ввиду комбинация Alt_L+Alt_R
нет, имелось в виду Alt_L
или Alt_R
на латиницу, то же самое на кириллицу (с двух сторон для того, чтобы можно было переключиться, если вдруг в правой чашка чая и набираешь одной левой).
при этом ISO_First_Group было назначено и на другую комбинацию
точно, в документации об этом прямым текстом сказано.
вроде бы получилось то, что хотелось, в несколько этапов:
добавляем
ISO_First_Group
иISO_Last_Group
на явно неиспользуемые кнопки
загружаем keymap:
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete+ledscroll(group_lock)" }; xkb_geometry { include "pc(pc105)" }; xkb_symbols "my" { include "pc+us+ru:2+inet(evdev)" key <I251> { [ ISO_First_Group ] }; key <I252> { [ ISO_Last_Group ] }; }; }
переназначаем правый альт на неиспользуемый модификатор, иначе некоторых программах (firefox, например) при нажатии на него вылетает меню:
xmodmap -e "keycode 108 = Hyper_R"
ну и запускаем xcape:
xcape -e "Alt_L=ISO_First_Group;Shift_L=ISO_Last_Group;Hyper_R=ISO_First_Group;Shift_R=ISO_Last_Group"
единственное "но" — отвалилась индикация раскладки скроллоком, непонятно, но с этим уже можно жить.
Попробовал сделать, но столкнулся с проблемой: загрузка конфигурации ломает виджет отображения раскладки в awesome WM (нет ни отображения, ни переключения раскладки). Посмотрел исходники и похоже что awesome берёт названия активных раскладок из строки типа "pc+us+ru...
". Своя конфигурация надписывает это или я что-то делаю не так? В какую сторону копать, чтобы починить это? Ссылка на конфиг. Заранее спасибо за ответ.
Расскажите, как заставить vim понимать команды c кириллической раскладки? Например, чтобы войти в режим редактирования и продолжить писать на кириллице, мне необходимо переключиться на латинскую раскладку, нажать i
, а после снова вернуться на кириллицу.
Еще можем поставить в русской раскладке слэш и вопросительный знак туда, где они стоят в английской.
я ещё убрал запятую с цифровой клавиатуры:
key <KPDL> {
symbols[Group2]= [ KP_Delete, KP_Decimal ]
};
AltGr+[ = [
Написал следующий конфиг:
xkb_keymap {
xkb_keycodes { include «evdev+aliases(qwerty)» };
xkb_types { include «complete» };
xkb_compat { include «complete» };
xkb_symbols {
include «pc+us+ru:2+inet(evdev)»
name[group1]=«English (US)»;
name[group2]=«Russian»;
key {
type[group2]= «FOUR_LEVEL»,
symbols[group2]=[Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright]
};
};
xkb_geometry { include «pc(pc105)» };
};
и ничего не работает
Такое впечатление что клавиша AltGr глобально отключена для X11
Чтобы AltGr + [ = [
как значение на третьем уровне, надо модификатор этого уровня определить
key <RALT> { [ ISO_Level3_Shift ] }
А еще для самой клавиши код указать нужно (скорее всего key <AD12> { ...
)
"AD12" потерялся при отображении
key <RALT> { [ ISO_Level3_Shift ] };
не помогло. решил проблему следующим конфигом (добавил еще переключение между раскладками)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols {
include "pc+us+ru:2+inet(evdev)+group(lalt_lshift_toggle)+level3(ralt_switch)"
name[group1]="English (US)";
name[group2]="Russian";
key <AD12> {
type[group2]= "FOUR_LEVEL",
symbols[group2]=[Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright]
};
};
xkb_geometry { include "pc(pc105)" };
};
УМВР. kde и gnome не использую.
если интересно, конфиги могу выложить.
Использую i3, просто в конфиге прописал команду xkbcomp ...
В гноме вроде можно через настройки добавить в автозапуск эту команду
Можно повесить там, где конфигурируются в вашей DE шорткаты, вот такие штуки:
setxkbmap -layout ru,us
и setxkbmap -layout us,ru
.
Если совместимость с циклической раскладкой не нужна, то выкидываем все, что после запятой. Если надо больше языков — дополняем список по аналогии.
Очень напомнило вот этот пост.
Linux. Настройка клавиатуры