Page 1 of 2

madmouse

Posted: Fri May 06, 2011 11:00 am
by popovpa
Здравствуйте!

Хочу выразить огромную благодарность Sourcerer, без его кода программы бы не было!

Описание: при достижении края экрана, левого или правого, курсор "перескакивает" на противоположный край, очень удобно у кого тачпад.

Т.к. это моя первая программа для Колибри да и вообще первая программа на ассемблере, прошу не бить :)

В архиве программа и исходник.

Re: madmouse

Posted: Fri May 06, 2011 11:40 am
by art_zh
Очень хороший код, так держать!
И с комментариями всё в порядке - программа отлично читается.

Теперь попробуй запустить одновременно 2 (лучше 3) раза эту программу - нет будет ли между ними конфликта ?
И еще надо продумать как удобнее выключать этот режим (иногда нужна "твёрдая" граница экрана).
Может повесить какую-нибудь кнопку на панель задач?

Re: madmouse

Posted: Fri May 06, 2011 1:25 pm
by popovpa
Я вообще считаю что этот функционал надо встроить в драйвер мышки, и уже от туда включать или выключать, просто реально удобно и когда привыкаешь садишься за чужой компьютер так этого не хватает...

Надо попробовать, я как-то не думал над тем что кому-то захочется запустить несколько экземпляров...:)

В программе используется 1 переменная, можно ли от неё как-то избавиться, например хранить данные в стеке? Что можно посоветовать, думаю что 1 переменная на такую программу слишком расточительно :)

Re: madmouse

Posted: Fri May 06, 2011 3:11 pm
by Albom
На панель задач сейчас лучше ничего не навешивать (я имею в виду кнопки). Код там и так запутанный... Хотя можно дописать обработчик ещё одной горячей клавиши, при нажатии на которую данная программа либо запускается, либо завершается.

Re: madmouse

Posted: Fri May 06, 2011 3:34 pm
by SoUrcerer
Ну так это в коде самой программы же?Я ничего не путаю?

Re: madmouse

Posted: Fri May 06, 2011 4:14 pm
by Albom
Можно и в коде самой программы. Но тогда её нужно запускать либо вручную, либо из авторана.

Re: madmouse

Posted: Fri May 06, 2011 4:54 pm
by dunkaist
popovpa,
молодец! Для начала очень хорошо.

Рекомендую обратить внимание на файл /programs/macros.inc. Там есть много удобных и полезных фич. Например, такой код:

Code: Select all

mov     eax,5
mov     ebx,1
int     0x40
можно заменить таким:

Code: Select all

mcall   5,1
Удачи в дальнейшей разработке!

Re: madmouse

Posted: Fri May 06, 2011 9:22 pm
by popovpa
В первоначальном коде Sourcerer были макросы, но у меня к ним что-то не лежит душа, может со временем конечно же буду пользоваться, но сейчас...

У меня в Windows тоже есть madmouse в нём тоже нет интерфейса и за много лет эксплуатации ни разу не понадобился, да и отключать приходилось всего 1 раз когда играл в Сибирь, там какой-то глюк был уже и не припомню...а так всётаки я склоняюсь к внедрению такой фичи в драйвер в котором уже и регулировать включение через галочку или ini файл...

Re: madmouse

Posted: Fri May 25, 2012 12:55 am
by Mario
Программа перекидывает только по горизонтали (между крайним левым и крайним правым положением), если сделать прекидывание по вертикали (между крайним верхним и крайним нижним положением), то программ будет полноценной и ее можно будет залить на SVN и включить в сборку.

Re: madmouse

Posted: Fri May 25, 2012 2:19 pm
by popovpa
Хорошо, постараюсь сделать!

Re: madmouse

Posted: Tue May 29, 2012 12:09 pm
by popovpa
Ну вот, благодаря Марату (Mario)...новая версия программы. Нумерацию не ввожу..думаю это излишнее. Прошу более опытных программистов взглянуть на код, если будет время, и дать рекомендации по оптимизации...СПАСИБО!

Re: madmouse

Posted: Tue May 29, 2012 12:25 pm
by Leency
Насчёт оптимизации я увидел вот: mov ebx,0 -> xor ebx,ebx
Никогда до этого подобной программой не пользовался, но по ощущениям весьма приятно, хоть и не обычно. На больших мониторах может быть неплохой профит.

Re: madmouse

Posted: Wed May 30, 2012 1:40 am
by Rock_maniak_forever
Можно сделать так:

Code: Select all

cmp	ecx,0 можно заменить на test  ecx,ecx

Code: Select all

mov	ebx,1 можно заменить на xor  ebx,ebx
                              inc   bl

Code: Select all

mov	eax,37 можно заменить на xor  eax,eax
                               mov  al,37
Так, код будет быстрее и короче.

Re: madmouse

Posted: Wed May 30, 2012 1:48 am
by Mario
Короче? Возможно! Быстрее? Не факт. А вообще - преждевременная оптимизация корень многих бед.

Re: madmouse

Posted: Wed May 30, 2012 2:02 am
by Rock_maniak_forever
Вообще скорость зависит от проц-а, но то, что данные инстр. короче - факт (сам проверял).

Code: Select all

mov	ebx,eax можно заменить на push eax
                                pop  ebx