PDA

Просмотр полной версии : Changer - программа-транслятор


topic
27.11.2007, 01:42
В процессе саморазвития у меня получилась такая себе софтина. Делал для себя т.к. жалко своих трудов и терпеть не могу стирать и набирать текст заново только потому, что забыл переключить раскладку, а слепым набором не владею. Вот решил поделиться. Может быть кому еще пригодится.
Прошу оценить. Если народу понравится, то буду развивать проект дальше, только подсказывайте, чего бы еще добавить. Если найдете какие-то баги тоже пишите.
Кратко о программе:
"Changer с легкостью переведет ваш текст, набранный в неправильной раскладке или с ошибочно включенным CapsLock, в то что должно было быть. Она тихонько висит в трее и ждет когда вы нажмете определенную комбинацию клавиш, т.н. "горячую клавишу"...
Более подробно я все расписал на сайте программы и не вижу смысла переносить все сюда. Посмотрите пожалуйста и скажите свое мнение.
http://www.gold-page.narod.ru

Borland
27.11.2007, 20:56
Сразу бросается в глаза, что автор наступил на грабли, схожие с теми, что были у предпоследнего билда PuntoSwitcher, а именно - "захват" стандартной клавиатурной комбинации...
Сочетание клавиш Crtl-X, насколько мне известно, подавляющим количеством ОС (хотя в данном случае более чем достаточно любой Windows) и офисных программ воспринимается как "вырезать текст в буфер обмена".
Даже если в результате не возникнет глюков (а у Punto с Shift-Ins возникли, и весьма серьёзные), сомневаюсь, чтобы кто-то из пользователей захотел переучиваться на использование альтернативного Shift-Del или мыши...

До кучи: Ctrl-N - "Создать новый документ" или "Открыть новую вкладку" (в браузере); Ctrl-U - переключает режим подчёркивания шрифта в текстовых процессорах; Ctrl-E - выравнивание текста по центру страницы, Ctrl-R - по правому краю (в Word). Ctrl вообще весьма задействованная клавиша...

Опять же, предлагая какую-никакую альтернативу Punto Switcher и Keyboard Ninja, надо бы делать упор на то, чем она лучше существующих и раскрученных брендов. Меня терзают смутные сомнения, что "ещё один Notepad" не лучше оригинального имеет шанс "на завоевание места под Cолнцем"...

FantomIL
27.11.2007, 21:31
Добавлю еще, что и Punto Switcher и Keyboard Ninja умеют переключать раскладки "на лету". Таким образом не приходится производить лишних манипуляций с выделениями и горячими клавишами.
Автору предлагаю добавить в программу опцию переключения "на лету" и, кроме того, обратить взгляд на людей, имеющих на клавиатуре три и более языка.

topic
28.11.2007, 12:15
"захват" стандартной клавиатурной комбинации...
Не вижу в этом никаких "граблей". Все горячие клавиши можно назначить по своему вкусу. Не нравится Ctrl - никто не мешает сменить его на Alt, а то и на Ctrl+Alt+Shift+кнопка. Я, допустим, этими комбинациями не пользуюсь, поэтому и выбрал их. Считаете нужно сменить? Какие комбинации вы бы предпочли?
...предлагая какую-никакую альтернативу Punto Switcher и Keyboard Ninja, надо бы делать упор на то, чем она лучше существующих и раскрученных брендов
С этим абсолютно согласен. Как-то не подумал об этом. Спасибо за подсказку.
Чем моя прога лучше? Насколько я помню PuntoSwitcher транслирует только последнее слово. Changer - любой выделенный фрагмент, будь-то одна буква в слове или целый роман.
Автору предлагаю добавить в программу опцию переключения "на лету"
Таким образом не приходится производить лишних манипуляций с выделениями и горячими клавишами.
Да, спасибо за предложение. Начал работать над этим.
Вы считаете это действительно необходимым? Я читал много отзывов людей в которых они пишут, что отключают переключение "на лету" и работают только в ручном режиме. И опять же, такое переключение на лету может транслировать только последнее слово. А если вы пишите например "я хороший мальчик" то скорее всего "я" так и останется нетранслированым и лишних телодвижений не избежать. Плюс добавится проблемма с вводом паролей, что очень нервирует. Как лучше это реализовать? Как дать понять проге, что сейчас будет вводится пароль и транслировать в этом окошке не нужно? Предварительным нажатием определенной клавиши? По моему несколько неудобно. Может подскажете другое решение?
обратить взгляд на людей, имеющих на клавиатуре три и более языка.
Три языка там уже есть: русский, украинский и английский. Это те которыми я пользуюсь. Какие еще добавить? Предлагайте, а постараюсь добавить.

Да, у меня еще вопрос. Переключение на лету я хочу реализовать путем перехвата нажатия клавиш и анализа комбинаций букв, как у Punto. Это практически готовый клавиатурный шпион. Можно все нажатые кнопки записывать в лог и потом смотреть. Конечно же с возможностью включения/выключения этой функции. Реализовать это? Как думаете оно там нужно?

Borland
29.11.2007, 00:01
Насколько я помню PuntoSwitcher транслирует только последнее слово. Changer - любой выделенный фрагментPunto совершенно спокойно работает с любым выделенным фрагментом. Автоматическое переключение - да, по последней введённой комбинации символов (не обязательно слово целиком, например Цш всегда автоматом переключается на Wi, поскольку в русском языке такое сочетание символов не встречается).
Вообще говоря, было бы полезно посмотреть что уже есть у конкурентов... ;-)
Не вижу в этом никаких "граблей". Все горячие клавиши можно назначить по своему вкусу. Не нравится Ctrl - никто не мешает сменить его на Alt, а то и на Ctrl+Alt+Shift+кнопка.Настраиваемость - штука весьма полезная. Но нестандартное использование стандартных комбинаций в умолчальной настройке на мой взгляд всё-таки зло: иногда приходится садиться за чужой комп, иногда пускать кого-то за свой, и неожиданная реакция на стандартную комбинацию при этом мягко говоря нервирует...
Какие комбинации вы бы предпочли?Вот так сходу - используемые той же Punto. Она, в некотором роде, уже стала стандартом.
много отзывов людей в которых они пишут, что отключают переключение "на лету" и работают только в ручном режимеНо большинство всё равно работает с включением этого режима. Естественно, не надо делать его неотключаемым.
Как дать понять проге, что сейчас будет вводится пароль и транслировать в этом окошке не нужно?Возможно, "подсмотреть" в программе описание элемента управления. В описании окошка с паролем обычно присутствует "PASS" (а также функция отображения вводимого текста звёздочками). Горячая клавиша тоже не помешает.
Три языка там уже есть: русский, украинский и английский. Это те которыми я пользуюсь. Какие еще добавить?
Может быть не распыляться (все языки добавить всё равно не удастся), а реализовать языки в качестве подключаемых модулей/словарей с открытым API (естественно, внятно документированным) и позволить всем желающим самостоятельно создавать/дорабатывать модули?

Возможно,стОит сделать вообще программу с базовым минимумом функциональности, а всё остальное сделать в виде модулей (как, например, Miranda IM, FAR, TC)? Тогда каждый соберёт себе конструкцию сообразно личным потребностям из готовых/самописных модулей.
Опять же, если нет каких-то специфических соображений, кроссплатформенный продукт (Win32/Win64/MacOS/Linux) с открытыми исходными кодами (как минимум - Plugins API)имеет значительно бОльшие шансы на успех (а опыт, приобретённый при совместной разработке ПО - просто бесценен)!
Кейлоггер, если всё-таки задумаешь его делать, должен быть обязательно отключён по умолчанию (как "Дневник" у Punto), а лучше всего - вообще вынесен в отдельный модуль, не входящий в основную поставку - иначе траблы с антивирусным ПО обеспечены.

Также неплохо бы реализовать в программе прямую и обратную транслитерацию текста. И работу с текстом в буфере обмена.

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

Разделение программы на модули, повторюсь, сильно упростит добавление новых функций (не обязательно своими силами). А также даст пользователю возможность не ставить "монстрообразный комбайн", половиной функций которого половина пользователей не воспользуется никогда, там, где требуется 1-2 из множества функций.

P.S. Разработчикам Punto, если они это увидят, также рекомендую задуматься о "модулизации"... :biggrin:

FantomIL
30.11.2007, 20:53
А если вы пишите например "я хороший мальчик" то скорее всего "я" так и останется нетранслированым и лишних телодвижений не избежать Да нет, поскольку после я идет пробел, то программа должна знать, что слова z в английском языке нет.
Предварительным нажатием определенной клавиши? По моему несколько неудобно Ну а почему нет? ИМХО, достаточно функционально и удобно.
Три языка там уже есть: русский, украинский и английский. Это те которыми я пользуюсь. Какие еще добавить? Предлагайте, а постараюсь добавить. Я так думаю, что программа ориентированна на рускоговорящих бывших граждан СССР. Соответственно надо добавлять языки тех стран, где их количество наибольшее. Навскидку: русский, английский, украинский, немецкий, иврит, испанский.
Возможно,стОит сделать вообще программу с базовым минимумом функциональности, а всё остальное сделать в виде модулей (как, например, Miranda IM, FAR, TC)? Тогда каждый соберёт себе конструкцию сообразно личным потребностям из готовых/самописных модулей. +1

topic
30.11.2007, 21:36
Пока работаю над прогой по мере возможности, т.к. конец месяца и как обычно на работе завал. Только прошу тему не спешите удалять, как две предыдущие что здесь были. Я обязательно покажу что получилось.
И по ходу дела вопрос такого плана..
Как-то мне не очень нравится нажимать какую-то комбинацию клавиш перед вводом пароля для того чтобы прога не транслировала автоматом набираемый текст. Зачем лишние телодвижения? Я думаю как.. Все окна для пароля имеют маску. Правильно? Как узнать имеет ли активное окно маску или нет? Есть такой способ?
И еще вопрос.. По какому принципу лучше реализовать автоматическое переключение? Так как в punto на основе исключений, или прицепив словари, как по моему предположению работает keyboard ninja (или я ошибаюсь?)?

Borland
30.11.2007, 23:11
topic, на самом деле, насколько мне известно, и пунто, и нинзя автоматом переключают и по исключениям, и по словарю.
Как узнать имеет ли активное окно маску или нет? Есть такой способ?Windows API.
Если control не самописный, то используются вполне специфические вызовы API.
И/или сравнивай перехваченный ввод с отображаемым текстом. Если не совпадают (замена на *) - явно окно ввода пароля.