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

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

Пара советов, если позволите:

1. На окне с настройками всё слиплось, а ссылка на Github занимает самое видное место. Попробуйте разнести их на несколько табов — должно стать гораздо приятнее на вид.

2. Историю версий проще воспринимать, если они упорядочены по убыванию даты.

3. Вместо этой наркомании наверняка помог бы десериализатор (XML или JSON).

4. Очень странный способ локализации — советую почитать про ресурсы и сборки-сателлиты, будет удобнее.

5. Логика в Code Behind — это моветон :)

В общем, удачи в развитии проекта!
И ещё велосипедиум в логировании вместо NLog или log4net :)

Мне предлагали, но Я решил сам попробовать реализовать.

1. Я уже подумывал над созданием новыго интерфейса.

2. Думаю будет удобнее.

3. Раньше был XML, но у он не у всех работал, поэтому Я придумал новый способ сохранения/загрузки конфигурации с использованием WinAPI.

4. Полезно будет узнать новое.

5. :)

Спасибо.
3. Можно попробовать добавить словари со значениями по умолчанию, разделить по секциям или по способу валидации. Вся портянка свернется в код инициализации и несколько циклов.
По поводу пункта 3 — если бы такой баг действительно был во встроенном XML-сериализаторе, его бы давно заметили и исправили. Нужно посмотреть на то, как вы им пользовались — могло побиться при рефакторинге файла настроек между версиями.

В качестве альтернативы попробуйте хотя бы Newtonsoft JSON.
и начал z искать информацию

Забавно. О многом говорит=)
Я давно использую вашу программу, все почти идеально. Не ожидал внезапно встретить авторскую статью на Хабре, вот вам просьба из аудитории:
Флаги стран в трее. Я бы использовал стандартный RU\EN индикатор, но он меняется с задержкой в несколько секунд, неудобно.
Флаги стран в трее

Думаю было бы неплохо, добавлю в будущем.

И добавили
Давно уже добавили, но сейчас решил зайти поблагодарить, это очень приятно когда разработчик вводит улучшения по отзывам :)
А можно не только флаги, но и буквенные индикаторы раскладок? Ну или позволить кастомные картинки- я сам буквы нарисую =) А то виндовый индикатор тормозит-
Я бы использовал стандартный RU\EN индикатор, но он меняется с задержкой в несколько секунд, неудобно.

Как написано на wiki, можно поставить свои флаги в папку Flags рядом с Mahou.exe, с форматом png, и названием из первых двух букв которые можно увидеть если включить подсказки языка(и выключить использовать флаги для подсказок, если стоит).

Попробовал — начинает тормозить, как и виндовый значек, иногда даже дольше переключается =)

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

Создал папку Flags, скачал туда флаги en и ru.png. Теперь иконка с флагами обновляется только если фокус переместить на другое окно, т.е. нажимаю Alt+Shift, раскладка изменилась, а флаг нет, еще несколько раз меняю раскладку — флаг не меняется. Жму Alt+Tab — флаг меняется на соответствующий текущей раскладке…

Нашел решение! Если запустить Mahou не от Администратора, а от текущего пользователя, то проблема исчезает- картинка меняется мгновенно. Правда появляется проблема с программами, запущенными в режиме Администратора. (Win7x64, если что)

Включен ли JKL?

Галка в настройках стоит

Странно, у меня нормально работает(только что проверил), А перезапускал Mahou после вставки флагов? Попробуй со стандартными настройками, т.е. закрой Mahou, перемести свой Mahou.ini, и запусти Mahou снова.

Да, перезапускал. И вручную (ПКМ — Запуск от Администратора) и через планировщик. Удалил ini, все то же самое- запускаю от Администратора- флаги не меняются, запускаю от пользователя- все работает

После того как запустил Mahou от админа, попробуй убить в диспетчере задач jkl.exe и jkl_x86.exe и запусти потом вручную от админа jkl.exe(рядом с Mahou.exe). И еще попробуй без JKL проверить.
P.S. У меня лично UAC вообще отключен(через реестр, просто надоел :) ), так что поведение у тебя и у меня может отличаться...

попробуй убить в диспетчере задач jkl.exe и jkl_x86.exe и запусти потом вручную от админа
ничего не меняется
попробуй без JKL проверить
Становится отзывчивей виндового индикатора, но в приложениях запущенных от Админа флаг не переключается (раскладка меняется)

Все, нашел причину… При включенном UAC хук используемый в JKL запущенном от администратора не является глобальными, т.е. только для администраторских приложений, и наоборот. И наблюдается такое поведение чаще всего именно в консольных приложениях т.к. получить раскладку там обычным способом невозможно, нужно использовать что-то вроде JKL или getconkbl.dll…
Я не ожидал что будет такое странное разделение хука, что админский хук не имеет доступа к юзерским приложениям. Выходит JKL — не такой идеальный как я думал, буду думать и доделывать...

Видимо для тех у кого такая проблема, лучшего способа чем использовать getconkbl.dll — нет. Т.к. получение раскладки работает только в приложениях Windows(Оконных), а консольные приложения — не такие… Они не хранят в себе раскладку, а хранят ее где-то в скрытом Windows приложении(conhost.exe), которое getconkbl.dll может найти. А JKL же работает нормально только тогда когда UAC полностью отключен(загуглите если не знаете), иначе будет работать только в приложениях запущенных в том же уровне доступа в котором запущен и Mahou. Как вариант еще можно отключить JKL если не пользуетесь консольными приложениями(если пользуетесь поставьте getconbkl.dll), и все должно работать нормально, т.к. тогда будет использоваться только стандартный метод получения раскладки(и getconkbl для консольных если стоит).

А как Mahou сообщить, что надо использовать getconbkl.dll для консольных приложений? И где взять эту dll?

Есть на Wiki, ссылка на проект, прямая ссылка нужного getconkbl.dll, просто поставь рядом с Mahou.exe, и перезапусти Mahou.

Скачал x86 версии Mahou и getconkbl по ссылкам из Github.
Проблема с корректным отображением раскладки ушла. Пользовался несколько дней. Потом нашел баги.
В CMD по прежнему переключает раскладку только один раз и все- потом переключить можно только мышкой по иконке виндовой языковой панели.
Основная проблема — Крашит MS Word при использовании функции смены раскладки последнего слова (как минимум, после пяти крашей подряд вернул обычный Mahou with jkl)

А если вдруг проблема как здесь: #105, т.е. нужно перезапустить ПК, потом заработает. (главный комментарий)

С CMD проблему решил. Заметил, что после ребута getconkbl не используется, а при ручном запуске используется… Указал в планировщике рабочую папку- все починилось.



А вот ворд крашится непредсказуемо и, как всегда, в самый не подходящий момент… А специально повторить не могу =)
Получилось сломать ворд «под запись» отправил в личку
О! Ворд достаточно стабильно крашится если использовать смену раскладки после того, как вставишь что-нибудь из буфера обмена в документ
Про ворд нашел в Вики… Каюсь, ступил!
При включенной эмуляции не работает отображение раскладки в cmd =)
А как-нибудь можно настроить, чтобы эмуляция работала только в офисных приложениях (или по списку приложений, сформированных вручную), а во всех остальных нормальное переключение?
++++ Про CMD. Раскладка отображается корректно при использовании Конвертации, а при обычной смене раскладки с использованием эмуляции флаги не меняются, хотя раскладка переключается. Последующее использование конвертации раскладки меняет изображение флага на корректное. (использую getconkbl x86)

Попробуй в latest-commit, и еще отключить JKL если включен.

Теперь вообще избражение флага не меняется при смене раскладки. Меняется только при использовании конвертации. «Получать раскладку с JKL» галка снята, файлы JKL удалены. В папке с Mahou лежит getconkbl.dll версии x86

Еще: вдруг окна от Админа запущены.

Не, пользователь новый, хоть и с правами админа
А по существу. Какие основные отличия от Punto Switcher'а?
Из вашего описания я делаю вывод, что часть его фич вы не реализовали.
Черный список, отключающий автопереключение для специфических слов есть?
Не столько претензия, сколько простой вопрос: Почему такая жесткая экономия места в интерфейсе? Местами вам приходится применять сокращения, когда можно написать полностью просто скомпоновав все попросторнее.
Если разнести настройки по вкладочкам, то к каждой галочке можно будет внятно и лаконично написать что она означает и при этом интерфейс не станет перегруженным. Там-то интерфейса того раз два и обчелся.
Не знаю, может у вас там развесистые и удобные хинты, но делать отдельную справку и сопоставлять эти два контекста для настройки приложения это как-то… кустарно. Я понимаю, что взгляд у вас замылен, вы знаете все нюансы этой переключалки и для вас все очевидно, но пользователям милее простая лаконичная прозрачность в программе, которой хотелось бы в идеале не замечать. Идеальный вариант — просто забыть о том, что она есть и пользоваться на автомате. В вашем случае придется вспоминать каждый раз. когда что-то идет не так.
При беглом осмотре вики и скриншотов я не нашел (или не заметил) настроек черного списка приложений, где нужно отключить автопереключение или ввести специфические правила.
У вас есть такая функция? Планируется, если нет?

Мой внутренний параноик полагает, что Punto Switcher — это не просто переключатель клавиатуры. С чего бы Яндексу нужен был этот совершенно неприбыльный продукт? Зато кей-логгер из пунты получается отличный.

Ваш внутренний параноик молодец. Наверно он вам примерно в том же духе бухтит про яндекс-браузер, про гугл-хром, про андроид, про… Однако люди этим пользуются и не парятся. Может быть кто-то и не осознает до конца, но по-большому счету… почему нет? Ну будет яндекс более качественно подбирать для вас контекстную рекламу, ну получит какие-то данные для улучшения своего поиска… Я бы больше опасался за сторонний мелкий продукт, пусть даже опенсорсный, у которого слишком мелкое коммьюнити, чтобы вычесать оттуда большинство уязвимостей и делать это достаточно оперативно. Какая-нибудь лазеечка с не очень аккуратной работой с DNS или https в автообновлении, и этот продукт в умелых руках становится реально опасным шпионом. Я не хочу сказать, что с Punto такого случиться не может, но ресурсов у них, мне кажется, больше.
Очевидно, что это не единственный вектор атаки. Поломать могут цепочку на любом этапе, а в случае одного-двух мантейнеров получается бутылочное горлышко, в котором очень удобно вставить закладку. Большинство-то пользователей качает бинари и ставят то, что пришло с автообновлением.
Я не хочу ничего сказать в пользу того или иного продукта, но хочу обратить внимание параноиков, что не всё так однозначно. Если вы настолько параноик, что обходитесь собственными сборками хромиума после личного ревью каждого апдейта, то вы скорее всего и без переключателя раскладок себя чувствовать нормально будете. По крайней мере приучить себя к переключению сравнительно нетрудно.
Намного проще доверять небольшому опенсорсному продукту, который я могу собрать сам, отключив все «обновлялки» или шпионские функции.
И да, очевидно, что и я.браузер, и гугл-хром и иже с ними шлют туеву хучу статистики на свои сервера.
И как раз простые приложения от таких гигантов вызвают много вопросов и оправданных опасений.
Вот если действительно все сами собираете, то, конечно, никаких вопросов. Паранойя — это всегда ограничения. Мы жертвуем неким комфортом и/или временем, чтобы потешить своё тёплое уютное чувство паранойи. Но это становится самообманом и фарсом, когда паранойя включается иногда. Нельзя быть чуточку параноиком. «Чуточку-параноики» — это просто самообманщики.
Кстати, забавная сейчас наблюдается тенденция. Отсутствие социальной жизни и некоторой активности (неприемлемой для параноиков) последнее время записывает параноика в ряды «подозрительных личностей». Параноиков перестаёт защищать мощный механизм принципа неуловимого Джо, а после этого уже трудно наверняка утверждать кто более уязвим статистически: представители малочисленной группы странных людей или обычные люди без заморочек, коих легион.
Как большой эксперт по всему, к чему не имею никакого отношения, могу озвучить свою точку зрения относительно идеального параноика.
Идеальный параноик — это человек с «файрволом» в голове.
— На одной стороне «файрвола» простой стандартный обыватель, присутствующий в соц-сетях, пользующийся виндой, бесплатным антивирусом и единым паролем «1a3s5^7*» на всех своих обывательских эккаунтах.
— На другой темная личность, никак не связанная с первой, сидящая за шелухой тора и самописным паровозиком собственных VPN. Отдельный ноут, выглядящий поломанным, и система на двусмысленно зашифрованной флешке используется для непрерывного формирования запасных вложеных путей анонимизации. Такой человек виден в сети как множество несвязанных личностей-аватаров, выглядящих как давно созданные, неумело заполненные и редко используемые профили в разных сетях и сервисах на разных языках и с разными легендами.
Этому идеальному параноику так трудно живется, что сложно даже представть зачем он такой нужен, кроме как чтобы проворачивать какие-то темные высокооплачиваемые делишки… но раз уж эти делишки темные, то есть ои или нет их не понятно. Как и тех людей за внутренним файрволом.
Очень хотел бы посмотреть как вы соберёте Chromium отключая все «шпионские штучки».

А я про хромиум ничего и не говорил. Я знаю, что во-первых, его сложно собирать (как и весь крупный софт), а во-вторых, там всё равно куча всего.
Для успокоения паранойи люди делают вот такие форки.


Опенсорсные .net приложения собираются легко и непринуждённо (если написаны нормально), с остальными приходится как минимум повозиться.

Отличная логика — давайте променяем гипотетические уязвимости и мифическую слежку неизвестно кого (откуда этот некто вообще знает, что данная программа стоит у меня на машине?) на почти гарантированную корпоративную слежку (но это же не страшно, они хорошие).
Корпоративная слежка — это не слежка скорее, а сбор информации обо всех подряд. И вас конкретно, думаю, гугл как-то особенно не выделяет… наверно. Почему тогда вы не рассматриваете такой же вариант в случае с этим опенсорсным ПО, а сразу перешли к рассмотрению индивидуальной угрозы от некоего гипотетического «некто».
Это совершенно разные ероятности. «Корпорация против всех» и «некто против вас» — это не всё, есть еще «многие против всех, до кого удастся дотянуться». Здесь я подразумеваю неких злодеев, которые рыщут по интернету в поисках уязвимостей с целью выгоды. И эта угроза выглядит куда более реальной, чем подозрение гугла в том, что он хочет завладеть вашей кредиткой или ресурсами компа для рассылки вирусов или ещё чем-то, что может составить вам проблему, а ему (гуглу=) выгоду.
Проиллюстрирую натянутым среднепотолочным примером.
Некто написал скрипт, который ходит по репозиториям на гитхабе и ищет конкретный набор 0-day уязвимостей по коду. Скрипт выдал много-премого проектов, которые были всячески отфильтрованы, и составлен топ по популярности среди пользователей (а не программистов; то есть у них небольшое коммьюнити). Осталось как-то заполучить базу пользователей. Например взломать соц-инженерией одного из мантейнеров или как-то еще заполучить, скажем, логи багтрекера или системы автообновления… Да, это не аудитория гугла по объёму, но это реальные сотни и тысячи машин, которые можно заполучить под контроль. Гипотетически, конечно.
Критичная ошибка всех подобных рассуждений — олицетворение Гугла или Яндекса в виде такого цельного существа, которое действует логично и непротиворечиво. Гугл не будет делать то, гуглу не выгодно сё, гугл не охотится на кредитку…
Гугл — это многие-многие тысячи людей, среди которых могут оказаться такие, кто не прочь воспользоваться своим служебным положением. И я не знаю, кто именно из них имеет физический доступ к серверу, на котором будет лежать моя гипотетическая переписка. Понятно, что лично Брину я нафиг не упал. А вот какому-нибудь админо-стажеру Хозе или Абдуле — может быть, кто знает? И не надо мне рассказывать про права доступа и политику безопасности — это красивая теория, жизнь обычно менее предсказуема.

Про соц «взлом» мейнтейнера — это какие-то дикие фантазии. Если софтина не имеет бэкдоров, то откуда вообще у него такие списки? Он что, знает IP-адреса своих пользователей? Рутовые доступы имеет? Бред. КПД такого бизнеса будет даже не знаю в каком знаке после запятой, для злых хакеров есть куча более продуктивных полян.

Картина примерно такая: я боюсь, что мне на голову упадет метеорит (вероятность 1e-6%), поэтому пойду и добровольно сяду в тюрьму.
Гугл — это многие-многие тысячи людей

Ок. Тут я с вами согласен.
Но так однозначно сравнивать вероятности взлома с того или иного вектора… Попахивает когнитивными искажениями. Майнтейнеру не нужны списки пользователей, он билдит бинарь, который пользователи тянут сами и запускают у себя.доверяя полностью. Опять же, вы, наверно билдите сами после ревью исходников, но большинство берет бинарные сборки, особенно для винды.
Да и в целом вы меня не так поняли. Я не пытаюсь убедить, что гугл безопаснее Mahou. Я пытаюсь сказать, что не всё так просто и однозначно, что любая паранойя должна быть консистентной и перестраховываться от метеорита катаясь на автомобиле по городу — это не логично.
у которого слишком мелкое коммьюнити

1 чел. но


чтобы вычесать оттуда большинство уязвимостей

как видите здесь вычесывает :)


https в автообновлении

Чем опасно подключение к GitHub'у, которое только загружает данные о новой версии?


и этот продукт в умелых руках становится реально опасным шпионом

Ну дык Open-Source же, что хочешь то и делай(сам).


обходитесь собственными сборками хромиума после личного ревью каждого апдейта

Угадал — это Я, а еще свои сборки Nightly и Servo :)

Я чуть выше ответил примером, который и вам хочу адресовать. Да, возможно, вы исключение и никогда не пользуетесь готовыми бинарными сборками… но таких мало и интереса вы особого не представляете, поскольку сидите, наверно, на линуксе или маке и в целом более осторожны, чтобы попсться. И я не утверждал, что офт от яндекса в этом плане гарантированно более безопасный. Я лишь хотел сказать, что не всё так просто и не все так однозначно, если быть достаточно параноидальным в суждениях.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Вы наверное не застали, или просто не помните, как Punto Switcher сам обновился у всех, у кого были запрещены обновления.
Ещё раз — в топку программы с такими сюрпризами.
Действительно не застал. Или, впрочем, не заметил. Давайте опустим вопрос о том, нужно ли включать автообновление софта, особенно если вы этому софту уже доверились, установив его.
Конечно обновляться, если обновления отключены в настройках — это тот еще зашквар. Однако я не имел чести послушать другую сторону. Я не хочу гадать ошибкой это было, или закрытием критической уязвимости, которая показалась авторам важнее галочки настроек, или интерфейс настроек был плохо локализован и галочка подразумевала меньшую степень категоричности…
То, что одна прога обновилась без спросу никак не меняет вероятности, ее вредоносного использования авторами или посторонними лицами. По крайней мере корреляция надумана и не доказана. Суть — предрассудки. Закрытое ПО под виндой по определению может в один прекрасный день проснуться и сделать всё что угодно.
НЛО прилетело и опубликовало эту надпись здесь
Открытое ПО может сделать ровно то же самое, только оно ещё и написано через пень-колоду.
Это не голословное утверждение, а из практики.
Вопрос не в этом.
Это программа, которая по сути является кейлоггером.
И _любое_ нестандартное поведение заставляет задуматься — «а что там ЕЩЁ заложено интересного»?

Понимаете, когда как-нибудь вечерком у вас снимут пару штукарей с кредитки — вы наконец задумаетесь о том что по сути ваши данные ничем кроме честного слова производителей(весьма ограниченного лицензией) — не защищены.
А цели производителей почти всегда не совпадают с целями потребителей.
НЛО прилетело и опубликовало эту надпись здесь
Мой внутренний параноик отключил всю сетевую активность на PS и радуется )))
А если серьёзно — радует, что появился более или менее достойный опенсорс конкурент.
Но как правильно заметили, до PS ему ещё развиваться и развиваться — и в плане функционала, и в плане интерфейса.
Вот я к примеру тот самый пользователь который ушел с Punto Switcher на Mahou. Тут ведь дело не в том что Mahou умеет делать, а в том, чего она не делает:
Не зависает раз в месяц-два, полностью сбрасывая настройки, из за чего нужно выставлять их заного.
Не вылетает на большой нагрузке на ввод, переключение окон и т.п. (Раз в 2-3 дня мой Punto Switcher стабильно вылетал)
При установке не просит поставить браузер и еще сопутствующего софта.
При обновлении не просит поставить браузер и еще софта.

Ну я прямой функционал который все таки Mahou делает, работает стабильно и без проблем, за что автору спасибо.
> При установке не просит поставить браузер и еще сопутствующего софта.
За исключением 250-мегабайтного фреймворка
Который и так у всех есть, и ставится виндой автоматом…
Я пробовал Punto несколько раз — там предполагается наличие английской en-us раскладки, которая у меня не устновлена. А когда сочетание русская/немецкая, то там были какие-то проблемы. Я, впрочем, последние версии не смотрел, может всё стало хорошо.

В Mahou — неважно какие у Вас раскладки, просто выберите нужные в настройках.

Такое ощущение, что Яндекс давно забросил PuntoSwitcher и разве что периодически ухудшает его: )
Тоже своего рода стабильность…
автопереключение

В Mahou вообще авто-переключения нет! Зачем черный список для функции которой не существует?


Почему такая жесткая экономия места в интерфейсе

Ну это первый мой интерфейс на C#, и заточен он был именно под ширину английских строк, поэтому русские сокращены кое-где.


Если разнести настройки по вкладочкам

Надо будет почитать и поглядеть как это выглядит...

Какие основные отличия от Punto Switcher'а?

  1. Размер (Папка PuntoSwitcher — 6.51 МБ, Папка Mahou — 362 КБ).
  2. Портативность(не требует установки).
  3. Возможность переключать по любым раскладкам(даже по собственно созданным).
  4. Ничего никуда не отправляет
  5. Не просит установить дополнительный софт, расширения и т.д.
  6. Open-Source.
  7. Другие функции(авто-обновление, игнорирование символов при конвертации, и т.д.).

А еще в Punto Switcher мне надоедала надпись — "Отмена невозможна", в Mahou такой — нет и конвертирует везде!

1. Вы серьёзно? Кого сейчас волнует размер? Да к тому же эти жалкие 10 метров. Нет, ок, похоже вас-таки волнует, но, черт подери, почему?! Тем более 10 метров — это действительно мелчи. Я надеюсь на первое место этот пункт попал не по важности для вас.
2. Зачем портативность программе, которая вешает системные хуки и висит в трее? Я бы назвал это скорее минусом, поскольку это просто очередной уход от стандартизации. Пользователю надо как-то по-особенному работать с вашей прогой. Это в век удобных аппсторов, репозиториев и прочих достижений прогресса.
3-6. Ок
7. Автообновление у пантосвитчера, вроде есть, или вы о чем? Игнорирование там тоже есть, иначе как бы они делали автоконвертацию?
OpenServer тоже прописывается в автозагрузку, если в его настройках поставить галочку, и при этом portable.
Инсталлятор для программы написать — дело десятое, а наличие вообще нативной портабельности это плюс.
Возможно, я один такой извращенец, но я люблю, когда программа маленькая, не требует установки и хранит все свои настройки рядом с собой — тогда её можно положить в Дропбокс и использовать одинаково и на компьютере дома, и на втором компьютере дома, и на третьем компьютере дома, и на работе ещё, и никакой маеты с удобными аппсторами, синхронизацией настроек между компьютерами, и переустанавливать не надо, даже если винду переустановил. И маленький размер важен даже не потому, что места в дропбоксе жалко, а потому, что вот надо, допустим, прямо щас выключить компьютер и уйти — а оно только что автообновилось, ага, теперь синхронизируется. На жалких 10 метрах дропбокс может иной раз запросто протупить минуты две-три.
Вот даже не знаю с чего начать… Всё прекрасно в это комментарии. Я понимаю, почему описанный вами сценарий непрофильного использования дропбокса может быть удобнее. Но это же не от жизни хорошей, а от изначальных проблем с реализацией всей этой кухни.
Почему опасно держать бинари на дропбоксе, думаю, вам объяснять не надо. Но своим лайфхаком вы, простите, наколхозили распределенную файловую систему и держите на ней часть софта. очевидно, что это не полностью и не единообразно решает ваши проблемы.
В правильном, кстати, направлении в этом плане идет андроид. Почему в винде никак не перейдут к нормальной дистрибуции ПО я не знаю. В убунте давно есть волшебный и великолепный apt, и он прекрасен. Абсолютно всё, что нужно для жизни ставться одинаковым образом, удаляется одинаковым образом, хранит настройки одинаковым образом… Экономить размер программы, чтобы они влезали на дропбокс, чтобы решить часть проблем деплоя и синхронизации окружения между разными компами… Это всё половинчатые кустарные решения от сохи. Это как лайфхаки «как сделать люстру из бутылки и миски».

Ок. Выбора у нас нет, порой. И я тоже храню какие-то портабельные программы на дропбоксе. Но это не потому, что это идеальный вариант и лучше не придумать, а потому что выбора нет и никто не сделал лучше, а у меня на всё рук не хватит.
И к автору той проги логичная претензия: нужно делать так, чтобы не требовалось уметь пользоваться вашей прогой. Помещение ее в аппстор, например — это хороший кейс.
Какая-то странная претензия: от «автор делает удобно для хранения в дропбоксе» к «в винде не сделали нормальную дистрибуцию ПО».

Ну так автор же не виноват, что в винде не сделали нормальную дистрибуцию ПО! Вот именно поэтому и спасибо автору от нас за счастливую работу софтины из дропбокса. Когда все поголовно программы будут скачиваться обновляться из аппстора, тогда и будем предъявлять претензии, а пока да, вот так.
в винде не сделали нормальную дистрибуцию ПО

Оффициально — нет, но есть Chocolatey и Mahou там есть.

Вот даже не знаю, с чего начать… Т. е., вы предлагаете автору вместе с его мелкой утилиткой для хрен пойми чего заодно втащить целую экосистему дистрибуции софта, которую до сих пор как-то никто не осилил? Если он откажется от портабельности и сделает обязательное сетупыкзэ — это как-то поспособствует?
Я не предлагал ни от чего отказываться. Система дистрибьюции уже есть. Есть майкрософтовский стор. Я не пробовал, может на него трудно попасть?
Правильно сделанный инсталлятор — это тоже довольно удобно. Для автообновления нужно всего лишь скачать свежую версию инсталлятора и запустить на «тихую» установку.
Не хватает только облачного хранения настроек.
Кстати, а почему не вошло в практику хранить настройки приложения на специально выделенном почтовом ящике? Это ж готовое бесплатное облачко для хранения конфигурации и небольшого количества данных.
У меня на рабочем ноуте нет прав админа и установки софта. Портабельный переключатель раскладки — как раз то, что доктор прописал в этом случае.
НЛО прилетело и опубликовало эту надпись здесь
1. Когда можно сделать почти то же самое при меньшем размере — не так уж и плохо.
2. А вы видели сколько ключей в регистре вешает PS? А Mahou все настройки хранит в Mahou.ini, а сниппеты(автозамена) в snippets.txt в папке из которой запущен.
Игнорирование там тоже есть, иначе как бы они делали автоконвертацию?

7. Я говорил об этой функции.
Меня волнует. В своё время специально искал замену Punto, и нашёл её, но тут уже похоже тормоза WinAPI — раскладка переключается не моментально а с тормозами и почему-то иногда с «как-бы зажатым шифтом».
Например очень сильно нужно запоминание layout per window, потому что переключаться тудасуда между MSVS и телеграмом в котором идёт общение на русском — просто тупо задрало.
Во время рендера или процессинга юнити, когда комп стоит раком — переключение занимает до 3-х секунд. Это нонсенс.

Почему софт не может запомнить флаг — в какой он сейчас раскладке, в 2017-м году-то?
НЛО прилетело и опубликовало эту надпись здесь
Не работает. И в 7 не работало.
Несмотря на то что в пунто галка такая есть — «единая раскладка» или индивидуально.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

О! Надо попробовать погонять, а то capslang и похожие переодически приводили к тому, что крэшился lync или outlook.

А у меня крашится сам capslang, но не всегда и только при работающей Android Studio.(
Жалко, что только 2 раскладки поддерживает

Могу добавить в будущем еще.

да, хорошо бы было, для граждан пост ссср пространства актуально, так как нужен русский+ национальный + английский
У меня несколько раскладок на компьютере, две из которых (рус/англ) использую чаще всего.
В Windows поставил переключение по кругу на Alt+Shift (ну, то есть ничего не менял) плюс в Punto / Mahou переключение рус/англ по Caps lock. То есть почти всегда пользуюсь Caps lock, а если нужна редкая раскладка, то уже включается стандартный Windows механизм.
Личное имхо: ставить рус/англ на одну клавишу — не очень хорошая идея, так как нет способа по состоянию клавиши определить какая раскладка активна в данный момент. Или вы смотрите по тому, горит светодиод или нет?
Имхо, разнесение на разные Ctrl (например) лучше в этом плане.
Да, это правда, вопрос привычки.
А ВМЕСТО КАПСЛОКА ШИФТ ДЕРЖИТЕ?
ДА, КСТАТИ, НЕ ТАК ЧТО БЫ СОВСЕМ НЕУДОБНО. Мизинец на шифте, несколько букв пропадает, правда :)
Alt+CapsLock, например. Или другой модификатор.
приделал очистку списка клавиш по кликам мыши

Я правильно понимаю, что если фокус изменился при помощи TAB, то список не очистится?

Я сейчас punto switcher использую только для того, чтобы переключать раскладку по одной клавише. Настроил русский на правый Ctrl, а EN на правый Shift. В вашей программе есть такая возможность?

Да, вот но пока что только для L/R Ctrl.

А при CTRL+click мышью переключение не срабатывает? А то я аналогичное настроил в PS, и ctrl+click тоже переключает раскладку. А хотелось бы, чтобы не переключал.

@coctic Не, не срабатывает.

А для этого нужно что-то специальное включать? А то я скачал последнюю версию (2.1.1.3), настроил Left Control — русская, Right Control — английская, попробовал ctrl+click на ссылке в файрфоксе (чтоб в новом табе открыть), и раскладка переключилась.

@coctic А, понял сейчас исправлю.

@coctic Готово, вот Mahou-v2.1.1.4, проверь.

Здорово, то, что надо, спасибо!
Это то, чего мне так не хватало во всех других переключалках!
Весьма любопытная замена пунтосвитчеру, который пришлось выпилить после появления к нему вопросов. Спасибо!
А каких именно вопросов, если не секрет?

Лично у меня к пунто вопроса два:
— разработчики отказались чинить баг «при перезапуске проводника иконка пунты появляется, даже если в настройках указано её скрывать» (оказалось проще убрать эту настройку совсем, чем исправлять)
— в последней версии мало того, что адово тормозит окно настроек, так невозможно играть в 3D-игры режима «в окне» — ощущение, что у мыши DPI вырастает в разы, малейшее движение даёт поворот камеры чуть ли не на 360 градусов.
А почему вы не занесете свои игры ему в черный писок, чтобы он не работал при них?
Потому что он мне нужен и в играх (в тех, где я активно общаюсь во внутриигровом чате). Проще оказалось откатиться на старую версию и забыть про обновления.

Пожалуй, единственное неоспоримое достоинство пунты перед аналогами — скромные требования (потребляет 3 мегабайта оперативной памяти)
(потребляет 3 мегабайта оперативной памяти)

Если так хотите Я могу сделать чтобы Mahou потреблял ~1МБ ОЗУ когда скрыто главное окно.

Мелочь, но меня расстроило, когда они сделали значок в трее неубираемым.
При этом крайне раздражает, что функцию просто по-тихому выпилили, и в changelog'е об этом ни слова.
Пару минут в программе и уже полезли баги.
Пишу «asdfпрол» выделяю, нажимаю scroll — преобразуется в «фывапрол», хотя по идее должно инвертироваться — «фываghjk».
Набираю несколько букв «z», выделяю, переключаю раскладку на русскую, нажимаю scroll — остаётся одна буква «z». Если вместо латинской буквы набирать русскую и сделать всё по той же схеме, то остаются, иногда две буквы а иногда три. Зависимость пока не выявил.
Если совместить и попытаться конвертировать что-то вроде «йййqqq», то баги суммируются и получается «ййййй» — приводит всё к одному языку и одну букву съедает.
Если написать слово и переключить раскладку, то с помощью pause его уже конвертировать не получится, даже если переключить раскладку обратно. При этом shift+pause работает, хоть и не с первого раза.
Ещё, когда конвертируешь выделенный текст, буфер обмена очищается. Не знаю, баг ли это, или фича, но лично мне это очень мешает.
З.Ы. не знаю почему пропадают одинаковые буквы, но первый баг явно связан с тем, что при конвертации выделенного текста программа ориентируется на текущую раскладку, и пытается текст, написанный в текущей раскладке преобразовать к противоположной. Имхо, при конвертации именно выделенного текста раскладка вообще должна игнорироваться, а всегда должно быть преобразование каждого выделенного символа к символу противоположной раскладки. И, мне кажется, саму раскладку клавиатуры, при этом не нужно переключать. Хотя лучше это сделать опциональным, и вынести в настройки.
Выяснилось, что если снять галочку с CS-Switch то конвертация выделенного начинает работать правильно. И одинаковые буквы в этом режиме не пропадают. В таком виде уже вполне можно пользоваться. Ещё бы очистку буфера как-то отключить.

Очистка буфера восстанавливает пока что только текст. Доступно с версии v1.1.1.0.

Пишу «asdfпрол» выделяю, нажимаю scroll — преобразуется в «фывапрол», хотя по идее должно инвертироваться — «фываghjk».
Это, увы, частый недосмотр у авторов подобных программ. Точно такой же баг в SimpleSwitcher (утилита аналогичного назначения). Поэтому, до сих пор сижу на пунто.

В Mahou есть такая функция — КВ-Ключ+

О, тогда, пожалуй, дам Mahou «второй шанс». Пулл-реквесты, кстати, принимаете? С орфографией в исходниках, локализациях и readme тихий ужас.
Имхо, при конвертации именно выделенного текста раскладка вообще должна игнорироваться, а всегда должно быть преобразование каждого выделенного символа к символу противоположной раскладки.

Да но символы есть в обоих раскладках, именно для них и создан ориентир по текущей раскладке. Подробнее

НЛО прилетело и опубликовало эту надпись здесь
Еще не юзал, но судя по описанию это на порядок лучше чем Punto Switcher. Обязательно порекомендую, после личного испытания.
А версия под Линукс будет?

Может быть когда на Линукс переберусь :)

Писать на дотнете программу, которая всё равно сводится к винапи… Я единственный, кому это кажется довольно странным занятием?

простите, ошибся веткой. это должен был быть отдельностоящий комментарий…
А Вы бы стали и окошки на WinApi рисовать? =)
С таким функционалом как в статье? Запросто. Диалоговое окно, создаётся в любом редакторе ресурсов, и подключается.
Собрать диалог в каком нибудь редакторе ресурсов совсем не проблема.
Тоже хотел про это написать. Тянуть за собой сотни мегабайт фреймворка, чтобы использовать WinAPI.

А так отличная программа. Была раньше похожая, FF12 называлась. Очень нравилась.
Пользовался функцией замены буфера обмена.

Ну это все потому что я хотел:


Все началось с того что я захотел программировать на C#

Поэтому и фреймворк потянул, а так я и в С могу тоже самое написать.

Идея, я считаю, просто замечательная, и давно назревшая! Сам было подумывал об этом, но как-то руки не доходили. Спасибо!

Опробовал, сразу появилось несколько замечаний (позже открою issues на github-е):

  • не работает в консоли (Punto работает)
  • не отрабатывает переключение при написании имен некоторых русских веб-сайтов (в строке адреса браузера), видимо, нужно подправить алгоритм, и учитывать, где идет ввод
  • UI настроек, конечно, не очень — почему бы не скопировать Punto, но, естественно, в своем дизайне?
  • вообще, было бы чудесно перекрыть один к одному всю функциональность Punto (за исключением шпионских функций ;) )
  • не хватает tray иконки с флагами
Хочу попиарить также свою разработку — программу EveryLang
Переключает раскладку в автоматическом и в ручном режиме, сама формирует правила автопереключения.
Работает с любыми установленными в системе раскладками, гибко настраивается и стабильно работает.
Также имеет функцию переводчика, проверки орфографии.
В платной версии есть автозамена текста, менеджер буфера обмена, с возможностью копировать и вставлять текст с помощью только кнопок мыши, дневник ввода текста, индикаторы раскладки на указателе мыши и в позиции текстового курсора, функция smartclick — удобное управление выделенным текстом с помощью только мыши.
Gочему-то e меня что она, что пунто — оба создают новую раскладку (ru-intl) в Windows 10, которая русской является лишь формально. Это очень мешает, но как избавиться от этого эффекта, я не нашел.
Каждый программист должен написать в своей жизни самую крутую убийцу notepad.exe (с)
Хорошо хоть не на deplhi
Да вот смейтесь сколько угодно, а я в своё время не нашёл утилиты, которая бы банально по Caps lock переключалась между двумя раскладками из списка, больше ничего мне не нужно. Вот только Punto switcher. До этого был ещё Arum switcher, но, к сожалению, в Win64 не работает.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, если бы ещё ссылка на программу работала :)
Впрочем, там тоже минус — висит в трее, нельзя убрать, если правильно понял. Но про это пожелание не упоминал, виноват.
Это чем хорошо?
Просто интересно, чем вам так не понравился Delphi, чтобы его заменять на более громоздкий .NET?
Мне оба нравятся, есть еще Visual Basic. Просто «маленький размер, скопировал в dropbox и пользуешься откуда угодно» и «для ее работы нужен .Net 4.0 и выше» немного слух режет.
Я согласен, мне тоже идеологически не нравятся .Net приложения и (отвлеченно) необходимость ставить юзерам по 4 фреймворка, т.к. обратной совместимостью никто не озаботился.

Но если бы программа была написана, например, на Delphi 7, она, учитывая все же не очень богатый функционал, влезла бы в 700 Кб и честно не требовала бы никаких зависимостей.
В 700 это уже с ухищрениями. На обычном VCL такое бы весило 2 ~Мб
Я к тому что если уж дергать именно WinAPI, то из Сей или Сей с плюсами.
Как вариант wxWidgets — довольно легонький фреймворк над WinAPI притом кроссплатформенный
WinAPI вполне себе дёргаются и из паскаля. Поначалу немножко непривычно использовать паскалевский синтаксис для винапи, но привыкаешь.
После того, как писал на Делфи и Лазарус, вполне нормально выглядит
У программ написанных на Delphi 7 есть маленький недостаток, он требует права на запись в C:\ProgramFiles\Borland\Delphi 7
Как встроенное в систему может быть громоздким? И не раскапывайте могилу Delphi, пожалуйста.
НЛО прилетело и опубликовало эту надпись здесь
С 3 раскладками нормально работает? А то, в Punto Switcher нужно Break нажимать 3 раза. Бесит. Была бы возможность в какую раскладку переключать безусловно, или разные сочетания клавиш для перевода в разную раскладку.

Да Mahou может переключать только по выбранным в настройках или по циклу(как Windows) раскладкам.

А вот мой «убийца notepad». Умеет переключать раскладку только по хоткею, переключать раскладку по одной клавише (я пользуюсь правый/левый ctrl), показывать текущую раскладку в мышином курсоре, показывать текущую раскладку цветом рамки окна, показывать текущую раскладку led'ом scroll-lock'а. На чистом c++ без зависимостей.
Можно ли сделать переключение только по Alt?

@popstas С версии 2.0 — можно.

Спасибо, попробую!

У меня пунто не работает с оффисными приложениями на вин10.
Тут чуть лучше, но при попытке сконвертировать выделенный текст в 2016м ворде вылетает…
У меня все работает именно в таком сочетании: Windows 10, Office 2016, Punto (специально вот только что проверил).

@andropol Вылет в приложениях MS-Office уже исправлен с версии 2.1.1.1.

А вот такой вопрос-реквест ко всем убийцам сразу:

в Arum Switcher (лучший из известных мне свитчеров) была киллер-фича (персонально для меня киллер): смена раскладки для всего текста в строке левее (раньше) курсора.
Сколько ни пробовал иных свитчеров, нигде такого не нашел, а жить без нее не могу (очень помогает быстро исправить неверную раскладку в набранной строке, не тратя времени на выделение мышью — набираю я много и постоянно переключаюсь, вот и ошибки случаются оттого нередко)

Есть у вас такое? Ну и скрестить бы с выбором типа конвертации для смешанных (по раскладкам) строк…

Вот в Mahou «Конверт линии» — это оно или просто похоже?
Но хотелось бы, конечно, такое в чистой «бездотнетовой» софтинке.

Конверт линии — конверт нескольких последних введенных слов. А если хотите прям линии:
Удерживая Shift, нажимаете Home, и гор. клавишу конверт выделения в Mahou — готово. Можно конечно программно, но я не думаю что оно прям того стоит.


P.S. Если оч. уж сильно надо то добавлю.

А можно сделать последовательную конвертацию последних слов? Ну т.е. нажал хоткей- конвертируется последнее слово, второй раз нажал — конвертируется второе с конца слово, третье нажатие- третье с конца слово и т.д.

Есть отдельная функция называется конвертация последних нескольких слов см. #15. Нажимаем гор. клавишу нескольких слов, а потом цифрами сколько слов на клавиатуре(не numpad).

Да, но получается сложно =)
Набрал- нажал конвертировать последнее слово, понял, что надо больше слов, опять конвертировать последнее слово, потом нажать конвертировать несколько слов, посчитать их, и нажать цифру…
А так- жми одну и ту же комбинацию до достижения нужного результата. =)

Но это ИМХО- я не настаиваю, что это безусловно будет удобным для всех

Я например всегда знаю сколько слов пишу и между какими меняю раскладку, поэтому этой функцией редко пользуюсь. Но есть еще альтернатива: Зажать Ctlr+Shift и нажимать стрелку влево до последнего слова которое нужно конвертировать, а потом нажать гор. клавишу конвертации выделенного текста.

Добрый день!
После начавшихся глюков с ПС решил попробовать ваше творенье, весьма доволен, хоть и куча непонятных настроек и как сделать автопереключение так и не понял, т.е. при случайном наборе англ буквами хотелось чтобы было автопереключение на русский, в меню вроде как есть эта опция, но так и не переключает и возможно это какая то бага винды 10, потому что причиной перехода с ПС на вашу прогу заставила имена эта причина, при автопереключении раскладки или ручном конвертировании, происходит какой то баг, и переводит тупо в набор символов, пробовал делать тоже самое DotSwitchеr и такая же проблема, какой то глюк к системе, не можете подсказать в какую сторону копать?

Второй вопрос, после таких глюков возникло написать самому что то подобное, и совсем еще новичок в программировании и хочу попробовать один из этих ЯП(Go, Python, (Javascript+Html+css)) для написания подобной переключалки, что можете посоветовать?
как сделать автопереключение так и не понял

Включить сниппеты, потом включить автозамену. (В их вкладках)


происходит какой то баг, и переводит тупо в набор символов

Пример пожалуйста, строку которую конвертировали, чем конвертировали(выделение или последнее)...


попробовать один из этих ЯП

Go! Однозначно будет легче и быстрее.

1.Вроде как все галочки стоят как скрине image image

2. Конкретно в ваше программе так и не получилось воспользоваться автозаменой, речь больше идет о Пунто или ДотСвитчер, там если набирать слово привет англ буквами, то пишется «Ghbdtn» и при автоконвертации происходит непонятное превращение в набор символов, а не в слово привет.

3. Насчет Go, я поискал в тырнете, помоему у него проблемы с Gui библиотеками, до сих пор ничего такого не создано, поэтому все же остановлюсь на веб-технологиях.
Спасибо за быстрый ответ и успехов вам.
  1. А словарь автозамен обновить? Там есть кнопка обновить словарь автозамен, и тогда Words: 0 уже не будет 0.
  2. Да? А как насчет: https://github.com/lxn/walk

P.S. Обычно я быстрее(сразу) отвечаю, просто были проблемы с интернетом.

1. При попытке обновления выдает вот такое «Too big dictionary, it will take a lot time to display, dictionary display disabled.»

2. Нашел ее когда гуглил, по-моему тамошний пример не самый привлекательный имхо.
Too big dictionary, it will take a lot time to display, dictionary display disabled

Это значит что все ок, просто его отображение в Mahou — отключено. Теперь попробуй Ghbdtn. (И не забудь нажать "Применить"!)

И еще про нажать пробел после ghbdtn.

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

Публикации