2008-07-23

Переключение раскладки в Windows с помощью Caps Lock.

Мне всегда казался странным способ переключения раскладки в Windows. Alt+Shift или Ctrl+Shift, или обратная кавычка в Висте. Постоянные проблемы с разными программами. И не всегда срабатывает с первого раза, и конфликтует со всякими Ctrl+Shift+F1. В Линуксе обычно используют Caps Lock, что очень удобно. Идеальное, IMHO, решение. И кнопка одна, и под рукой, и пользы никакой другой от неё нет (даже есть какие-то Anti-Caps-Lock сайты с требованиями кнопку выкинуть, или заменить на backspace), и лампочка есть, показывающая состояние, которое удобно видеть краем глаза.

В Windows поменять кнопку, конечно же, нельзя. А написать свою программу можно, но лень. Кроме того, API для этого довольно странный. Например, раскладка в Windows есть не свойство Desktop, как бы логично было предположить, а персонально свойство каждого thread в системе. Потому переключатель должен внедрить DLL в каждый поток каждого процесса, имеющего окна.

Оказалось, однако, что всё уже, в принципе, сделано, и можно найти, если поискать. Есть такая программа "The Microsoft Keyboard Layout Creator". В ней можно создать свою раскладку клавиатуры и Caps Lock в ней - одна из клавиш состояния, наряду с Shift и Alt-Gr. Вот эта раскладка!

Инструкция по установке такая:
1. Поставить creator и скачать раскладку (может потребоваться проверка подлинности Windows, как обычно для сайта MS).
2. Загрузить второе в первое.
3. Пойти в меню Project и выполнить "Create DLL and setup package."
4. Проигнорировать предупреждения.
5. Когда откроется каталог со сгенерированными файлами, запустить из него setup.
6. Пойти в Control Panel туда, где ставятся кнопки переключения раскладок, и выбрать новую раскладку раскладкой по умолчанию для английского языка (!!!). Новая раскладка универсальна, и содержит и кириллицу и латынь.
7. Можно выключить старые кнопки переключения на русский, во избежании путаницы.
8. Всё, можно наслаждаться.

Утверждается, что некоторые старые программы могут не понимать русские символы, введённые таким образом. Я пока такого не встречал.

Update: Сгенерированные драйверы можно загрузить здесь. Это zip-архив с инсталлятором. Его надо распаковать во временный каталог и перейти сразу к пункту 5.

N.B.: Переключение раскладки глобально в системе и не запоминается для каждого окна. Это свойство данного метода и мне лично оно очень нравится.

N.B.: Caps Lock не переключает ни раскладку, ни текущий язык. Он лишь является модификатором внутри раскладки, так же, как, например, и Shift, и заставляет клавиатуру генерировать другие коды. Оказалось, что Microsoft Word использует информацию о текущем языке, чтобы установить правильную проверку правописания. Так что с приложениями Офиса возможны некоторые проблемы.

Update: Я сделал аналогичную раскладку для OSX.

9 comments:

SKuznetsov said...

Спасибо, я себе поставил. Правда, пока не привык - руки сами CtrlShift жмут.

voidbent said...

А есть ещё такая программа Autohotkey, в ней горячие клавиши можно задавать при помощи скриптового языка.

Я, кстати, тоже поставил себе переключение раскладки на Caps Lock.

Valery Tolkov said...

Говорят, что в Ворде могут быть некоторые проблемы.

bolk said...

Не вижу тут ничего странного. Переключатель раскладки должен переключать её в текущем приложении (как и делает винда), а не на всём экране.

Я не хочу постоянно тыркать раскладку, при переходе из Zend Studio в Jabber и обратно.

Valery Tolkov said...

bolk> ну чтож, очередное персональное предпочтение. Я предпочитаю установку на десктоп, что приведённая раскладка и делает.

Азат Разетдинов said...

http://razetdinov.ya.ru/replies.xml?item_no=561

Valery Tolkov said...

Да, занятно, lswitch действительно простая штука и более совместима с Офисом. Мне, правда, способ с раскладкой нравится ещё и тем, что делает установку глобальной, а не свойством потока-процесса.

Anonymous said...

Есть замечательная прога Punto Switcher. Первоначальное назначение (автоматическое переключение раскладки) её мне не нравится, за то прекрасно справляется с задачей переключения раскладки на Капс.

Rinat said...

А ещё есть CapSwitch:
http://code.google.com/p/capswitch
простенькая программка по лицензии LGPL, правда, действует для каждого окна по-отдельности.