Хотел бы предложить свой метод переключения раскладок на клавиатуре. Существует множество программ, переключающих раскладки - Punto Switcher, Comfort Keys Pro... И для большинства пользователей эти способы, вполне возможно, будут предпочтительными.

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

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

Я подумал: почему бы вместо переключения раскладок на одной физической клавиатуре не переключаться между двумя физическими клавиатурами. Т.е. русский текст набираем на одной клавиатуре, а английский - на другой клавиатуре.

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

По завершении недели можно сказать, что эксперимент прошел успешно и возвращаться к старому методу нет никакого желания:

Первые 2 дня проходило привыкание к новому способу набора текста, рука так и тянулась к клавишам переключения раскладки. Поэтому совет: отключите сочетание клавиш переключения языка, к которому Вы привыкли. А в следующие дни работа с клавиатурой пошла быстрее, без неверно введенных слов. Больше не приходилось заново набирать текст или менять раскладку, что вселяло некоторую уверенность при наборе текста.

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

Были и некоторые проблемы, в основном связанные с урезанным набором клавиш на моей клавиатуре (мини-раскладка 60% - 63 клавиши) – лучше выбирайте полноценную клавиатуру хотя бы с 75% клавиш (со стрелками, F1-F12, Delete, Home…)

Есть и ограничения с работой сочетаний клавиш – на каждое сочетание с Ctrl, которое Вы хотите использовать на дополнительной клавиатуре, необходимо добавить свой макрос.

Настройка второй клавиатуры для набора английских букв

Первая клавиатура у нас будет основная с русской раскладкой, а вторая клавиатура будет выдавать только английские символы. Можно сделать и наоборот, но я выбрал этот вариант, т.к. потребуется переопределять меньше клавиш.

Далее, нам потребуется клавиатура, поддерживающая интерфейс VIA. В интерфейсе программирования клавиатуры на каждую букву английского алфавита навешиваем сочетание Ctrl+Alt+клавиша, например, буква Q будет выдавать сочетание: Ctrl+Alt+Q

Для сочетаний клавиш Ctrl+C, Ctrl+V, Ctrl+X, Ctrl+Z и других необходимо назначить другое сочетание, иначе горячие клавиши с Ctrl не будут работать. Для них я назначил макросы с клавишей CapsLock, например, на клавишу C назначается следующая последовательность клавиш: {KC_CAPS}c{KC_CAPS}. Обычно программируемые клавиатуры имеют не более 16 макросов, но, если Вам понадобится больше сочетаний быстрых клавиш, всегда можно нажать их на основной клавиатуре.

Переопределение клавиш в интерфейсе VIA
Переопределение клавиш в интерфейсе VIA
Настройка макросов для горячих клавиш с Ctrl
Настройка макросов для горячих клавиш с Ctrl

Теперь потребуется создать новую раскладку с помощью программы Microsoft Keyboard Layout Creator (MSKLC). Скачиваем программу и запускаем.

Загружаем готовую русскую раскладку. При отсутствии клавиш-модификаторов (Ctrl, Alt и др.) нажатие на клавишу выдает русский символ.

Раскладка без модификаторов
Раскладка без модификаторов

На каждую букву английского алфавита необходимо добавить обработку нажатия Ctrl+Alt+клавиша, а также обработку макросов с клавишей CapsLock. Нажимаем галочку “Alt+Сtrl” и видим, какие символы будут получены при нажатии Alt+Сtrl+клавиша (данное сочетание выдает наша программируемая клавиатура).

Раскладка для клавиш с Alt+Сtrl
Раскладка для клавиш с Alt+Сtrl

Для клавиш с макросами (x,c,v,z,a,s,f,h) нажмем галочку “Show the Caps Lock” и задаем параметры с нажатой клавишей CapsLock (последние 2 параметра в окне настроек клавиши). Это позволяет работать горячим клавишам с Ctrl на второй клавиатуре.

Параметры раскладки с нажатой клавишей CapsLock
Параметры раскладки с нажатой клавишей CapsLock

После подготовки раскладки остается нажать «Build Dll and SetupPackage» и запустить получившийся файл.

Файл раскладки для двух клавиатур можно загрузить из файла:

Файл раскладки для интерфейса VIA:

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

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


  1. smrl
    18.11.2023 14:02
    +2

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

    При работе с дальней клавиатурой руки будут постоянно висеть? Даже запястья не опереть?
    Если так уж хочется тактильно контролировать состояние раскладки, разве педаль не удобнее?


    1. mdmitry1 Автор
      18.11.2023 14:02

      Запястье упиралось об стол, не удобств в этом плане почти не было. Мне кажется в этом способе преимущество в том, что не нужно вообще думать о раскладке, руки сами привыкнут, на какой клавиатуре работать.


      1. smrl
        18.11.2023 14:02

        А вы печатаете вслепую, или глядя на клавиатуру?


        1. mdmitry1 Автор
          18.11.2023 14:02

          В основном, вслепую. Но слишком часто приходилось исправлять ошибочную раскладку, раздражает. Хотя и с Break в Punto Switcher тоже довольно удобно, но не пользуюсь, не прижилось.


    1. Vcoderlab
      18.11.2023 14:02
      +3

      Не очень понятна фраза автора "Я расположил вторую клавиатуру под первой". По идее это означает, что одна клавиатура расположена над другой на какой-то полке. Но судя по дальнейшему тексту, основная клавиатура (с русским языком) у него полноразмерная, а дополнительная (с английским языком) - компактная. При этом "английская" клавиатура лежит на краю стола, а "русская" позади "английской". И при работе с основной "русской" клавиатурой руки лежат на столе и расположены как бы "вокруг" маленькой "английской" клавиатуры. А работа с лежащей на краю дополнительной "английской" клавиатурой происходит редко и помалу, и отсутствие упора для запястьев неудобств не доставляет.

      Так себе решение, имхо. Хотя у меня клавиатура лежит как раз на таком расстоянии от края стола, что перед ней можно положить ещё одну, лично мне неудобно, когда на этом месте что-то лежит, и приходится всё время стараться это не задеть.

      А ещё мне интересно, на чём программирует автор, при том, что основная клавиатура у него - "русская". 1С?


      1. mdmitry1 Автор
        18.11.2023 14:02

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


      1. smrl
        18.11.2023 14:02
        +1

        Ух, целое расследование! Спасибо. Хотя по-прежнему не представляю, как это было бы возможно для меня, потому что

        лично мне неудобно, когда на этом месте что-то лежит, и приходится всё время стараться это не задеть

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


    1. ahdenchik
      18.11.2023 14:02

      Пользуюсь педалью. Недостаток нашёл один - ногу тяжелее передвигать когда долго не требовался другой язык и она под столом куда-то "ушла". Стал замечать что в гугловом поиске из-за этого ленюсь переключать раскладку (гугл понимает такой набор)


  1. t38c3j
    18.11.2023 14:02
    +10

    Зачем в уме держать какая раскладка, если достаточно научиться слепому набору и во время набора смотреть в монитор, а не на клавиатуру, первых 2-3 букв хватает понять что не та раскладка, а еще можно разделять раскладки между окнами, как правило, в иде 99% это английский


    1. bolk
      18.11.2023 14:02

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


      1. t38c3j
        18.11.2023 14:02
        +3

        Это дело привычки, как и с опечатками, со временем оттачивается до автоматизма.

        Если вас вышибает именно на переключении раскладки, то попробуйте ее переключение установить на капслок


        1. bolk
          18.11.2023 14:02
          +1

          Я с 89 года за клавиатурой, сколько ещё ждать до формирования привычки? Переключение раскладки у меня на Fn.


  1. Mingun
    18.11.2023 14:02
    +6

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


  1. ri1wing
    18.11.2023 14:02
    +9

    Мне, как программисту, пользоваться Punto Switcher и аналогами, довольно проблематично, постоянно происходит неверное определения языка.

    Автопереключение всегда отключено. Если вижу, что начал печатать не в той раскладке, просто нажимаю кнопку Break.


    1. 1dNDN
      18.11.2023 14:02

      Я так за много лет привык нажимать на Break, а потом купил ноут без этой клавиши


  1. dyadyaSerezha
    18.11.2023 14:02

    А глянуть в правый нижний угол экрана на иконку языка - не судьба? И зачем какие-то программы для переключения? Разве средств ОС не достаточно? В общем, такое ощущение, что, решая маленькую проблемку, автор нагородил кучу других проблемищ, включая будущие мучения при работе на компе где угодно, кроме дома.


    1. vadimr
      18.11.2023 14:02
      +6

      В новой macOS иконка языка прямо посреди текста появляется при наборе.


      1. dyadyaSerezha
        18.11.2023 14:02
        -3

        А вот холивары нам тут не нужны)

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


        1. vadimr
          18.11.2023 14:02
          +4

          На нормальной клавиатуре быстрее просто набрать, чем играть в угадайку с предиктивным вводом.


          1. aamonster
            18.11.2023 14:02

            Но в IDE он есть :-)


          1. dyadyaSerezha
            18.11.2023 14:02
            -1

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


      1. Affdey
        18.11.2023 14:02

        В Винде тоже есть. У меня с 98-й такой драйвер для мышки. Флажок рядом с текстовым курсором. Удобно.


  1. SunSlav
    18.11.2023 14:02
    +4

    Я так понимаю, это для ПК и стола, при чём вместительного, у меня котяра отжал коврик для мышки, место для 2 клавиатуры точно нет, мене сын мышку отдал игровую с кучей кнопок, которыми я не пользуюсь, может есть вариант на кнопку мыши скинуть смену раскладки?


    1. mdmitry1 Автор
      18.11.2023 14:02

      Встроенных способов, насколько я знаю, нет. Но можно запрограммировать нажатия кнопок мышки, если она позволяет это. Или  AutoHotkey, об этом написано тут: https://habr.com/ru/articles/599457/


  1. kpmy
    18.11.2023 14:02
    +1

    У программы Punto Switcher для русскоговорящих программистов есть две удобные фичи -- отключение автоисправления в конкретных программах (IDEA, vscode) и возможность назначить включение конкретных языков на конкретные служебные клавиши справа или слева (RShift = En, LShift = Рус). По сути аналог кнопки Рус/Лат, если кто ещё помнит такую.

    А вот ручное исправление по Break работает не всегда -- не везде сейчас есть эта кнопка.


    1. Lirix_vladimir
      18.11.2023 14:02

      Давно уже не работал с PS, а разве Break там нельзя переназначить?


      1. Mingun
        18.11.2023 14:02
        +1

        Конечно же можно, и не только горячую клавишу смены раскладки.

        Горячие клавиши Punto Switcher
        Горячие клавиши Punto Switcher


    1. bolk
      18.11.2023 14:02
      +2

      Кнопка рус/лат вернулась на Маках — там это кнопка с «глобусом» (совмещённая с Fn).


  1. vesowoma
    18.11.2023 14:02
    +4

     Пишущая машинка с двумя клавиатурами (вторая — для шведских фонетических символов)
    Пишущая машинка с двумя клавиатурами (вторая — для шведских фонетических символов)

    Прототип


  1. DrArgentum
    18.11.2023 14:02
    +1

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


    1. aamonster
      18.11.2023 14:02
      +4

      Прямо-таки старые времена напомнили: DOS, KeyRus или аналоги, на русской раскладке красящие рамку экрана в красный цвет (для тех, кто не застал: на ЭЛТ-мониторах было свободное место за пределами рабочей области экрана, и его цвет можно было поменять).


    1. delvin-fil
      18.11.2023 14:02
      +2

      а зачем?
      "grp_led:scroll" наше все(особенно если светодиоды на клаве разного цвета)

      setxkbmap -layout us,ru -option compose:lwin,terminate:ctrl_alt_bksp,grp:ctrl_shift_toggle,grp_led:scroll -variant ","

      пихаем куда хотим, хоть в стартап, хоть в xorg.conf


  1. IvanPetrof
    18.11.2023 14:02
    +1

    Меня бы вполне устроил индикатор текущей раскладки, расположенный прям на клавиатуре. А ещё лучше прям отдельная кнопка РУС/ЛАТ со светодиодом (раньше были такие). А если совсем шикарно - педаль))


    1. aamonster
      18.11.2023 14:02
      +1

      У вас есть такая кнопка, даже две на выбор – Caps и Scroll Lock. Ну или можно на условной ардуине индикатор сделать и приклеить, где удобно.


      1. Alex_Crack
        18.11.2023 14:02
        +1

        Я как раз уже лет 10 переключаю раскладку с помощью Caps Lock. Очень удобно и быстро одним мизинцем это делать. И индикатор на клавиатуре есть.


      1. IvanPetrof
        18.11.2023 14:02

        Про CapsLock знаю. Но тут два момента.

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

        Со скроллоком та же проблема с полем зрения.


  1. saroff
    18.11.2023 14:02

    Пользуюсь mahou, для всех ide и подобных программ настроено что раскладка всегда остаётся на английском. Это убирает большую часть проблем с переключением. Автопереключение больше бесит, чем помогает.


  1. Aurielic
    18.11.2023 14:02

    У меня как раз есть вопрос по теме этой статьи, по VIA. Кто-нибудь может подсказать как переключать раскладку путем макросов? Пытался использовать макрос на стандартные комбинации переключения раскладки, не работало к сожалению


    1. mdmitry1 Автор
      18.11.2023 14:02

      Тут в комментариях пишут, как настроить переключение. Сам пока не проверял. https://wiki.geekboards.ru/guides/via-russian-guide/#4


    1. mdmitry1 Автор
      18.11.2023 14:02

      Протестировал макрос в VIA: можно написать макрос нажатия клавиш Win+Space, т.е. макрос должен иметь вид: {KC_LGUI,KC_SPC}


  1. astenix
    18.11.2023 14:02
    +1

    Ну вот, а вы говорили, что Кулибиных не стало. А вот же!

    Я пошёл дальше и расположил друг над другом два ноутбука. На одном печатаю только на английском. Над ним второй, там только русские буквы. Редактор открыт по внутренней сети на отдельном nas, все норм.

    А если надо будет ещё и на румынском что-то написать, так я куплю третий ноутбук, мне уже всё равно…

    Четвертый мне понадобится для переписки в Telegram, а пятый ноутбук я возьму для почты. Точнее, пятый и шестой, ведь иногда письма на английском, иногда на русском, а я вам не казённый, чтобы между раскладками переключаться.


  1. Werasik
    18.11.2023 14:02

    Вот поколение пошло. Запомнить какая раскладка уже не могут. В угол глянул en/ru, капец. А книги когда читаешь прочитал - забыл? Там куда больше надо запомнить, чтобы вспомнить о ком идёт речь... У меня вообще смена языка на кнопках alt shift а основная смена языка если надо англ букву в колл-ве одной, двух штук вообще на боковой кнопке мыши....


  1. MiyuHogosha
    18.11.2023 14:02

    На линукс можно поступить проще, если в графике X11 (там и несколько мышыных курсоров можно). Нужно разделить устройства ввода с помощью xinput, для одного поставить ру по умолчанию, оформитт в скрипт для автозапуска.


  1. moonug
    18.11.2023 14:02
    +2

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


    1. rml
      18.11.2023 14:02
      +1

      Аналогично :)

      Только правый shift - кирилица, левый shift - латиница (настройка переключения в Punto switcher, остальные возможности программы отключены)

      Как где-то когда-то писали, punto switcher - единственная программа, которую для нормального использования нужно отключить :)


  1. nev3rfail
    18.11.2023 14:02

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

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

    https://github.com/erryox/Switchy/tree/master/Switchy

    Опенсорс, интерфейс отсутствует, нужно только закинуть в автостарт ярлычок и можно переключаться капслоком как белый человек.


  1. DavisR
    18.11.2023 14:02

    После долгих лет съехал с пунто на SimpleSwitcher(https://github.com/Aegel5/SimpleSwitcher) и очень рад. Автопереключения нет и не надо. Есть LeftShift для основного и RightShift для второго языка и CapLock для ручной конвертации ошибочно введенного текста (как Break в пунто). Это все, конечно, настраивается.
    Маленькая, открытая.


  1. TimSafari
    18.11.2023 14:02

    Геморрой на ровном месте. И в Линуксе, и в винде уже есть переключение по тильде. Хотя я бы предпочёл даже не кнопку, а рычажок на клаве. Положение вверху -- русский, внизу -- английский.

    P.S. ну а уж автопереключение в Пунто не найти... Это постараться надо.