- Visual Studio – собственно, софт, обычно три-четыре разных solution
- SourceSafe – версионирование.
- Outlook
- Skype
- Total Commander – файлы, файлы.
- Internet-Explorer – планирование софта, мониторинг продвижения по проекту, doxygen документация и т.д.
- Word, Excel – список задач, протоколы заседаний, требования к проекту, быстрое построение графиков и т.д.
- PowerPoint – презентации для менеджмента.
- Notepad++ — просмотр промежуточных результатов, конфиги, и т.д.
- CAE soft наш – тестовая и основная версия.
- CAE soft других фирм – для тестов
В итоге мне каждый день приходится пользоваться кучей разных программ. У каждой программы свой единственный и неповторимый графический интерфейс. А у каждого интерфейса шорткатов либо вовсе нет, либо они свои, единственные и неповторимые, которые мне запомнить нереально.
В итоге весь мой рабочий день – это постоянное метание между мышкой и клавиатурой:
- Мышка: открыть документ, пролистать,
- Клавиатура: написать три-четыре строчки.
- Мышка: нажать на кнопку, переместиться в другую программу, нажать на кнопку
- Клавиатура: в появившемся окне написать 2-3 значения.
- Мышка: отрыть другое окно. Нажать на кнопку. Выбрать пункт меню. Потом пункт в под-меню. Потом в под-под-меню. Клик! Новое окно!
В один прекрасный момент моя правая рука сказала: «Извини, хозяин, но что-то нагрузка для меня великовата». Кисть болела почти два месяца, сначала слабо, потом все сильнее. В итоге я купил вертикальную мышку, выучил побольше шорткатов в Visual Studio и перешел на Total Commander.
Теперь рука не болит, но проблема с мышкой осталась. Не знаю, как вам, но мне не нравится это постоянные движения слева направо, чтобы схватить мышку, и справа налево, чтобы вернуться обратно к клавиатуре. Мышка в компьютерах 1981 года, прошло уже больше тридцати лет, и с тех пор почти ничего не изменилось.
Ни одна из стандартных альтернатив мышке мне не нравится: PointStick (пипка в центре клавиатуры для ноутбуков), тачпад, графический планшет – у всех либо точность плохая, либо все равно надо дергать руку с клавиатуры.
Есть еще программы и железо для трекинга глаз, вроде Camera Mouse или Tobii Eye Trackers. Честно, тратить сотню баксов на Tobii Eye Tracker не хотелось, а Camera Mouse очень плохо распознавало положение глаз (подозреваю, что виноваты мои очки).
Программа CameraTablet
В итоге я решил писать софт сам, благо веб-камера есть всегда. Идея простая: превратить часть клавиатуру в графический планшет. По шорткату камера начинает отслеживать положение указательного пальца и перемещать мышку в соответствующее место на экране, еще пара шорткатов – эмуляция левой и правой кнопки мыши. Вот видео, как это примерно работает.
Как сделан CameraTablet
Писать программу я решил в Python, якобы на этом языке очень быстро можно разрабатывать прототипы. Самое забавное, что в итоге CameraTablet получилась очень небольшим. Больше всего времени понадобилось, чтобы понять, как opencv распознает образы. Плюс немного пришлось повозиться, чтобы найти нормальный скрипт для эмуляции мыши. В остальном благодаря массе библиотек на Python удалось довольно быстро сделать все, что хотелось. Что мне понадобилось в итоге:
- opencv
- распознавание пальца на видео
- сохранение файла с фотографией пальца
- калибровка камеры
- keyboard – обработка горячих клавиш
- TkInter — пять кнопок для GUI.
Единственная более-менее математическая проблема с которой я столкнулся – как вычислить позицию курсора на экране, если известно расположение пальца. Палец перемещается внутри неравностороннего четырехугольника, а курсор движется внутри прямоугольного экрана. Так что проблема сводится к проекции произвольного четырехугольника на прямоугольник. Получилось, хоть и не с первой попытки, но довольно неплохо.
Что дальше
В настоящий момент программа работает стабильно. Точности хватает для того, чтобы переключаться между окнами и выбирать пункты меню.
Фич, которых на данный момент нет, но которые очень хочется сделать:
- Поддержка нескольких мониторов
- Эмуляция MouseDown und MouseUp (необходимо для выделения текста)
- Поддержка Linux
И тут наступил самый тяжелый момент, когда самое вкусные 20% дела уже сделаны, а в одиночку дальше пилить 80% не хочется. Тогда я и решил, что пришла пора все выложить на GitHub, благо я давно мечтал сделать что-нибудь open source. Буду очень рад, если кто-нибудь захочет принять участие проекте (тестирование, программирование, документация – все, что угодно). И, конечно, было бы интересно послушать мысли на тему интерфейсов человеко-машинных интерфейсов вообще и альтернативы мышам в частности.
Комментарии (15)
zuborg
20.06.2017 15:19+3Ни в коем случае не сочтите за придирку, но
http://www.cameramouse.org/
https://www.codeproject.com/Articles/498193/Mouse-Control-via-Webcam
https://fingermouse.codeplex.com/
…
это только первое, что гуглится по запросу «virtual mouse via webcam»
А так идея отличная )dmitry_vlas
20.06.2017 18:07+1Спасибо за ссылки, с Гуглом я, похоже, гораздо хуже вас умею обходиться.
https://fingermouse.codeplex.com/ — очень похоже на то, что я хотел, жаль, что я раньше о них их не знал.
Camera Mouse я пробовал, но там заточено под целевую аудиторию другую: надо пытаться двигать мышку глазами, что меня совсем не устроило: у меня очки выдают сильные блики и точность была маленькая. Как из нее сделать графический планшет — я не понял.
https://www.codeproject.com/Articles/498193/Mouse-Control-via-Webcam — Там попытка отслеживать все пять пальцев, как я понимаю, то есть опять же не планшет. Но знал бы я о ней раньше — глядишь, не пришлось бы в паре мест изобретать велосипед, можно было посмотреть, как это там реализовано.
И спасибо за теплые слова про идею. Может, получится что-нибудь хорошее из этого.RogerHudson
21.06.2017 21:45Спасибо за опен сорс!
Указанные выше решения из гугла
а) не на питоне — мне интересно было взглянуть на питон солюшн
б) разной степени сложности как по установке и пониманию, так и по возможностям
А тут просто, четко и по делу
x893
20.06.2017 16:21Классно!
Я просто запомнил быстрые клавиши. Мышь не нужна — вообще.IvanTamerlan
20.06.2017 17:56не работает для:
1) новой программы, особенно, если программа будет использоваться короткое время (тестирование). Сюда еще редкие сочетания (т.е. редко используются)
2) нескольких программ с разными быстрыми клавишами (больше программ — больше противоречивых сочетаний)
3) скорость позиционирования и неполная клавиатура (ноутбучная. Сейчас вообще за нетбучной, там даже Home/End и других подобных клавиш нет).
4) физическое отсутствие быстрых клавиш (постоянно наталкиваюсь на такие программы, особенно в случаях, когда команду надо повторить 5-10 раз).
tyderh
20.06.2017 19:13Ни одна из стандартных альтернатив мышке мне не нравится: PointStick (пипка в центре клавиатуры для ноутбуков), тачпад, графический планшет – у всех либо точность плохая, либо все равно надо дергать руку с клавиатуры.
Эмм, у point-stick плохая точность? Что? Тензомитрический джойстик наоборот отличается точностью указания.
Долгое время пытался переходить на специализированный софт, в т.ч. ви-подобные режимы в браузере. Но все-таки переход на trackpoint решил все мои проблемы.dmitry_vlas
21.06.2017 21:45Может быть, мне не везло с point-stick или у меня руки кривые. По моим воспоминаниям (дело было пятнадцать лет назад на ноуте IBM) выглядело это так: палец на пипку, жмем, ждем, пока курсор доползет до кнопки на экране, потом курсор переполз через кнопку, жмем обратно. Может, прогресс не стоит на месте? Можете порекомендовать удобные клавиатуры с пипкой?
tyderh
22.06.2017 08:01Использовал thinkpad x220/x230/x250 — трекпоинт очень точный, подобной проблемы нет. Настолько точный, что играл на нем в Stellaris часами подряд без каких-либо неудобств, а там контролы довольно маленькие.
Использовал Dell Latitude E6430 — трекпоинт сильно менее удобный, но подобной проблемы все равно нет.dmitry_vlas
26.06.2017 22:14Жаль, что это ноуты, мне для тестов дороговато выйдет. Попробую, наверное, заказать клавиатуру с пипкой, сообщу о результатах при случае :)
Am0ralist
27.06.2017 12:41а клавиатуры с тачпадами вместо цифрового блока не пробовали (в том числе вариант, когда сам тачпад может служить цифровым блоком)?
Pinsky
27.06.2017 15:41Есть еще клавиатуры с трекболами.
Я, в принципе, поступил проще — купил клавиатуру без цифрового блока и трекбол.Am0ralist
27.06.2017 16:57Ну у меня так-то и отдельный тачпад есть, но с переездом на ноут он стал не настолько нужен.
А еще есть сенсорные накладки на экран.
То есть вариантов — много, просто интересно пробовал ли автор другие варианты)
PS. Вспомнил клавиатуру с тачпадом снизу нее и искренним желанием понять, с помощью чего же именно дизайнер планировал там управлять курсором)))
michael_vostrikov
21.06.2017 15:22удалось довольно быстро сделать все, что хотелось
Как два пальца распознать)
PS: задумка хорошая
Pinsky
Если выкрасить ноготь в яркий цвет стабильность повысится)
Vadimio
А если разные ногти в разные цвета — мультитач