Как стать автором
Обновить

Комментарии 79

Способ для ламеров — усановить PuntoSwitcher. А вдруг кому-то понадобится за вашим ПК поработать? В PS хоть быстро вернуть можно, а в Вашм варианте — кроме Вас никто знать не будет как обратно вернуться.
да, пунто срабатывает. именно поэтому раньше у меня не возникало такой проблемы. Но на новом месте работы пунто под запретом, увы.
По-поводу изменений в реестр — да, увы, это затрагивает всех пользователей (хотя я не проверял). Но я и не претендую на универсальность — просто ещё один способ решения проблемы плюс собрал вместе полезную информацию.
А что за место? (ненароком бы не вляпаться)
Присоединяюсь к вопросу
Попробуйте everylang, программа имеет подобный функционал что и в Punto Switcher, плюс дополнительные плюшки.
А вдруг кому-то понадобится за вашим ПК поработать? В PS хоть быстро вернуть можно, а в Вашм варианте — кроме Вас никто знать не будет как обратно вернуться.

Ну, для тех, кто считает, что единственно правильный способ переключения раскладок существует и способ этот — CapsLock, это даже плюс. А вообще в новых виндах есть способ универсальный и работающий на всех чужих компах — Win+Space.


P. S. Единственным более (или хотя бы не менее) правильным способом, чем CapsLock, я готов признать использование немодальных переключателей. К сожалению, других (кроме CapsLock) бесполезных клавиш на клавиатуре нет.

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

Кроме того есть совет актуальный для владельцев MS Nature 4k. В комплекте с клавиатурой шла утилитка, которая позволяла переопределять клавиши. Правда это было 9 лет назад, как сейчас дела я не знаю.
Если система настолько загружена, что курсор мыши еле ползёт с интервалом в полминуты, или рабочего указательного устройства вообще нету — Menu весьма и весьма полезен.
Эта кнопка почти всегда доступна по Shift+F10
Тоже пользуюсь Punto (для переключения по CapsLock и быстрого исправления неправильно набранного текста), но достаёт, что он иногда переходит в режим CapsLock, а как его вернуть назад, я так и не нашёл. Пробовал включать настройку «Использовать ScrollLock вместо CapsLock», но в результате ScrollLock тоже переключает раскладку. Может, подскажет кто, как в этом случае переключить CapsLock?
Возможно Shift+CapsLock?
Если бы. Просто переключает язык. Я уже всё перепробовал. Спасает только закрытие ПС, переключение по-старому и снова запуск.

Я написал простейшую программку на C# :) (ну т. е. что было под рукой — на том и написал). (Хотя я пользовался способом, описанным в статье, а не пунто, но при работе с виртуалками иногда неожиданно оказывается включён капс, а замапить скроллок, как сделал автор, я не догадался.)

Capslang миниатюрная тулза решающая задачу из статьи. Юзать пунто и аналоги только для переключения раскладки по капсу это оверкилл.

Что интересно у меня версия Capslang от 2011 года прекрасно работает в вин10, хоть на сайте автор пишет что работать не должна.
«А вдруг кому-то понадобится за вашим ПК поработать?»
Зачем это?
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelHookProc, GetModuleHandle(NULL), 0);

ну то есть совсем другой подход, чем я предлагаю. Через хуки-то любой сможет ;)
Увы, Recaps не работает на Win10 (возможно и 8 — не проверял) в Modern приложениях.
В win10 работает Win+Space
да, увы. возможно необходимо использовать какое-то другое апи для перехвата нажатий в метро-приложениях? в 8ке и 8.1 тоже не работал, да

Большое спасибо за статью! (Сам хотел такую написать. Не успел.)

сам удивлён, что нашёл время :)
Попробуйте посмотреть в сторону Capslang (http://flydom.ru/capslang/). Сам пользуюсь версией caps-min.exe на Win 7 больше полугода. Пока недочетов не выявил
Недостатки:

Не переключает раскладку в некоторых программах


собственна вот…
Я потому и написал, что «недочетов не выявил». За полгода не встретился с таким приложением, в котором были бы проблемы с переключением раскладки. Пользуюсь офисным пакетом от Microsoft, Visual Studio 2013 + дополнительные инструменты для C#/JavaScript/SQL, различные мессенджеры и тулы для конференц связи и т.п. Но всё зависит от используемых приложений.

Самого же в первую очередь привлёк очень маленький размер (5 КБ)
ок. постараюсь опробовать. спасибо за рекомендацию!
Например, в Excel (офис 2010), при нажатии на стрелки, происходило перемещение области видимости, вместо перемещения курсора (при включенной кириллице). Невозможно переключить раскладку через CapsLock в системных диалоговых окнах (сохранение файла, например) — приходилось переключать мышкой в панели. Были и ещё какие-то проблемы, сейчас уже и не помню всё. Ну и хотелось одной глобальной раскладки на все приложения, а так получалось много «весёлостей», вплоть до изменения языка в скайпе при удалении символа, либо при перемещении курсора (и это не разовые проблемы, оно могло происходить десятки раз за очень короткое время). И про все эти проблемы забыл после того, как перешёл на раскладку из поста, упомянутого ниже.
Тут скорее недостаток другой: если зайти пор RDP на компьютер, где тоже запущен caps-min.exe, и в начальный момент времени включены разные раскладки, то реакция на Caps Lock будет неоднозначна: иногда переключается раскладка на локальном компе, но не удалённом; иногда — наоборот, а иногда вообще ничего не происходит.
Рецепт — мышкой выбрать на обоих хостах одну и туже раскладку.
Для тех, у кого стоит Punto Switcher — там эта функция есть в настройках переключения. Работает вроде корректно…

Блин! Даже прочитав комментарии, не успеешь не написать одинаковый…
я в курсе. пользовался именно этой фичей. но вот у нас в конторе пунто == харам.
AutoHotKey (https://autohotkey.com/) — кроме этого можно настраивать практически все что угодано через собственные скрипты.
Ну и, собственно, готовое решение, к которому пришёл через кучу проб и ошибок. Дело в том, что много других решений рано или поздно срабатывали не так, как надо, только текущее решение всегда работает безупречно. Первым делом я переназначил CapsLock на другую клавишу, например, RAlt или F13, это можно легко сделать через SharpKeys. Теперь сам код AHK (для RAlt):

RAlt::
if (Key="1")
return

else
SetKeyDelay -1
Send {Blind}{Ctrl DownTemp}{Shift DownTemp}
SetKeyDelay -1
Send {Blind}{Ctrl Up}{Shift Up}{RAlt Up}
return


Плюс можно дальше назначать комбинации клавиш, которые будут работать, не переключая язык, например, уменьшение/увеличение громкости через CapsLock и колесо мыши:

RAlt & WheelUp::
Send {Volume_Up}
return

RAlt & WheelDown::
Send {Volume_Down}
return


у меня так работает.
CapsLock::Send, {Alt Down}{Shift}{Alt up}

CapsLock включается через Shift+CapsLock.
Иногда почему-то CapsLock срабатывает как CapsLock, и потом приходится отключать AHK, чтобы отключить режим CapsLock.

А буква Ё во встроенной в Windows раскладке TypeWriter справа снизу, левее правого шифта — пользуюсь этой раскладкой уже лет десять, оказалась намного удобнее дефолтной, так как кроме удобного положения буквы Ё ещё и точка и запятая находятся на разных клавишах и вызываются без шифта.
Уже больше года пользуюсь таким AHK скриптом

1. Alt+Caps включает стандартную функцию капслока
2. Caps переключает на английский
3. Правый Alt — на русский

!Capslock::Capslock
Capslock::f(0x4090409) ; включение английского
RAlt::f(0x4190419) ; включение русского
 
f(p)
{
   ControlGetFocus, sCN, % "A"
   PostMessage, 0x50,, p, % sCN, % "A"
}


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

Работает отлично, но, увы, не всегда, в некоторых модальных окнах приходится переключаться по оставленной для совместимости комбинацией Alt+Shift.
Кажется пробовал похожее на ваше решение, в том-то и дело, что иногда не срабатывало, жутко бесило. А насчет циклического переключения — есть смысл освоить слепой набор, сразу будете видеть, что набираете, заодно вырастет скорость набора и глаза меньше уставать будут.
А насчет циклического переключения — есть смысл освоить слепой набор
Дык владею им родимым, владею, но всё равно пока успеваю осознать что пишу не в той раскладке – успеваю вбить целое слово или даже два. Затем остановка, BS-BS-BS...BS, <переключение>, <проверка_что_переключение_успешно> снова пишем. На фоне моей скорости печати вот эти действия от отмене забирают довольно много времени и мыслительных сил.

Еще лет 7 назад сделал в MLC раскладку "Английский — Русский". А потом и девушка перешла. (Правда она капс всё время не выключает, что меня привычного к всегда Английскому немного сбивает.)


Punto switcher не люблю, так как в свое время нахватался с ним очень много глюков. (Справедливости ради в некоторых играх есть проблемы что с PS, что с раскладкой, но последние время такое всё реже)

хм… А что вы подразумеваете под MLC?

Извиняюсь, MKLC — Microsoft Keyboard Layout Creator, который на скриншоте в статье...

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

Ну да, просто забил в режим капса русские буквы… И в режиме caps+shift большие русские. (Подробностей не помню, так как было лет 7 назад, еще с XP)


Всего одна раскладка. Где-то даже есть её инсталятор, если надо могу поискать.

чорть, очевидная идея :)
аналог под Mac OS
Я даже как-то выкладывал свою версию такой раскладки вместе с исходником.
Если кому интересно, ещё один способ переключения по CapsLock — мне понравился тем, что переключатель глобальный для всех приложений, недавняя публикация habrahabr.ru/post/301882

интересный пост. спасибо!
Как раз на этот способ перешёл с Capslang. Единственная проблема, с которой столкнулся — в Xamarin Studio 5 вместо переключения раскладки происходит переключение регистра (как понимаю, следствие каких-то собственных особенных методов работы с клавиатурой XS, из-за чего также уже много лет не могут также починить баг с буфером обмена на Windows). Во всех остальных местах, где с Capslang были проблемы, всё стало работать нормально.
Костыли какие-то. Я просто в автозагрузку lswitch.exe 20 (гуглится) поставил и радуюсь. А пунто ещё и забывает переключать иногда, и тогда капс залипает во включенном состоянии.
Спасибо, действительно крохотулька меньше 5 Кб, и прекрасно работает.
Думаю, не грех дать ссылку на сайт с утилитой:
https://haali.su/winutils/
Use any key to switch input languages, usage: lswitch [keycode]. Keycode is optional and defaults to context menu key. Another good candidate is a CapsLock key with a keycode of 20.
Извините за нубский вопрос — а как его запустить с настройкой на капс? Пробовал в консоли и lswitch 20 и lswitch.exe 20 результата ноль.
Прошу прощения, разобрался
А может меня кто-то просветить, чем не устраивает обычный Ctrl+Shift?
Или я не понял о чем идет речь, но никаких проблем с Putty, никаких проблем с виртуальными машинами, никаких проблем с удаленными машинами по rdp/citrix/etc…

тем, что при работе с несколькими виндами надо гадать: где-то альт+шифт, где то — кантрол+шифт, а если раскладок не две а три… Это отдельная, непонятная печатающим только на ру/англ боль. Ибо где-то может быть ру-укр-анг, а где то ру-анг-укр…
А это тут причем? Или CAPS автоматом вдруг настраивается на всех виндах сам?
Ctrl+Shift и одинаковые раскладки настраиваешь на всех своих виндах и все.
Тоже не понимаю зачем все это. Тем более привыкнешь к нестандартной, потом сел за другой комп — напряг. Я своих юзеров всех на Alt+Shift пересадил, и не важно какая винда, сколько языков.

Кому как. Меня не то что бы не устраивает, просто Caps Lock устраивает больше, т.к. это одна клавиша вместо двух, и ей соответствует светодиодный индикатор, видимый периферическим зрением (важно для моего "полуслепого" набора). К тому же, её обычная функция для меня бесполезна.

увы, но мой вариант не переключает светодиодный индикатор :(
Тем, что иногда, по разным причинам (буква нажата не до момента срабатывания, в последний момент передумали и т.п.), при нажатии горячих клавиш (ctrl+shift+...) получается случайная смена языка ввода.
Caps можно мизинцем нажать. Как следствие даже руку минимально сдвигать не надо. А по назначению её почти никто не использует, ибо нужно это было во времена механических печатных машин.

В линухе также есть вторая по популярности идея использования Caps: поменять местами Caps и Ctrl.
На маке я сделал себе свою раскладку в которой на капсе висит русский алфавит, а без — английский. Светодиод на капсе работает как дополнительный индикатор раскладки.

А заглавные буквы при этом нормально с шифтом набираются?

By default, Left Alt + Shift работает везде, в том числе и на трех языках
Задам, вероятно, глупый вопрос — если капслок, то без вечноверхнего регистра(с трудом помню, что бы я это использовал, но всё же)? Просто сам давно ищу что-нибудь на замену ctrl+Shift, в kde вечно проблемы с этим были, перешел на alt+shift, появились проблемы в win.
А кто-то вообще сейчас использует Caps Lock «по назначению»? Я им не пользуюсь уже очень давно. Только бывает мешает, когда случайно нажму на него. Идея использования его для переключения раскладки кажется мне отличной.
До этой статьи я как-то не задумывался на тему его использования, действительно только мешает.
Давным-давно сделал свой костыль LangSwitch bitbucket.org/master_groosha/langswitch/src

Из особенностей: сделано на Autohotkey, поддерживаются все варианты переключения (эмулируется тот, который установлен в системе, т.е. Ctrl+Shift, Alt+Shift, Grave Accent и т.д. Инфа берется из реестра).

Иконки в трее и возможность временно приостановить скрипт.
получать удвоенное удовольствие от слепой десятипальцевой печати
Клавиш для ввода аббревиатур является неотъёмлемой частью слепого десятипальцевого метода набора. Прыжки по Shift'ам, замедляющие набор — ересь. А переключение раскладок, раз уж оно айтишникам так часто необходимо, можно повесить на однократное нажатие какого-нибудь модификатора. Например, одного из Alt/Option, которые находятся под малозагруженными большими пальцами и значительно не «гуляют» на разных клавиатурах.
Alt'ом много где вызывается меню, так что не вариант. Вводить заглавные аббревиатуры лично мне приходится крайне редко, и на этот случай можно как раз включить CAPS другим сочетанием (на Linux, например, у меня для этого используется Shift+CAPS). Хотя я, кажется, набираю их все равно с Shift'ом
Меню можно вызывать по оставшемуся Alt.
Я пробовал несколько решений, назначающих Caps Lock на переключение языка, и все в конечном итоге приводили к тому, что в какой-то момент рано или поздно я обнаруживал, что всё пишется в залипшем Caps Lock, который вот так вот запросто не отключить, так как на нём висит другая функция. В общем перестал трогать Caps Lock и остался на Ctrl+Shift.
Для этого капслок сначала переназначается на другую клавишу, например, F13, а к ней уже прикручиваются нужные скрипты.
Зачем велосипед, если есть F1-F12 ??? Так же есть редко используемые Scroll lock и атавизм Pause break ??
Долго работал с CapsLock, но когда начал учить испанский, понял, что циклическое переключение раскладок — это зло. В итоге для английского стоит Ctrl+1, для испанского Ctrl+2, для русского Ctrl+3. И никакой путаницы никогда.

Настроить эти же хоткеи под убунтой оказалось нетривиальной задачей в сравнении с Windows, но и там в итоге все заработало.
Мне нравится вариант раскладки когда LShift — английский, RShift — русский. Переключение срабатывает только если нажать и отпустить shift без какой-либо другой кнопки, что в обычном состоянии не имеет какого-либо эффекта. Хорошо тем что не надо знать текущую раскладку когда хочешь что-то набрать: нажимаешь нужный шифт и вперед. Есть программы которые это позволяют настроить такую раскладку (https://github.com/razaraz/keyla например), однако не всегда все гладко работает к сожалению.
хорошая идея
LCtrl — английский, RControl — русский, Caps — украинский (ну вот тут по кругу, просто украинский — не получается, а жаль) в Пунто. Авто — офф. Вроде все работает.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.