В данной статье я не предлагаю полностью заменить Punto Switcher (Спасибо Сергею Москалёву за данную программу), а только в очень ограниченном функционале. Довольно давно пользуюсь программой Punto Switcher, но не в целях автопереключения, а как переключатель по левому и правому Shift. Ещё со времен Dos мне удобно такое переключение, да и под Windows (особенно это касается 7 версии) мне не надо задумываться, какой там язык окажется в окне, а достаточно нажать левый Shift и мой основной русский уже готов к вводу. Заметьте, что пока правая рука на мышке, то левая уже может или переключать языки или выставить русский всего лишь нажатием на левый Shift, и для этого даже не надо никуда отвлекаться, все делается автоматически. Таким образом, мне всегда было удобно переключать язык на русскую раскладку левым Shift-ом, а английский правым Shift-ом.

Время идёт, и тут понадобилось еще один язык внедрить пользователям, да ещё хотят поддержку раскладки Бирмана, да и других раскладок. Какое это неудобство я смог оценить сам и вот поэтому и пришлось придумывать, на чём это можно сделать. Если взять просто раскладку Бирмана, так по правому Alt если есть горячие клавиши, то они перекрывают эту раскладку и ничего не работает. А таких горячих клавиш полно, так как на каждый ярлык рабочего стола можно быстрый вызов по «Ctrl+Alt+клавиша» навесить. Если же сделать по подобии раскладки Бирмана, но без правого Alt, по клавишам, то проблема переключения кучи этих языков так и так будет стоять.

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

Под катом рисунок «Расширение раскладки клавиатуры в программе «Keybord Assistant 1.0»» и подробное пояснение к этому рисунку.



Идеальных решений не бывает и всегда приходится чем-то жертвовать. В данном случае мне пришлось пожертвовать функционалом правых клавиш RAlt и RWin, благо их редко использую. Так как в других языках RAlt может использоваться, то использую RCtrl для этого. Так как некоторые программы имеют свои хитрые перехватчики клавиатурных состояний, то чтобы полностью «убить» их реакцию на нажатие клавиш RAlt и RWin пришлось с помощью программы «KeyTweak» назначить правому ALt значение «WWW Stop», а правому Win значение «My Computer». Эти клавиши из мультимедиа клавиатур почти не используются людьми, так что идеально подошли для моих целей. И даже если их случайно нажать, то они никак не повлияют на функциональность Windows.

Раскладка Бирмана у меня почти полностью повторяется (добавлен знак гривны), разве, что она на RWin клавише и возможно от этого кому-то будет не так удобно как в оригинале по RAlt. Но это не мой основной инструмент, а основной на RAlt клавише.

Для того чтобы напечатать символ из раскладки Бирмана, вам надо нажать клавишу RWin и какую-то клавишу над которой коричневым цветом нарисован этот символ. Если символ нарисован более светлым цветом, то он будет напечатан, если еще нажимают клавишу Shift. Пример: RWin+Shift+Ф напечатает знак ?.

Клавиша CapsLock используется как левый Ctrl, так как мне при слепом наборе очень-очень неудобно тянуться к LCtrl и полностью невозможно дотянуться до RCtrl. Редко CapsLock бывает необходим, поэтому переключаю его по LAlt+CapsLock.

Переключение раскладок тут несколько (не считая возможных Windows: RWin+Space или RAlt+RShift): LShift — переключение в русскую, RShift — переключение в английскую, RAlt — переключение только между En и Ru раскладками, LAlt+Пробел — переключение между другими раскладками, но не En и не Ru. Переключение CapsLock, что и этих раскладок сделано быстрое, то есть нажали и сразу отжали кнопку. Это сделано для исключения проблем с нажатием сложных комбинаций клавиш. Переключение по Shift языков реагирует быстрее, чем в Punto Switcher, что только меня радует при более быстром наборе. Если вы переключали раскладку по RAlt и потом вам надо набирать какое-то слово в другом языке (не в русском или английском), то переключившись быстро по LAlt+Пробел и набрав нужное слово, можно потом одним нажатием на RAlt снова получить тот язык, что был до этого, так как языки (Ru или En) запоминаются. Пока не запоминаются языки по LAlt+Пробел, но если у вас их очень много и часто нужно еще не только 3 языка, а 4,5 и тд, то может и надо будет изменить скрипт и сделать такую функцию.

С помощью клавиши LAlt можно вводить знаки валют, апостроф украинского языка, знак ударения, длинное тире с неразрывным пробелом. Я понимаю, что LAlt используется в меню и там важно все буквенные клавиши не переназначать, но вот некоторые цифровые я все же использовал у себя в скрипте и не трогал LAlt+1,2,3,4 которые удобно так использовать в стандартном калькуляторе.

Основная рабочая клавиша у меня RAlt. С помощью данного скрипта и этой клавиши я могу спокойно перемещать курсор по тексту, легко удалять или вставлять нужные символы. И всё это без того, чтобы перемещать правую руку, отрываясь от основной позиции слепого набора. Тем, кому приходится программировать давно известна проблема, что русские буквы заменили знаки [] или <>. Если вы пишете статью и надо набрать эти знаки, то без переключения языков не обойтись. В данном скрипте я решил эту проблему использованием клавиши RAlt. Пример: RAlt+Ъ — напечатает знак ]; RAlt+2 — напечатает знак @; RAlt+Ю — напечатает знак >.

Комбинации клавиш RAlt+Tab+Ш, Л и т.п., будут уже не перемещать текстовый курсор, а перемещать курсор мыши. С использованием Tab данный скрипт может в некотором роде заменить мышь, допустим в случае её внезапной поломки. По мне, функционал чуть удобней, чем встроенной в специальные возможности windows.

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

Для того, чтобы использовать скрипт, его предварительно надо скачать:
Скачать архив «Keybord Assistent 1_0.rar»
Проверка архива на вирусы (6 антивирусов не ясных фирм всегда ругаются на любой скрипт Autohotkey)

Для тех, кто использует Autohotkey и так будет понятно, что из данного архива им надо поглядеть файл «Keybord Assistent 1_0.ahk». Для обычных пользователей, что даже не знают, как переназначать клавиши (допустим с помощью программы «KeyTweak»), необходимо запустить c правами администратора и проделать следующее:

  1. Распаковать архив «Keybord Assistent 1_0.rar»
  2. Запустить файл «Переназначить RAlt RWin.reg»
  3. Перегрузить компьютер
  4. Запустить файл «Keybord Assistent 1_0.exe»

Программа будет размещена в трее (около часиков) и по правой клавише доступно меню управления программой, возможность получить справку (рисунок, что показан был выше). В режиме «Стоп» производится возврат функциональности (поведения) всех стандартных клавиш (даже RAlt и RWin, хоть они и переназначены), так как иногда в играх или каких-то программах нужны все клавиши.

Если вам программа не понравилась, то запустить файл «Вернуть как было RAlt RWin.reg» и снова перегрузите компьютер.

Для продвинутых пользователей можно править скрипт «Keybord Assistent 1_0.ahk» и запускать его на исполнение (конечно при условии установленного Autohotkey). Все ваши функциональные изменения можно подправить и в файле «Keybord Assistent 1_0.xlsx», сделать скриншот с него сформировав новый файл «СправкаKeybAs.jpg».

Разрешаются любые изменения кода (ну, кроме замены автора в скрипте на своё имя, а дописывать не запрещается), дополнения кода, использование частей кода в своих скриптах.

Данная статья написана специально для habr.com и до этого нигде не была опубликована, как и сам скрипт в общем (даже на сайте автора скрипт ещё не был опубликован).

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


  1. Retifff
    23.08.2019 17:21

    переключать язык на русскую раскладку левым Shift-ом, а английский правым Shift-ом.
    Клавиша CapsLock используется как левый Ctrl

    А как вы большие буквы вводите? Просто интересно.


    1. kaiu Автор
      23.08.2019 17:33

      Там и ввожу, так как нажатие комбинаций уже не отслеживается скриптом. Если человеку не надо это, то можно самому убрать из кода скрипта и вставить что-то своё. У меня была идея более радикальная, хотя и удобная в чем-то… но даже боюсь тут озвучивать, чтобы не прослыть извращенцем. Поэтому пусть будет так как есть.


  1. IP-human
    23.08.2019 17:33

    Ctrl-Shift в Windows не менее удобен, идет их коробки, клавиши одна над другой, так что можно переключать «одним пальцем».


    1. kaiu Автор
      23.08.2019 17:36

      Alt+Ctrl тоже стоит у меня, так как по входу в систему переключать тоже надо или там Win+Space видно для тех у кого давно привычка к 10 винде.
      Когда набираешь слепым набором выходит долго, если часто надо гонять русский-английский, вот особенно за теми символами отданными русским буквам. Вот в других языках вообще все сложнее, там стоит такой ужас, что им всех клавиш клавиатуры не хватает, так что с русским еще более-менее жить можно.


    1. onground
      23.08.2019 18:45

      К сожалению стандартные Ctrl+Shift и Alt+Shift (а также маковские Cmd-Space и Alt-Space) конфликтуют с адобовскими графическими программами. Не то чтобы совсем жить невозможно, но если пользоваться интенсивно, то выбешивает.

      Я остановился на уже почти стандартном кроссплатформенном варианте переключения по CapsLock. Левым мизинчиком тюк по довольно большой крайней левой клавише в среднем ряду — и переключилось. Вполне удобно, быстро привыкаешь. Ни с чем не конфликтует. На Маках — это работает из коробки. В Win делается легко разными утилитами. Но это хорошо для двух языков. Для трёх и более нужно что-то ещё.


      1. Sabubu
        24.08.2019 02:55

        А в чем конфликт? Назначение Ctrl + Shift для переключения никак не мешает использовать комбинации вроде Ctrl + Shift + A в Windows.


        Исключение — линукс, где спецификация XKeyboard говорит, что если вы переключаете раскладку с помощью Ctrl + Shift то вы не можете использовать горячие клавиши с ними.


        По моему ощущению, самый удобный способ переключения — немодальный, когда у вас одна клавиша для одной раскладки, другая для другой. Так мне не надо думать о текущей раскладке — я нажимаю, например левый Ctrl (англ. раскладка) и начинаю печатать, не глядя на индикатор раскладки.


        В Windows я использую левый/правый Ctrl, в Linux (спасибо спецификации XKeyboard) приходится использовать Caps Lock и Shift + Caps Lock (что менее удобно). А времени починить это у меня пока не было.


        Отдельно удивляет, что на маках такой дурацкий способ переключения, через пробел, да еще и модальный. Видимо, в Эппл нет русских разработчиков, все англоязычные, которым переключать раскладки не требуется. Я конечно думал, что Эппл просто сделает 2 отдельных физических клавиши, они же бесполезный тачбар не поленились сделать.


        1. onground
          24.08.2019 10:59

          Про Cmd/Alt-Пробел на Маках соглашусь — это странно. Особенно, когда по этому же сочетанию Alt/Cmd-Пробел запускается Spotlight Search (что-то вроде Win и Win+R в Windows, но более функционально). И по этому же сочетанию включается лупа в адобовских прогах (Фотошоп, Акробат, Иллюстратор и пр.). Путаница неимоверная. В адобовских если сначала нажмёшь пробел, а потом (удерживая пробел) Alt, то включится лупа. А если сначала нажмёшь Alt, а потом пробел, то включится Spotlight (или русский язык, и в некоторых адобовских приложениях перестают работать шоткаты).

          Но к чести Apple надо сказать, что они догадались добавить альтернативное переключения — по Capslock (циклическое разумеется, не модальное). В отличие от MS, где добавили зачем-то переключение раскладки по Win+пробел (возможно догоняя Apple). Может лет через пять в MS спохватятся добавить переключение по Capslock.

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

          image

          В Windows есть что-то подобное, но менее очевидно. Надо поставить раскладку США (Международная). Тогда, если нужен умляут, то нажимается двойная кавычка, затем жмём гласную и появляется гласная с умляутом. Если нажать одинарную кавычку и C, то получится C. И т.д. Но чтобы набрать просто кавычку, надо нажать эту кавычку два раза. А если у вас продвинутая IDE, которая заботливо ставит вам сразу две кавычки, то там надо отдельно приноравливаться, чтобы не получать по четыре или по три кавычки, особенно если вы пишете то на Маке, то на PC. Не соскучишься.


          1. Sabubu
            25.08.2019 21:42

            Циклическое переключение — это и есть "модальное", то есть вы должны помнить текущую раскладку. А удобнее немодальное — в случае Эппл, они могли бы просто сделать 2 отдельных кнопки "Рус" и "Лат" с подсветкой, но не сделали. То, что вы описали, умляуты — это для европейских языков, да, их поддерживают, а русский язык как язык второго сорта для производителей.


            Те, кто делает переключение раскладок по Win + пробел, явно не пользуюстя активно двумя раскладками и не понимают неудобства. Надо требовать:


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

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


            Удерживать долго клавишу — это тоже неудобно, замедляет набор. Глупое решение. Я видел такое на андроиде, и это неудобно.


    1. littorio
      24.08.2019 00:42

      Он очень неудобен. Невозможно гарантировано сделать одним нажатием "хочу сейчас русский". Потому что надо помнить, что там сейчас, или если случайно двойное нажатие — тоже упс. А тут просто брякнул на всякий случай по нужному шифту и побежал печатать.


      Ну и плюс Ctrl расположен ужасно — не зря именно его так любят на CapsLock переводить. Поставьте указательные пальцы на F и J, как положено, и не снимая нажмите Ctrl, ага.


      1. onground
        24.08.2019 12:11

        Невозможно гарантировано сделать одним нажатием «хочу сейчас русский».

        Это претензия ко всем циклическим переключателям. Разумеется модальные переключатели лучше. Просто я сравнивал два циклических переключателя, и почти уже стандартный кое-где Capslock явно выигрывает у стандартного Ctr/Alt+Shift.

        Поставьте указательные пальцы на F и J, как положено, и не снимая нажмите Ctrl, ага.

        Ага. Поставил. Спокойно нажимаю Ctrl'ы мизинцами, из исходной позиции, не отрывая указательные пальцы, слегка поворачивая кисть. И на плоской мембранке, и на высокой клацающей механической клавиатуре. Никогда с этим проблем не испытывал. Чуть сложнее, чем Capslock, но не принципиально. Такие у меня руки кривые, видимо. )

        Да, рекомендацию перемапить Ctrl на Capsloсk встречаю часто. Но на Маках Ctrl=Cmd, они нажимаются большими пальцами, там уже другие привычки появляются. Если бы постоянно не скакал с PC на Мак и обратно, и если бы Маком не пользовалась супруга, то наверное уговорил бы себя на такое диссидентство. Пока пользуюсь менее радикальным вариантом.

        Кроме того, если на Маке включаешь Терминал или Vim, то он тебе напоминает, что тут вам не тут и Ctrl != Cmd. И если включаешь на маке Windows, то там ждут опять сюрпризы, где-то там Cmd=Ctrl, а где-то нет, это приходится угадывать или настраивать.

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


        1. littorio
          24.08.2019 23:40

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

          Я в основном маздайщик, так что не уверен, но НЯП, не "=". Копирование это именно Cmd+C, и да, они там расположены на порядок удобнее.


          Спокойно нажимаю Ctrl'ы мизинцами, из исходной позиции

          Можно (выворачивая кисть, сгибая мизинец и нажимая перевёрнутым, нажимать ладонью левой руки, и т.п.), особенно если мизинцы длинные, но неудобно. CapsLock гораздо удобнее.


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

          Ну, если часто не за своим компом, то это само приходит. Я пользуюсь своей кастомной раскладкой, стандартной английской и шведской, пишу по русски вслепую на стандарте и на фонетической. Почти без косяков :P.


    1. ClearAirTurbulence
      24.08.2019 05:49

      При частом переключении переключение языков левым и правым шифтами неизмеримо удобнее.


  1. lowtechomega
    23.08.2019 17:33

    Честно скажу, пробовал пунто раз 6 или 7 за последние 10 лет. И всегда он был проблемой, через небольшой промежуток времени переставал что либо переключать и реагировать на обратные замены. Эта программа — пример дичайше низшего качества. (да, у меня всего 3 языка тайский, рус, англ, из которых для автомата только рус/англ)

    Предложенное «решение» вообще не будет работать в моей ситуации. К сожалению нет ни одной программы (искал долго) которая бы элементарно переключала рус/англ — ВСЕ поголовно работают хуже некуда.

    Сергей Москалев, если он разраб пунты (а что разве эта поделка не была куплена Я?) — приложите больше усилий — программа неюзабельна вообще.


    1. kaiu Автор
      23.08.2019 17:46

      Элементарно можно и стандартное решение, назначить комбинации клавишам, допустим Alt+Shift+1 и так далее до 5 у меня стояло как-то, там не только языки, а раскладки разные были и просто можно переключать.
      А вот почему не взять из моего скрипта код и приделать под нужное вам я не понял, это же не сложно, на любую клавишу навести, что он будет переключать русский, а на другую английский и все дела.
      Конечно я был бы только за то, чтобы наконец эти в США подумали про другие страны, а то как делать клавишу Win так сразу, а отдельную клавишу для языков никто не продвинул.


  1. onground
    23.08.2019 18:27

    Нужна ещё педаль. А лучше несколько. Много всего можно было бы повесить на педали. )


    1. kaiu Автор
      23.08.2019 18:37

      Много педалей — это клавиатура для пальцев ног :)
      Но тогда и две головы надо для этого видно.


  1. cheaTTer
    23.08.2019 19:19

    Разработчик PuntoSwitcher сейчас трудится над новым аналогичным продуктом CarambaSwitcher


    1. Retifff
      23.08.2019 19:39

      И он гораздо неудобней, чем Punto Switcher. Настроек, можно сказать, нет совсем.


      1. qyix7z
        24.08.2019 10:52

        Да уж. Если для изменения опций надо переустанавливать программу:

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


  1. ALexhha
    23.08.2019 19:45

    А подскажет кто «нормальные» аналоги punto switcher под линукс? Что-нибудь кроме xneur


    1. bormanman
      23.08.2019 22:11

      А чем не устраивает xneur? Думаю начать им пользоваться, но пока не дошли руки его настроить.


      1. vadbars
        24.08.2019 06:38

        Плюсую вопрос о «линукс пунто свитчере». Увы, ХNeur непредсказуем, а в elementary os, к примеру, и вовсе не запускается штатно. Разработка заброшена.


  1. niccolo2019
    24.08.2019 09:02

    Честно говоря, учитывая то, что разрабам кроме всяких раскоряченных хоткеев почти ничего не остаётся, и то, что нампад в курсорном режиме почти не используется, тупо забиндил на них нужные мне хоткеи для конкретных программ…
    И сразу всё стало гораздо проще. В принципе не особо понятно, почему ни майки, ни яблочники, ни китайцы, наконец, до сих пор не добавили в средний блок 5 как-бы отсутствующих клавиш для переключения раскладки и нескольких и самых распространённых действий типа копи-паста… Также непонятно — почему бы стандартно не делать клавы с памятью для профилей а в ОСЬ добавить драйвер, который бы переключал профили в зависимости от активного окна.


  1. Ramzzza
    24.08.2019 09:54

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


    1. OnYourLips
      24.08.2019 20:54

      а почему никто не модернизирует xneur для линукса?

      А почему вы его не модернизируете, если заинтересованы в нем?


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


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


  1. spesso
    24.08.2019 10:31

    Несколько лет назад усиленно изучал лицензию на PuntoSwitcher в плане использования его в офисе и что то там юристов не устроило, а как у него сейчас с этим?


    1. kaiu Автор
      24.08.2019 10:53

      Прочти тут https://yandex.ru/legal/desktop_software_agreement/
      Они пихнули одну лицензию на всё, просто не заморачиваются на каждый продукт.
      А юристов возможно не устроило это:
      1.4. Использование Программ на условиях настоящей Лицензии в личных некоммерческих целях осуществляется безвозмездно. Использование Программ на условиях и способами, не предусмотренными настоящей Лицензией, возможно только на основании отдельного соглашения с Правообладателем.

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

      Я у себя в лицензии на free версии конкретно пишу так:
      1.3. Использование Программы на условиях настоящей Лицензии осуществляется безвозмездно (free version). Использование Программы на условиях и способами, не предусмотренными настоящей Лицензией, возможно только на основании отдельного соглашения с Правообладателем по цене, устанавливаемой Правообладателем.

      Пользователь имеет право: 3.1.2. Воспроизводить и распространять Программу в некоммерческих целях (безвозмездно).

      4.2. Пользователь не имеет права воспроизводить и распространять Программу в коммерческих целях (за плату), в том числе в составе сборников программных продуктов, без письменного согласия Правообладателя.

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


  1. idart
    24.08.2019 12:38

    Пользуюсь со времен windows xp, хорошая штука Punto Ыцшесрук


  1. Ryav
    24.08.2019 12:53

    Изначально был фанатом Punto Switcher, хотя особой необходимости в нём не испытывал (слепой ввод освоил ещё ранее), после него также попользовался Caramba на Win, а на Linux страдал от отсутствия альтернативы (Xneur не устраивал своей непредсказуемостью). По итогу включил параноика и отказался от данного инструмента вовсе, жизнь моя ничуть не ухудшилась.
    Что касается раскладки Бирмана — обычно я заменял стандартные .dll на бирмановские, но Win10 не позволила это сделать, по итогу я отказался и от раскладки, а все необходимые мне символы прописал также через AHK. В Linux с этим проблем нет, раскладка доступна из коробки.
    А переключение локали предпочитаю через CapsLock.


  1. netch80
    25.08.2019 09:21

    Если вы забрали Caps под роль LCtrl, то LCtrl освободился? Тогда почему бы не применить его под переключение? RWin очень часто отсутствует на лаптопах, так что ваш метод туда не перенесётся.


    1. kaiu Автор
      25.08.2019 10:10

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