Ну коли пошло такое дело ( Топик 1, Топик 2 )
В конце-концов IT-шный ресурс же, может напишем программу сами совместными усилиями?
Ибо ни AML, ни Punto многим не нравятся, а другие поделки не дотягивают даже до этих программ.
Далее буду говорить под win, ибо ее я апи я наиболее хорошо знаю. Если ктото может сделать тоже самое под MAC / *NIX — милости прошу сюда же в комменты.
Что получается по общему обсуждению:
Предлагаю сделать на чистом C / C++ и WinAPI — ибо шустро будет и просто — ну это на мой взгляд.
Варианты с реакцией на переключение предлагаю реализовать плагинами — бОльшая свобода для творчества и удобство для конечного пользователя. Под win в виде dll с оговоренными функциями.
Теперь размышления:
п1 как сделать — более-менее понятно. проблемы — скорее всего придется инжектироваться в процесс — хз как под 7 и вислой будет себя вести.
п2 плохо представляю алгоритм ибо как-то надо понимать начало набора конец + желательно автопереключение реализовать как в пунто => надо знать алгоритм автопереключения еще.
п3 вариант таков — попытаться получить данные текущего системного курсора мыши для текста, наложить на него значок и установить. Вроде должно прокатить.
п4 а вот с каретом — не знаю — мож у кого есть опыт? ибо изменить то его не сложно, но во первых это опять инъекция, во вторых оно там хитро както обрабатывается при WM_PAINT — надо успевать гасить каретку и показывать потом ее снова… Опять же мож был у кого опыт?
Есть еще вариант — не изменять карет в соответствии с языком, а определять его экранные координаты, и рисовать рядышком индикатор — мне кажется даже более удобно будет.
п5-п6 как сделать — вполне ясно. Как вариант еще одного плагина можно предложить OSD, как в телевизорах.
Т.е. в общем случае я так понимаю надо будет все равно решать все это через хуки. Непонятно только как быть с инъекциями — а без них по моему опять не обойтись.
Что думаете, господа IT-шики? Кто имел опыт общения на низком уровне с GUI под виндой и другими ос?
P.S. В комментариях подсказали:
В конце-концов IT-шный ресурс же, может напишем программу сами совместными усилиями?
Ибо ни AML, ни Punto многим не нравятся, а другие поделки не дотягивают даже до этих программ.
Далее буду говорить под win, ибо ее я апи я наиболее хорошо знаю. Если ктото может сделать тоже самое под MAC / *NIX — милости прошу сюда же в комменты.
Что получается по общему обсуждению:
- смена раскладки выделенного текста
- смена раскладки набираемого текста
- иконка текущей раскладки должна выводится в позиции курсора мыши
- иконка текущей раскладки должна выводится в позиции каретки
- иконка текущей раскладки должна выводится в плавающем окошке со стилем TOPMOST, чтобы можно было ее где-нибудь закрепить
- При смене раскладки можно зажигать определенные лампочки / кидать данные в порт / или чтото еще
Предлагаю сделать на чистом C / C++ и WinAPI — ибо шустро будет и просто — ну это на мой взгляд.
Варианты с реакцией на переключение предлагаю реализовать плагинами — бОльшая свобода для творчества и удобство для конечного пользователя. Под win в виде dll с оговоренными функциями.
Теперь размышления:
п1 как сделать — более-менее понятно. проблемы — скорее всего придется инжектироваться в процесс — хз как под 7 и вислой будет себя вести.
п2 плохо представляю алгоритм ибо как-то надо понимать начало набора конец + желательно автопереключение реализовать как в пунто => надо знать алгоритм автопереключения еще.
п3 вариант таков — попытаться получить данные текущего системного курсора мыши для текста, наложить на него значок и установить. Вроде должно прокатить.
п4 а вот с каретом — не знаю — мож у кого есть опыт? ибо изменить то его не сложно, но во первых это опять инъекция, во вторых оно там хитро както обрабатывается при WM_PAINT — надо успевать гасить каретку и показывать потом ее снова… Опять же мож был у кого опыт?
Есть еще вариант — не изменять карет в соответствии с языком, а определять его экранные координаты, и рисовать рядышком индикатор — мне кажется даже более удобно будет.
п5-п6 как сделать — вполне ясно. Как вариант еще одного плагина можно предложить OSD, как в телевизорах.
Т.е. в общем случае я так понимаю надо будет все равно решать все это через хуки. Непонятно только как быть с инъекциями — а без них по моему опять не обойтись.
Что думаете, господа IT-шики? Кто имел опыт общения на низком уровне с GUI под виндой и другими ос?
P.S. В комментариях подсказали:
- часто используется автозамена — чем я тоже пользовался — забыл просто, так что тоже полезная функция
- отключение в полноэкранных приложениях
- для автопереключения сделать правила, в каких приложениях не срабатывать