На работе приходится сидеть в Windows по ряду причин, но очень неудобно, что нет привычного переключателя раскладок клавиатуры по CapsLock.
Перебрал несколько вариантов: специализированные утилиты (сайты большинства умерли (привет Recaps, Keyla) за исключением, пожалуй Capslang), правка реестра Windows ( https://habrahabr.ru/post/305658/, не понравилось), использовал PuntoSwitcher (стрельба из пушки по воробьям ради только переключалки, плюс досадно глючил временами).
В результате остановился на варианте с AutoHotkeys и эмуляцией нажатия клавиш переключения раскладки. Кроме того, учёл, что в рабочей сессии VirtualBox переопределять клавишу не нужно (для других VM код будет похожим). В результате получился такой скрипт:
SetTitleMatchMode RegEx
#ifWinNotActive, ^.+ - Oracle VM VirtualBox$
SetCapsLockState, AlwaysOff
+CapsLock::CapsLock
CapsLock::Send, {Ctrl down}{Shift down}{Shift up}{Ctrl up}
#ifWinNotActive
return
Сохраняем, запускаем, пользуемся. Если нужно, добавляем в автозагрузку. CapsLock остаётся доступен по сочетанию Shift+CapsLock.
Справочник по регуляркам: https://autohotkey.com/docs/misc/RegEx-QuickRef.htm
Ссылки по теме:
- https://gluek.info/2008/08/27/caps-lock-windows/
- https://habrahabr.ru/post/305658/
- http://flydom.ru/capslang/ (что-то не завелось у меня, может что поменялось)
- http://superuser.com/questions/429930/using-capslock-to-switch-the-keyboard-language-layout (моё решение взято именно отсюда, плюс проверка VBox)
- http://dae.me/blog/1173/pereklyucheniye-yazika-vvoda-po-caps-lock-v-windows/ подборка методов