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

Гораздо удобнее, когда есть разные клавиши «Переключить на язык такой‑то». Если этот язык уже выбран — то просто ничего не происходит. Весь смысл в том, что не нужно думать: собираешься писать на языке — нажал его кнопку. Перешёл в другое окно — автоматом нажал кнопку для желаемого языка. Отвлёкся — снова нажал. Для мозга нажать на автомате лишнюю кнопку в сто раз проще, чем вспоминать, какая там раскладка стоит сейчас.

Как только пальцы привыкнут, то явление «начал писать не на том языке» уйдёт из вашей жизни на уровне концепции. Особенно рекомендую тем, кто смотрит на клавиатуру при печати.

В Linux эти настройки доступны «из коробки», по крайней мере там, где не уничтожили окно настройки клавиш иксов. В Винтусе же «из коробки» тоже можно это наладить, но только на комбинацию Ctrl + Alt + цифра. Которая, кстати, самая удобная, когда у вас в ходу 5–6 равно используемых раскладок. Но не две.

Поэтому предлагаю создать хоткеи вручную, воспользовавшись бесплатной программой AutoHotKey. Ещё бывает, делают те же вещи через PowerToys и PuntoSwitcher, но это всё большие комплексы с кучей всего, а я предлагаю компактное решение. После установки AutoHotKey (версии 2) не надо его запускать, а нужно создать текстовый файл с инструкциями и расширением .ahk

#Requires AutoHotkey v2.0 64-bit
#Warn  ; Enable warnings to assist with detecting common errors.

CapsLock::SetInputLang(0x0409) ; English (USA)

+CapsLock::SetInputLang(0x0419) ; Russian

SetInputLang(TargetLang)
{   
    PostMessage 0x50, 0, TargetLang, , "A"
}

Эти инструкции означают: Capslock переключает всегда на английский, Shift+Capslock на русский. Если хотите другие комбинации, смотрите здесь. Когда сохраните файл, его должно быть возможно запустить правой кнопкой → Run Script. Он будет сидеть в трее, перехватывать нажатия капслока и менять язык.

Проверяйте. Если всё работает и всё понравилось, скрипт можно добавить в автозагрузку. Для этого открывайте или проводник, или Win+R, в строке адреса набирайте shell:startup. Откроется папка. Туда нужно поместить ярлык на скрипт.

Одна проблема — скрипт не может перехватывать кнопки в особых окнах, таких как окно UAC или то, что вылезает по нажатию Win+R. Там, если нужно, язык придётся переключать старым добрым Win+Пробел, который работает везде и всегда. Это, кстати, на заметку тем, кто часто ходит по чужим компьютерам: Alt+Shift и Ctrl+Shift опциональны, а вот Win+Пробел без бубна не отключишь.

P. S. Ещё один хороший скриптик всем любителям понагибать: когда на экране полноэкранное приложение, кнопка Win заменяется на Enter.

#Requires AutoHotkey v2.0 64-bit

isFullScreen()
{
    WinGetPos , , &W, &H, "A" ; "A" is a codename for current window
    return (W H = A_ScreenWidth A_ScreenHeight)
}

#HotIf isFullScreen()
LWin::Return
#HotIf

Комментарии (36)


  1. LeshaRB
    27.12.2023 17:36
    +3

    На Маке у меня Capslock отвечает за раскладку (короткое нажатие), длинное включает верхний регистр

    А как в случае
    "Эти инструкции означают: Capslock переключает всегда на английский"
    Включить верхний регистр?


    1. MountainGoat Автор
      27.12.2023 17:36
      +2

      Нажать Shift.


    1. den_rad
      27.12.2023 17:36
      +1

      На маке еще можно переключать регистр с помощью Shift + CapsLock, мне кажется это удобнее, чем долго нажимать CapsLock


  1. RealBeria
    27.12.2023 17:36
    +1

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


    1. ganzmavag
      27.12.2023 17:36
      +2

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


    1. ppnn
      27.12.2023 17:36
      +1

      Logitech сейчас делает SIGNATURE K650 - с глобусом на одной клавише, но прикол в том, что это клавиша insert. Чтобы ввести insert, надо нажать Fn+insert, чтобы Shift+Insert, схема понятна. Вкупе с дефолтным действием F1-F12 как медиа-клавиши, привыкший к Far Manager человек неизменно фраппируется. Чтобы переназначить всякие медиа-ф-клавиши, ставится блоб на 500 мегабайт(!?) и пара лишних иконок в трее, но вот этот покалеченный Ins - это единственная кнопа, которая фирменным софтом не переназначается. Очень странные люди.


      1. eugrus
        27.12.2023 17:36

        Fn+Esc это не отключает?


        1. ppnn
          27.12.2023 17:36

          Увы, нет. F1-F12 таким образом меняются, даже без дополнительного софта, а эта кнопка с глобусом так и остаётся переключением языков. Доп.софт добавляет к этому on-screen-display "Fn-Lock вкл/выкл".
          Нам на работе закупили пачку таких клавиатур, многие коллеги как-то привыкли и пользуются, кто-то находит этот дизайн странным. В целом не худший вариант.


  1. diakin
    27.12.2023 17:36

    Удобно было, когда работала Punto switcher и раскладка переключалась автоматически. Но Яндекс на нее забил. Хорошо, хоть можно перевести в другую раскладку неправильно напечатанное по Shift-Pause.


    1. format1981
      27.12.2023 17:36
      +1

      Вот уже много лет использую Punto Switcher.
      Правый shift - переключает на английский, правый ctrl - на русский.


    1. LeshaRB
      27.12.2023 17:36

      Почему забил? В этом году было одно или два обновления


      1. diakin
        27.12.2023 17:36

        Ну вроде получше стало.


    1. Sabirman
      27.12.2023 17:36

      Я настроил Punto switcher на левый ctrl. Это самый удобный вариант - переключать язык можно не двигая рукой - просто ладошкой надавливая.


  1. drinkmaker
    27.12.2023 17:36
    +1

    Где-то встречал исследование, что с точки зрения эргономики, оптимальным является правый альт. Просто одна кнопка, без всяких сочетаний.

    Настроил себе, после нескольких дней привыкания, по другому уже не смогу, будет не удобно. Рекомендую.


    1. voidMan
      27.12.2023 17:36
      +2

      Исследование....Это всё вкусовщина.


  1. eugrus
    27.12.2023 17:36
    +3

    Ctrl+Alt+цифра был в Windows где-то до Висты. С тех пор Ctrl+цифра, чем и пользуюсь повсеместно.

    Правда, в Windows уже десятилетиями есть следующий баг: при Win+L кастомные настройки переключения раскладки для пользователя ([HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys]) переписываются дефолтными. Для обхода проблемы, если есть административный доступ, переписываю дефолтные ([HKEY_USERS.DEFAULT\Control Panel\Input Method\Hot Keys]) своими кастомными: https://gist.github.com/eugrus/52dc90e6cb5da8de278f1afbc93969fa
    К счастью, проблема не проявляется для сессий, доступ к которым производится только по RDP.

    Из DE под X11 и Wayland привязка комбинаций для конкретных раскладок через родной GUI мне известна только в KDE.

    В Gnome (в том числе под Wayland) для реализации этого функционала привязываю комбинацию клавиш к команде gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]"

    В объектную модель Cinnamon аналога ещё не затащили: https://github.com/linuxmint/Cinnamon/issues/7884

    В иксовых DE/WM привязываю к сочетаниям клавиш setxkbmap us и т.д.


    1. Longaru
      27.12.2023 17:36
      +1

      +1 , самый полезный коммент .. Раньше было Ctrl + от 1 до 0 но потом пришлось сократить до 3-4 хехе .. Но проблема в том что оно слетало в 10-ке , мол по дефолту это еще использовалось в браузере .. Вкладки менять ( Зачем это ваще надо если 250 вкладок обычно со скроллом вниз .. Лол )

      Крч нужно было заходить в Панель Управления , Язык и снимать / ставить любую галочку вконце настроек и нажимать Сохранить .. Бинды перезаписывались .

      Ваще еще советую ставить галку что бы он для каждого окна сам ставил язык и запоминал какой был , тоже очень интуитивно .

      В общем бинды на Вин 11 Канари починили и они не слетают как в 10 , их еще и перенесли в новую Панель Управлений .


  1. shiru8bit
    27.12.2023 17:36
    +1

    На советских ПК для переключения раскладки была или одна клавиша РУС/ЛАТ со светодиодом состояния, или две отдельные клавиши РУС и ЛАТ. Когда я начал пользоваться PC, долго удивлялся отсутствию таковой.


    1. klvov
      27.12.2023 17:36

      Для меня конец мучений наступил тогда, когда я везде внедрил решение из статьи:

      https://habr.com/ru/articles/301882/

      Там как раз клавиша CapsLock превращается в клавишу РУС/ЛАТ, а светодиодная индикация к ней предусмотрена штатно. Ну и можно программу-индикатор состояния CapsLock добавить, которая будет в трее ее состояние показывать, чтоб каждый раз взгляд на клавиатурный светодиод не переводить.


      1. mltk
        27.12.2023 17:36

        На клавиатуре есть ещё одна кнопка с лампочкой - совершенно не нужная Scroll Lock - с досовских времён были фанаты использовать её для переключения языка.


    1. PbIXTOP
      27.12.2023 17:36

      Так и сейчас можно приобрести такую клавиатуру от Бештау https://gkbeshtau.ru/products/keyboard/


  1. petro_64
    27.12.2023 17:36
    +1

    Ещё вариант: настроить циклическое переключение раскладок на одну клавишу (CapsLock например), но индикацию сделать аппаратную, например светофорами на модели железной дороги, как я недавно сделал :-)


  1. feelamee
    27.12.2023 17:36

    а я пожертвовал сразу оба альта на переключение(

    левый - русский, правый - английский


    1. MountainGoat Автор
      27.12.2023 17:36

      А настраивали чем?


      1. feelamee
        27.12.2023 17:36

        Я на арче с иксами, поэтому что-то вроде setxkbmap(может ошибаюсь)

        Костыль использую, из-за этого не получится продолжить их использовать как модификаторы.

        Если захотите, завтра скину конфиг


        1. MountainGoat Автор
          27.12.2023 17:36
          +1

          Ну на иксах можно и козу настроить, чтобы норы рыла. Я вот тоже на Арче, только не с иксами, а в WSL. Гораздо интереснее, как в Выньтузе народ кастомизируется.


          1. feelamee
            27.12.2023 17:36
            +1

            Ну, я с виндой попрощался (чего и вам советую).

            Но на вкус и цвет...


  1. kovserg
    27.12.2023 17:36
    +1

    Еще вариант использовать внешний переключатель

    https://aliexpress.ru/item/32972011831.html
    https://aliexpress.ru/item/1005006235890304.html


    1. Sabirman
      27.12.2023 17:36
      +2

      Ха, в школе я делал педальку переключения языка из степлера, замыкая контакты lpt-порта.


  1. olegshutov
    27.12.2023 17:36

    Сначало было два шифта (rk2 под дос), потом все привыкали к ctrl+shift, потом вдруг Windows поменяло на alt-shift, который неудобен, так как мимо альта часто промахиваешься. Недавно вроде там опять начали менять на win + shift (руки бы оторвал, если честно), на маке это клавиша отдельная. Да, вроде удобно, только вот она не работает как надо - она часто перескакивает с языка обратно. Теперь еще какое-то суперприложение появилось, которое рекомендуется для удобства ставить на все используемые компы. Интересно, что в итоге у меня переключения раскладок на всех трех частоиспользуемых компах разное в итоге. Битва стандартов. Не понимаю в чем была проблема оставить два шифта.


  1. sbw
    27.12.2023 17:36

    На рабочем компе не могу устанавливать никакие левые программы. Интересно, можно ли сделать скриптом - хотя бы подмену одних нажатий другими? Например, нажимаю Caps lock , а скрипт, крутящийся в отдельном бесконечном задании, определяет это и выводит в клавиатурный буфер что-нибудь другое. В наличии есть PowerShell, VB, Python


    1. CaptainFlint
      27.12.2023 17:36
      +1

      AutoHotkey не использует какой-то эзотерической магии, это всё стандартные хуки из WinAPI, как я понимаю. На PowerShell можно писать программы с полным набором WinAPI, так что то же самое можно сделать и на нём. Но придётся детально разбираться в этой подсистеме и реализовывать перехват и обработку.


  1. RR_Zz
    27.12.2023 17:36
    +1

    Предложу ещё один вариант, который ещё нигде не встречал в предложениях, но достаточно удобен для меня.

    CapsLock это Shift + Caps

    CapsLock + R - русская

    CapsLock + Е - английская

    И ещё у меня доп:

    CapsLock + S - слой математических символов

    CapsLock + G - греческий

    А при нажатии на CapsLock ничего не происходит.


    1. xaosxaos2
      27.12.2023 17:36

      Не понятно, что значит "CapsLock это Shift + Caps", а ниже "А при нажатии на CapsLock ничего не происходит".


      1. RR_Zz
        27.12.2023 17:36

        Тут я имел в виду два определения.

        CapsLock как клавиша на клавиатуре, и CapsLock как модификатор поведения ввода.

        Активация CapsLock (как модификатора ввода) происходит через комбинацию Shift + CapsLock (клавиша). А при нажатии просто на клавишу CapsLock (одинарным, двойным или с задержкой) - никаких действий.

        Раньше при двойном нажатии происходила активация домашнего слоя, которым у меня был английский, но это немного портило ощущение от этой клавиши как от "модификатора", через который происходит выбор раскладки. Поэтому я и уточнил это поведение.


  1. nin-jin
    27.12.2023 17:36
    +1

    Поэтому предлагаю создать хоткеи вручную, воспользовавшись бесплатной программой

    https://learn.microsoft.com/en-us/windows/powertoys/keyboard-manager

    старым добрым Win+Пробел, который работает везде и всегда

    Если убить проводник, то (как минимум в 10) перестаёт работать. И попробуй его запусти после этого, если застрял в не английской раскладке. Лайфхак:

    • Лочим через Win+L

    • Там переключаем раскладку через Win+Space

    • Входим обратно

    • Запускаем диспетчер задач через Ctrl+Shift+Esc

    • Файл -> Запустить задачу -> explorer.exe