Время идёт, и тут понадобилось еще один язык внедрить пользователям, да ещё хотят поддержку раскладки Бирмана, да и других раскладок. Какое это неудобство я смог оценить сам и вот поэтому и пришлось придумывать, на чём это можно сделать. Если взять просто раскладку Бирмана, так по правому 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 правами администратора и проделать следующее:
- Распаковать архив «Keybord Assistent 1_0.rar»
- Запустить файл «Переназначить RAlt RWin.reg»
- Перегрузить компьютер
- Запустить файл «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)
IP-human
23.08.2019 17:33Ctrl-Shift в Windows не менее удобен, идет их коробки, клавиши одна над другой, так что можно переключать «одним пальцем».
kaiu Автор
23.08.2019 17:36Alt+Ctrl тоже стоит у меня, так как по входу в систему переключать тоже надо или там Win+Space видно для тех у кого давно привычка к 10 винде.
Когда набираешь слепым набором выходит долго, если часто надо гонять русский-английский, вот особенно за теми символами отданными русским буквам. Вот в других языках вообще все сложнее, там стоит такой ужас, что им всех клавиш клавиатуры не хватает, так что с русским еще более-менее жить можно.
onground
23.08.2019 18:45К сожалению стандартные Ctrl+Shift и Alt+Shift (а также маковские Cmd-Space и Alt-Space) конфликтуют с адобовскими графическими программами. Не то чтобы совсем жить невозможно, но если пользоваться интенсивно, то выбешивает.
Я остановился на уже почти стандартном кроссплатформенном варианте переключения по CapsLock. Левым мизинчиком тюк по довольно большой крайней левой клавише в среднем ряду — и переключилось. Вполне удобно, быстро привыкаешь. Ни с чем не конфликтует. На Маках — это работает из коробки. В Win делается легко разными утилитами. Но это хорошо для двух языков. Для трёх и более нужно что-то ещё.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 отдельных физических клавиши, они же бесполезный тачбар не поленились сделать.
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) без переключения клавиатуры, просто удерживая нажатой букву, у которой может быть какая-то диакритика:
В Windows есть что-то подобное, но менее очевидно. Надо поставить раскладку США (Международная). Тогда, если нужен умляут, то нажимается двойная кавычка, затем жмём гласную и появляется гласная с умляутом. Если нажать одинарную кавычку и C, то получится C. И т.д. Но чтобы набрать просто кавычку, надо нажать эту кавычку два раза. А если у вас продвинутая IDE, которая заботливо ставит вам сразу две кавычки, то там надо отдельно приноравливаться, чтобы не получать по четыре или по три кавычки, особенно если вы пишете то на Маке, то на PC. Не соскучишься.Sabubu
25.08.2019 21:42Циклическое переключение — это и есть "модальное", то есть вы должны помнить текущую раскладку. А удобнее немодальное — в случае Эппл, они могли бы просто сделать 2 отдельных кнопки "Рус" и "Лат" с подсветкой, но не сделали. То, что вы описали, умляуты — это для европейских языков, да, их поддерживают, а русский язык как язык второго сорта для производителей.
Те, кто делает переключение раскладок по Win + пробел, явно не пользуюстя активно двумя раскладками и не понимают неудобства. Надо требовать:
- отдельных физических клавиш для каждой раскладки
- не совмещать буквы и символы, создавая путаницу (когда в русской раскладке двоеточие в одном месте, а в латинском в другом — это ведет к путанице, особенно среди начинающих пользователей, пожилых людей)
Эти проблемы из-за того, что вместо проектирования специальной клавиатуры для русскоязычных они пошли самым дешевым путем — взяли убогую (не походящую для русского) латинскую раскладку и поменяли наклейки на клавишах. Нужно больше клавиш и более правильная раскладка.
Удерживать долго клавишу — это тоже неудобно, замедляет набор. Глупое решение. Я видел такое на андроиде, и это неудобно.
littorio
24.08.2019 00:42Он очень неудобен. Невозможно гарантировано сделать одним нажатием "хочу сейчас русский". Потому что надо помнить, что там сейчас, или если случайно двойное нажатие — тоже упс. А тут просто брякнул на всякий случай по нужному шифту и побежал печатать.
Ну и плюс Ctrl расположен ужасно — не зря именно его так любят на CapsLock переводить. Поставьте указательные пальцы на F и J, как положено, и не снимая нажмите Ctrl, ага.
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, а где-то нет, это приходится угадывать или настраивать.
А когда потом садишься за чужой комп… ох… В общем, сто раз подумаешь, надо ли сильно привыкать к совсем уж нестандартным раскладкам.littorio
24.08.2019 23:40Но на Маках Ctrl=Cmd, они нажимаются большими пальцами, там уже другие привычки появляются.
Я в основном маздайщик, так что не уверен, но НЯП, не "=". Копирование это именно Cmd+C, и да, они там расположены на порядок удобнее.
Спокойно нажимаю Ctrl'ы мизинцами, из исходной позиции
Можно (выворачивая кисть, сгибая мизинец и нажимая перевёрнутым, нажимать ладонью левой руки, и т.п.), особенно если мизинцы длинные, но неудобно. CapsLock гораздо удобнее.
А когда потом садишься за чужой комп… ох… В общем, сто раз подумаешь, надо ли сильно привыкать к совсем уж нестандартным раскладкам.
Ну, если часто не за своим компом, то это само приходит. Я пользуюсь своей кастомной раскладкой, стандартной английской и шведской, пишу по русски вслепую на стандарте и на фонетической. Почти без косяков :P.
ClearAirTurbulence
24.08.2019 05:49При частом переключении переключение языков левым и правым шифтами неизмеримо удобнее.
lowtechomega
23.08.2019 17:33Честно скажу, пробовал пунто раз 6 или 7 за последние 10 лет. И всегда он был проблемой, через небольшой промежуток времени переставал что либо переключать и реагировать на обратные замены. Эта программа — пример дичайше низшего качества. (да, у меня всего 3 языка тайский, рус, англ, из которых для автомата только рус/англ)
Предложенное «решение» вообще не будет работать в моей ситуации. К сожалению нет ни одной программы (искал долго) которая бы элементарно переключала рус/англ — ВСЕ поголовно работают хуже некуда.
Сергей Москалев, если он разраб пунты (а что разве эта поделка не была куплена Я?) — приложите больше усилий — программа неюзабельна вообще.kaiu Автор
23.08.2019 17:46Элементарно можно и стандартное решение, назначить комбинации клавишам, допустим Alt+Shift+1 и так далее до 5 у меня стояло как-то, там не только языки, а раскладки разные были и просто можно переключать.
А вот почему не взять из моего скрипта код и приделать под нужное вам я не понял, это же не сложно, на любую клавишу навести, что он будет переключать русский, а на другую английский и все дела.
Конечно я был бы только за то, чтобы наконец эти в США подумали про другие страны, а то как делать клавишу Win так сразу, а отдельную клавишу для языков никто не продвинул.
cheaTTer
23.08.2019 19:19Разработчик PuntoSwitcher сейчас трудится над новым аналогичным продуктом CarambaSwitcher
Retifff
23.08.2019 19:39И он гораздо неудобней, чем Punto Switcher. Настроек, можно сказать, нет совсем.
qyix7z
24.08.2019 10:52Да уж. Если для изменения опций надо переустанавливать программу:
Если вам мешает SingleShift для переключения раскладки в системе, снесите старую версию, скачайте новую и установите. Появится диалог в котором вы можете принять или отклонить эту опцию!
И автоматические создания новых правил, без возможности их редактирования. Имхо перебор.
ALexhha
23.08.2019 19:45А подскажет кто «нормальные» аналоги punto switcher под линукс? Что-нибудь кроме xneur
niccolo2019
24.08.2019 09:02Честно говоря, учитывая то, что разрабам кроме всяких раскоряченных хоткеев почти ничего не остаётся, и то, что нампад в курсорном режиме почти не используется, тупо забиндил на них нужные мне хоткеи для конкретных программ…
И сразу всё стало гораздо проще. В принципе не особо понятно, почему ни майки, ни яблочники, ни китайцы, наконец, до сих пор не добавили в средний блок 5 как-бы отсутствующих клавиш для переключения раскладки и нескольких и самых распространённых действий типа копи-паста… Также непонятно — почему бы стандартно не делать клавы с памятью для профилей а в ОСЬ добавить драйвер, который бы переключал профили в зависимости от активного окна.
Ramzzza
24.08.2019 09:54виндовс это хорошо, а почему никто не модернизирует xneur для линукса? или он настолько идеален, что не нуждается в доработках?
OnYourLips
24.08.2019 20:54а почему никто не модернизирует xneur для линукса?
А почему вы его не модернизируете, если заинтересованы в нем?
Я думаю, что у авторов просто энтузиазм закончился, штука эта крайне нишевая, целевая аудитория — пересечение двух маленьких групп (линуксоиды, использующие кириллицу), софт постоянно требует огромного количества поддержки. И монетизировать нельзя.
Проще под определенный набор зависимостей с нуля написать переключатель раскладок, чем универсального монстра.
spesso
24.08.2019 10:31Несколько лет назад усиленно изучал лицензию на PuntoSwitcher в плане использования его в офисе и что то там юристов не устроило, а как у него сейчас с этим?
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. Пользователь не имеет права воспроизводить и распространять Программу в коммерческих целях (за плату), в том числе в составе сборников программных продуктов, без письменного согласия Правообладателя.
Так что если выпускают какой-то диск с программами и получают прибыль, то желательно поделится с автором, а так без коммерческой выгоды распространяйте сколько угодно.
Ryav
24.08.2019 12:53Изначально был фанатом Punto Switcher, хотя особой необходимости в нём не испытывал (слепой ввод освоил ещё ранее), после него также попользовался Caramba на Win, а на Linux страдал от отсутствия альтернативы (Xneur не устраивал своей непредсказуемостью). По итогу включил параноика и отказался от данного инструмента вовсе, жизнь моя ничуть не ухудшилась.
Что касается раскладки Бирмана — обычно я заменял стандартные .dll на бирмановские, но Win10 не позволила это сделать, по итогу я отказался и от раскладки, а все необходимые мне символы прописал также через AHK. В Linux с этим проблем нет, раскладка доступна из коробки.
А переключение локали предпочитаю через CapsLock.
netch80
25.08.2019 09:21Если вы забрали Caps под роль LCtrl, то LCtrl освободился? Тогда почему бы не применить его под переключение? RWin очень часто отсутствует на лаптопах, так что ваш метод туда не перенесётся.
kaiu Автор
25.08.2019 10:10Для себя переделайте код и попробуйте. Я в статье написал, что если еще как-то можно дотянуться до это контрола, то до правого просто не могу. Имею среднюю длину пальцев и мизинцы не до конца имеют такой изгиб, чтобы из стандартной позиции руки не напрягаясь туда дотягиваться. Намного проще переключаться альтами, так как большие пальцы много времени бездельничают.
Ну и LCtrl оставлен по силе привычки людей, так как некоторые комбинации клавиш все равно вы можете нажимать именно с ним, когда вам не надо заниматься набором текста. Ведь если никуда не торопитесь, то не важно чем переключать раскладку, можно до всего дотянуться.
Retifff
А как вы большие буквы вводите? Просто интересно.
kaiu Автор
Там и ввожу, так как нажатие комбинаций уже не отслеживается скриптом. Если человеку не надо это, то можно самому убрать из кода скрипта и вставить что-то своё. У меня была идея более радикальная, хотя и удобная в чем-то… но даже боюсь тут озвучивать, чтобы не прослыть извращенцем. Поэтому пусть будет так как есть.