MCP

пятница, 24 апреля 2009 г.

Прокачиваем мышь 2

Продолжение предыдущего поста.

Креатив продолжился, и я понял, что незадействованы было движение мыши, при нажатой четвёртой кнопке. После небольшого brainstorm'а, оказалось что это действие замечательно подходит для перетаскивания окон. За любую часть! Без захвата фокуса!

Другими словами, сидите вы работаете, сзади торчит окно, и хотите вы его подвинуть, чтобы увидеть нужную информацию, но переключаться с текущего не хочется. Зажимаете четвёртую кнопку на том окне, и тащите его куда надо. Красота.

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

Из интересных моментов при написании данной программы, было замечено, что некоторые программы не реагируют на команду закрытия (WM_CLOSE), зато реагируют на команду вида "тебе на крестик нажали" (WM_SYSCOMMAND), даже если у них нет крестика.


Пока креатив иссяк, вроде бы всю кнопку замучал, и сделал всё необходимое для управления окон. Но кто его знает... Вдруг он опять появится, и я ещё что-нить придумаю. 

среда, 22 апреля 2009 г.

Прокачиваем мышь

Давно я не писал тут, ну да ладно. Не до умных технических постов было. А тут появился повод.

Повод случился вчера, когда я решил поправить функциональность стандартных драйверов Майкрософта для мышки. Вообще, на это всё меня натолкнула программа моего коллеги Vista Keys Extender. Программа весьма интересная, наверняка кому-нить будет полезная, ибо позволяет управлять окнами с клавиатуры "как в семёрке".

Но я для управления окнами уже давно использую мышку. А именно, одну из боковых кнопок (которая по дефолту "Back") переназначаю на сворачивание окна. Весьма удобная вещь для меня, — посмотрел окно, мгновенно свернул, пошёл работать дальше. Очень полезно для всякой почты/миранды и прочего, чего не требуется для постоянной работы, а является своего рода "попапами".

В стандартных драйверах мне сильно не нравились две вещи:

  • Сворачивается активное окно, а не то, над которым мышка
  • Проблемы с программами, написанными на Delphi (там очень оригинальная концепция окон, из-за чего они сворачиваются совершенно безумно, как MDI).

Это я поправил, повесив собственный хук на нажатие данной кнопки, а дальше задумался. Собственно, почему кнопки мыши практически не используются как модификаторы? Т.е. нажатие одной, за редкими исключениями никак не влияет на другую? Дальше пошёл креатив, и появились следующие комбинации, начинающиеся с того, что нужно нажать четвёртую кнопку, и:

  • Отпустить: свернётся окно, находящееся под курсором
  • Покрутить колесо вниз: развёрнутое окно станет нормальным, нормальное — свернётся.
  • Покрутить колесо вверх: нормальное — развёрнется. Логично продолжить про свёрнутое, но его ведь нет . Так что нечему разворачиваться. Хотя в определённых ситуациях всё будет. Я постарался.
  • Нажать правую кнопку: свернутся все окна
  • Нажать левую: закроется текущее
  • Нажать среднюю: компьютер заблокируется

Дальше я ещё не придумал, завёл практически всё что можно на данную функцию. Конечно, остался ещё горизонтальный скроллинг, который можно завести на сдвиг окон, но он встроен только в Висту. А в XP он эмулируется драйверами. Т.е. работать будет не везде. Правда лучше чем ничего, надо будет это ещё обдумать.  

К чему я написал весь этот пост? Ну конечно же, похвастаться, как же без этого. Но также хочу обратить внимание на то, что была бы идея, а реализовать её можно просто и получить от этого удовольствие и удобство. Да и то, что мышка совершенно не используется по максимуму. На всё это у меня ушло всего пара часов, не больше. Часть времени при этом я просто потратил на идеи, а не на написание кода. Но за два часа сделать полезную, хотя бы для себя, вещь — это уже хорошо.


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