Что-то меня пробило обо… эээ… обозреть существующие переключатели клавиатуры под Windows. Проблема, собственно, в том, что они все «не блестят». Итак, начнём.
Стандартный переключатель
Клавиши переключения: LShift+Ctrl и Ctrl+LShift — по списку, RShift+Ctrl и Ctrl+RShift — в обратном порядке. Или, по усмотрению пользователя, Ctrl можно заменить на Alt. Также можно настроить переключение на каждую конкретную раскладку по Alt+Shift+{`, 1, …, 9, 0}.
Звуковая индикация: отсутствует как класс.
Визуальная индикация: одноцветный значок в области оповещений или на отдельной панели инструментов (Language Bar).
Собственно, единственным достоинством данного переключателя является то, что он есть. Сразу, из коробки. Всё. Пользоваться им сколько-нибудь долго невозможно. Переключение по двум клавишам лично меня не устраивает ещё со времён DOS, с тех пор, как появились переключатели по правому Ctrl’у, и я хочу так же переключаться в Windows.
Идея отдельных клавиш под каждую раскладку имела бы право на существование, опять-таки, если бы все клавиши переключения были аппаратные, удобно располагались и нажимались одним пальцем. Жать по три клавиши вместе — нет уж, увольте.
Принцип переключения раскладок по циклу при каждом нажатии предполагает, что они все используются одинаково часто. Если их стоит две — это работает. Русская, латинская, русская, латинская. Каждое переключение меняет на противоположную. Не нужно думать, хотим ли мы сейчас вперёд по списку или назад — это всё равно.
Усложним задачу и поставим третью раскладку, например, японскую. (Опустим пока тот факт, что у неё ещё есть подраскладки, которые переключаются отдельно.) Всё испортилось. Раньше русская и латинская переключались обеими комбинациями, левой и правой. Теперь с латинской на русскую надо переключаться по Ctrl+LShift, а обратно — по Ctrl+RShift. Иначе включается японская. Которая стоит только для того, чтобы изредка что-нибудь набрать. Вы хотите всё время помнить, в какую сторону надо переключаться? Я — нет.
Ситуация усугубляется отсутствием звуковой индикации. Если бы она была, я бы услышал, куда переключился, и нажал педаль ещё раз. Хоть и неудобно. Но её нет. Визуальная индикация тоже не особо помогает.
Резюме: троечка.
RusLat95
Клавиши переключения: LShift+RShift, LCtrl/RCtrl — циклическое переключение по подмножеству раскладок.
Звуковая индикация: для каждой раскладки настраиваемый звук её включения, плюс возможность включить или выключить треск клавиш в этой раскладке.
Визуальная индикация: разноцветный значок в области оповещений, индикатор в заголовке текущего окна.
Дополнительно: конвертация выделенного текста в противоположную раскладку. Иногда не работает.
Почти идеал. Например, настраиваем RCtrl переключать латинскую и русскую раскладки, левый — не переключать вообще ничего, а остальные раскладки зовём стандартным переключателем по трём клавишам. Включаем всем звук.
И тащимся.
Пока не поставим одновременно Mirand’у и поддержку восточных языков (того же японского). Потому что без него всё работает, с ним всё работает везде, кроме Mirand’ы. Удивительно, но факт. Поэтому для Mirand’ы приходится иметь ещё один переключатель, например, стандартный, и всё время помнить, можем мы здесь переключаться по Ctrl или нет.
Резюме: пять с маленьким минусом.
SwitchIt!
Клавиши переключения: LShift+RShift, LCtrl/RCtrl — циклическое переключение по всему списку раскладок.
Звуковая индикация: для каждой раскладки настраиваемый звук её включения, плюс возможность включить или выключить треск клавиш в этой раскладке.
Визуальная индикация: разноцветный значок в области оповещений, индикатор в заголовке окна.
Дополнительно: заявлена конвертация выделенного текста в противоположную раскладку. Заставить нормально работать не удалось.
Работает, и неплохо. В том числе в Mirand’е. Но — та же проблема, что и в случае стандартного переключателя: приходится помнить, где мы сейчас, и в какую сторону переключаться.
Резюме: 4.
Punto Switcher
Клавиши переключения: LShift+RShift, RCtrl и какие-то ещё — на выбор: по всему списку или только En/Ru.
Звуковая индикация: для каждой раскладки настраиваемый звук её включения, плюс возможность включить или выключить треск клавиш в этой раскладке.
Визуальная индикация: разноцветный значок в области оповещений.
Дополнительно: конвертация выделенного текста в противоположную раскладку, автоматическое переключение раскладки при маловероятных сочетаниях букв, разворачиваемые макросы.
Весьма интересная идея, использовать статтистические методы для определения, что слово набрано не в той раскладке, и автоматически его исправлять. Однако практически малоприменима. Командные строки, пароли, программный код — яркий пример, где «исправлять» ничего нельзя принципиально. К счастью, фича отключаемая.
Удобно, что можно задать клавише переключение только раскладок En/Ru. Хотя можно было бы и гибче быть.
Автозамена макросов. Исходно предназначалась для того, чтобы обозначить чем-нибудь коротким что-нибудь длинное, и экономить время. Не знаю, не пользовался. Попробовал назначить на два минуса (--) тире (—). Не заменяет. Видать, минус не входит в число символов, которые можно использовать в именах макросов.
Переключатель страдает той же болезнью, что и RusLat95 — непереносимость Mirand’ы при стоящей поддержке восточных языков.
Резюме: 5-.
Keyboard Ninja
Клавиши переключения: все мыслимые комбинации Ctrl, Alt и Shift, плюс ещё Caps Lock — для конкретных раскладок, списка основных раскладок и списка дополнительных раскладок.
Звуковая индикация: для каждой раскладки настраиваемый звук её включения, плюс возможность включить или выключить треск клавиш в этой раскладке.
Визуальная индикация: разноцветный значок в области оповещений, кратковременно появляющийся в центре текущего окна флаг.
Дополнительно: конвертация выделенного текста в противоположную раскладку, автоматическое переключение раскладки при маловероятных сочетаниях букв, автокоррекция,
автодополнение, и чего ещё только нет.
Очень заманчиво выглядит. Куча полезнейших фич, отключаемая автоматика, настройка дополнительных символов на RAlt+клавиши.
Вот только написана как попало, и поэтому часто вылетает по runtime error 203 (Heap overflow) или 204 (invalid pointer operation). Немного страшно жить с таким переключателем — а вдруг в следующий раз он утянет за собой текущее приложение?
Да, и в Mirand’е всё так же не работает. По-видимому, алгоритмы как в Punto Switcher’е, так и в Keyboard Ninja пришли из RusLat95.
Резюме: набор фич на 5-, реализация ещё сырая (3). В среднем пока 4+, дальше будем посмотреть.