Обновить

Меняем Punto Switcher на macOS: открытый код, ноль телеметрии и ноль зависимостей — в обоих смыслах

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.1K
Всего голосов 15: ↑15 и ↓0+18
Комментарии42

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

@Rashns ghbdtn!
Завидую людям, у которых хватает свободного времени и упорства чинить любимые игрушки до блеска. У меня обычно всё заканчивается на стадии «бесит, но потерплю». Снимаю панамку :)

Спасибо )))

так оно не переключает раскладку само, надо обязательно посмотреть и нажать alt?

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

Ну, или хотя бы звук какой, когда "неправильная" раскладка...

Да, хорошая идея - записал, автозамена на подходе

Да, в ближайших планах сделать выбор сочетания.

А подскажите, есть ли для винды простейшая прогаммка, чтоб биндить базовые вещи на нестандартные клавиши? У меня сейчас стоит старенькая утилитка MKey, в ней я настроил переключение языка на CapsLock, а ещё уменьшение/увеличение системной громкости на один шаг на F9/F10. Очень удобно. Но эта утилитка уже заброшена. И у неё есть ряд проблем, например, при переключении раскладки через неё не всегда меняется отображаемая раскладка в трее (написано EN, набирается кириллицей), или в некоторых текстбоксах переключение не происходит (в LibreOffice всё работает, а при переименовании папки/файла в окне "Сохранить как..." нет).

Попробуй Microsoft Power Toys: https://github.com/microsoft/powertoys
Там есть целый ряд утилит со схожим функционалом.

Спасибо за идею - изучу, обязательно применим

Если вы пишете на двух языках, то знаете эту боль: набрал полстроки, поднял глаза — а там ghbdtn вместо «привет». На Windows эту проблему закрывает Punto Switcher. 

В любой ОС это закрывается тем, что смотрят на экран, а не на клавиатуру. Да, занимает какое-то время, но результат гораздо лучше, чем если пользоваться Punto и его аналогами.

Мнение комментатора является исключительно субъективным.

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

Неужели в такой полезной вещи все держится на энтузиастах...

Вот и на linux был X Neural Switcher и тоже заброшен...

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

А если уже ввел пробел после слова не в той раскладке - можно ли вернуться и перевести?

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

Для меня это типичная боль - начать вслепую набирать что то, смотря вообще в другое место, уже набрать несколько слов, и обнаружить не ту раскладку.

выделили, жамкнули Альт - все кувыркнулось в нужную раскладку

Прерваться, найти мышку, выделить, жмякнуть, вернуться обратно... Лишнее действие.

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

Автозамена на подходе ;)

Спасибо!

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

а это "закрыто" памятью раскладки в приложении, но можно сделать принудительное включение, для первого открытия

Причем она должна тоже работать при “не той раскладке”.

Прерваться, найти мышку, выделить, жмякнуть, вернуться обратно

Так можно клавишами выделить. Ctrl + Shift + ⇐ (стрелка влево) выделяет по словам в винде, в маке по идее должен быть аналог

alt +shift + ⇐ (стрелка влево)

fixlayout() {
    en="qwertyuiop\[]asdfghjkl;'\zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:\"|ZXCVBNM<>\@№%%^&*"
    ru="йцукенгшщз\хъфывапролджэёячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖ\ЭЁЯЧСМИТЬБЮ\"#$:,.;"
    pbpaste | sed y=$en$ru=$ru$en= | pbcopy
}

Для минималистов

🔥 Для буфера и любителей терминала — самое то, по сути это и есть ядро механики (посимвольный маппинг раскладок). Для пары RU↔EN работает, но как общее решение хрупковато.

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

Спасибо за фидбек! На самом деле RuSwitcher делает ровно то же: с версии 2.2 основной движок печатает символы напрямую через CGEvent (keyboardSetUnicodeString) - это инжекция юникода, без буфера обмена и без выделений. Изначально и переписывал движок ради этого, чтобы корректно работало в Electron/VS Code.

Буфер обмена остаётся только в одном случае - когда конвертируешь уже выделенный заранее текст: в macOS нет API прочитать произвольное выделение иначе как через копирование (и буфер после восстанавливается). При обычном наборе и при автозамене он не задействован.

Тоже нативный Swift, ноль зависимостей. Главное отличие от KeyRay - бесплатно и open-source, так что код можно посмотреть. KeyRay при этом отличный зрелый продукт, просто другая ниша.

сегодня релизнул 2.3 - там уже кеймап и другие фишки, на подходе автозамена

ха ха

Кроме Punto еще есть Caramba Switcher который вполне себе развивается

Всё так, конкуренция всегда оздоровляет и подстёгивает

Доразвивался до годовой подписки и к тому же разработчик — хам.

Как видете решение проблемы монетизации данного класса программ для соло разработчика?

Брать деньги, но при этом слушать пользователей, а не тереть негативные комментарии.

Абсолютно согласен. У автора "свое видение", которое делает программу неудобной в использовании. Мериться с этим еще и за подписку такое себе.

скажите, можно ли как-то отключить автообновления и запись и экспорт логов?)

на Хай Сиерру (10.13.7) какая версия встанет?

Упустил статью, упустил возможность плюсануть, но яростно благодарю! Caramba Switcher реально отторгает жлобством оплаты по подписке, а нормальных – пускай, платных – альтернатив не было. Одно время я юзал LangSelector и даже писал автору feedback, но он был сырой, потом бесплатный период закончился, а покупать новую версию на доверии я был не готов, пока подписка за Caramba давала гарантированный результат.

Берегите простоту и легкость программы! В этом её ценность, а не в многоярусных настройках и попытках предсказать все возможные ветвления. Какие-то исключения стоит определять (окно набора пароля, например), но угодить всем не выйдет.

Ещё раз снимаю шляпу, хотя app даже не устанавливал. Спасибо, что делаете нужную штуку на энтузиазме!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации