1 (изменено: Bolgarchuk, 2014-04-20 17:08:04)

Тема: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Я задавал вопрос на разных ресурсах forum.ixbt.com bestfree.ru/forum и мне посоветовали обратиться на этот.
К сожалению, по видимому моя идея довольно не ординарна, поэтому сразу прошу прощенье за долгое изложение. Как изложить её в двух словах, а  тем более реализовать не нашел. Хотя в то же время она довольно проста и возможно уже, где то реализована.
Хочу к кнопкам мыши присвоить определенные комбинации с клавиатуры.
Но присвоить так, что бы одна кнопка мыши при разном нажатии производила разные  действия.
Просто в качестве примера возьму левую кнопку мыши:
1- нажатие  - стандартная функция (открытие папок, запуск приложений и т.д.)
2 – двойное нажатие – назначить комбинацию Alt+Tab. Но как то так назначить что бы при возникновении меню можно было выбирать между запущенными и открытыми приложениями. Т.е. двойной щелчок левой вызывает меню Alt+Tab  но при запущенном меню одинарный щелчке левой (а возможно и лучше  правой) эмулирует нажатие Tab . А правая (или если правая назначена именно при запуске окна на функцию табуляции, то левая) эмулирует выбор приложения. В общем, что бы при запущенном меню аналогичном Alt+Tab можно было бы быстро с помощью двух клавиш мыши и выбрать нужное окно и перемещаться между запущенными окнами. На первый взгляд это может показаться совершенно бесполезной функцией, т.к. можно просто произвести те же действия с помощью клавиатуры. Но у тех, у кого есть мышь лоджитек с аналогичным меню и настройками могут подтвердить, на сколько это удобнее и быстрее. Особенно если за компьютером приходится долго работать и часто  переключатся между приложениями. Так по пару долей секунд - экономятся часы, которые бы уходили на то, что бы дотянуться до клавиши Alt+Tab  на клавиатуре.
3 – эмуляция зажатия Ctrl. при зажатой все той же левой кнопки мыши.
Т.е. действия при одинарном и двойном щелчке описаны выше, теперь еще можно присвоить какое то действие на  ту же нажатую и удерживаемую кнопку мыши. Это бы дало возможность, зажав кнопку мыши масштабировать, используя колесо прокрутки, не прибегая к нажатию его на клавиатуре. Но повторюсь, если кнопка не зажата, а просто нажата один раз - выполнялась её обычная функция.
Таким образом, в теории можно расширить функционал одной кнопки мыши до как минимум 3х. А если на манипуляторе 2е кнопки, то можно задействовать их сочетание. К примеру: нажатые две кнопки одновременно – сворачивают все окна ( повесить на них Win+D или Ctrl+F ) или любую другую часто используемую комбинацию, или даже жесты мыши с массой различных простеньких комбинаций заданных к примеру в gMote.   Можно так же было бы некоторые сочетания сделать локальными (работающими по разному, в разных приложениях) но описанные мною выше должны быть глобальны (работающие везде вне зависимости от того какое приложение запущено).
Ну это я так привел на вскидку самые основные и нужные возможности.
Можно было бы назначить  на дополнительные кнопки мыши эти и аналогичные часто востребованные функции (быстрое переключение между приложениями и окнами, масштабирование, навигация (вперед назад) и т.д.) Конечно, можно для этого задействовать клавиатуру или вовсе не использовать данные функции. Но когда к ним привыкаешь, особенно если приходится много работать за компьютером, то понимаешь что с ними на много быстрее и удобнее. Данный расширенный функционал был бы полезен не только для мышей с доп. кнопками, но и для тех у кого их навпротив нехватает. К примеру: у меня на работе на одной мыши поломано колесо, так же думал переназначить функцию колеса, к примеру: на двойной щелчке какой то из кнопок. Кстати раньше были мыши и вовсе без колеса прокрутки, и это не кого не смущало, а теперь попробуйте поработать с такой мышью, когда вы привыкли к данной функции. И вы поймете, что почувствовал я когда вместо многофункциональной лоджитек взял в руки «деревянную» гигабитовскую мышь с намного меньшим функционалом.
Для реализации обычного переназначения существуют такие программы как MKey, XMouseButtonControl  а возможно и другие. Не буду очередной раз описывать преимущества и недостатки данных программ. скажу только, что не смотря на их большие возможности именно задача многофункциональности одной и той же кнопки у них проработана очень плохо. И мне её так и не удалось настроить. Присвоив какую то одну комбинацию той или иной кнопки, добавить для неё же другую функцию либо невозможно, либо проблематично.  Другое дело Key Manager – но данная программа к сожалению платная и не смотря на все её удобства она не справилась с задачей.  Хотя может я просто не разобрался или попалась плохая версия (пробовал1.9 Build 312 Portable) или какой то конфликт с другими программами. А возможно просто данные возможности в ней хотя и предусмотрены в отличии от предыдущих,, но работают не корректно.
Часто при настройки, одной кнопки она, почему то уже не срабатывает при комбинации её с другой. К примеру: если я назначил на двойной щелчке левой кнопки мыши клавишу CTRL то одинарный щелчке просто перестает работать. Или если я назначаю комбинацию Alt+Tab на одновременно зажатую и левую и правую кнопку мыши, то почему то Alt+Tab срабатывает при нажатии одной правой кнопки, а левая перестает работать.
Поэтому пока единственная альтернатива AutoHotKey
Это по идеи очень перспективная программа, богатый функционал, возможность сохранения в эхэ, написания скриптов. В общем возможности далеко выходят даже за рамки потребностей описанный, в моей идеи. Но программа сложная, скорей всего рассчитана на опытных программистов. Пока разобрался, как и куда писать код она перестала запускаться. Я её пробовал распаковать в другое место, перезагрузить компьютер. Но она все равно, почему то пишет: «Error at line 34».  и не запускается. Очень странно, т.к. программа простенькая и портативная.  Пока нет времени с ней разбираться, т.к. даже для описание и проработки данных задач убил уже не один день…
Но решил  остановиться именно на данной программе. Хотя для того что бы реализовать данную задачу надо по меньшей мере запустить программу, а потом еще и разобраться в принципе записи кода, задании алгоритма, его проработки и т.д. В общем без сторонней подсказки вряд ли удастся… .Можно было бы попросить кого то за деньги решить данную проблему и создать подобную программу. Но не смотря на то, что идея весьма перспективна, я за неё реализацию платить не стану по двум основным причинам. 1 - с моей зарплатой... только кому то и платить - самому на жизнь не хватает ((.2 – по большому счету можно и обойтись без данной программы, как в прочем и без компьютера в целом.
Просто думал, может, кто сталкивался с данной проблемой и подскажет... Или кому то данная идея понравится и захочет реализовать для собственного пользования, а за одно и поделится с другими – теми, кто её могут улучшить и отработать, исправив ошибки и чем то дополнив.

2 (изменено: bWRmeA, 2014-04-20 18:44:01)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Кто мне ответит, зачем я это прочитал?

После установки файлы с расширением ahk ассоциируются с autohotkey.exe, для запуска скрипта текстовый файл нужно сохранить с этим расширением и дважды кликнуть по его иконке. (ничего необычного)

Если запускать autohotkey.exe, а не скрипт, отобразится предложение создать в документах пользователя файл autohotkey.ahk. В этом файле сохранён демонстрационный скрипт, который не работает если в раскладке клавиатуры по умолчанию нет символа z.

Autohotkey (как и все остальные подобные приложения) использует для переназначения клавиш клавиатурный хук.
Как события клавиш обрабатываются определяется пользователем.

Сторонняя подсказка - читай справку (английскую), задавай конкретные вопросы, не отчаивайся.

3 (изменено: Bolgarchuk, 2014-04-20 21:18:53)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

А не надо было все читать. Я и сам не читал. Хотя, конечно же, не смотря на то, что печатаю быстро, пришлось убить уйму времени на то, что бы сформулировать исчерпывающи свой вопрос и идею. А что бы не читать все могу посоветовать использовать синтезаторы речи, т.к. я тоже медленно читаю, но синтезаторы великолепно справляются с чтением. Так что можно только слушать. Это на много быстрее.
Не совсем понятно про хук z, но удалив файл в моих документах, проблема разрешилась. Поэтому спасибо за ответ.
Сейчас по крохам пытаюсь собрать и понять суть работы программы.
При написании скрипта возникло ряд трудностей, т.к. я не знаю досконально данного языка поскольку только с ним столкнулся. Может кто подскажет?

;1 удержание левой кнопки мыши = удержание контрл (как правильно задать удержание?)
D: LEFT::D: ^

;2 двойное нажатие левой кнопкой мыши вызывает сочетание Alt+Tab и удержание Alt
; вопрос 1 – как задать двойное нажатие?
;вопрос 2 – как задать условие, что после нажатии Alt+Tab идет залипание  Alt которое можно отменить повторным нажатием левой кнопки. И условие что при появлении меню, вызванное Alt+Tab, правая кнопка мыши эмулирует нажатие Tab. Т.е. двойным нажатием левой вызывается Alt+Tab  с залипанием Alt и отменой залипание при повторном нажатии левой. а правая именно в момент при появлении данного меню эмулирует Tab. Реализовать данную возможность для меня очень сложно и пока что я додумался только до такого…

ClickCount 2 LEFT::!{tab}

4

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Просто тяжело всё прочитать. Разбейте задачу на конкретные вопросы.

Итак, вопрос №1?

5 (изменено: Bolgarchuk, 2014-04-20 21:26:31)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Как правильно задать удержание? Читал в мануале для этого надо использовать «D:» но куда его правильно ставить перед LEFT или после? Надо писать «:» или нет? Вот так что ли?
D: LEFT::D: ^
Как не пробовал выдает егор

6 (изменено: stealzy, 2014-04-20 22:53:28)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци


$~LButton Up::
KeyWait, LButton, D T.05 ; .05 = 0.05 это время, если чо
if ErrorLevel {
} else {
  Send {Alt Down}{Tab}
  Sleep 200
  KeyWait, LButton, D
  Sleep 200
  Send {Alt Up}
}
return

Быстрый дабл-клик вызывает меню AltTab.
Ваш ковер ниасилил, прочитал только конец.
Рекомендую скачать еще русскую справку, если по-вражескому непонятно. Она правда устарела, но там все это есть.

7 (изменено: Bolgarchuk, 2014-04-20 21:45:59)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

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

8 (изменено: stealzy, 2014-04-20 21:48:23)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Скопируйте заново ВСЕ, я поправил,
там перед ними должен быть Send

9 (изменено: Bolgarchuk, 2014-04-20 22:10:24)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Работает. Спасибо! Хотя он сложнее чем я думал. По видимому русский мануал действительно уже не поможет.
Может кто подскажет как доделать дальше? А то данного результата я добивался и с помощью XMouseButtonControl просто добавив в него комбинацию {ALT}{TAB}. Теперь бы еще как то настроить что бы возникающим окном можно было управлять, а не только переключаться между двумя приложениями. Как бы именно при открытом меню (вызванным AltTab.) на правую кнопку назначить таб. Но только что бы он работал в меню AltTab. Или еще лучше если бы колесом мыши можно было перемещаться по меню. Но это наверно вобще не реально, т.к. даже не знаю что на них вешать... Но было бы очень удобно.
п.с. т.е. повесить именно при запущенном окне AltTab на прокрутку вперед клавишу Tab а на прокрутку назад ShiftTab Но только что бы они работали в открытом окне вызванном AltTab

10 (изменено: stealzy, 2014-04-20 22:14:10)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

А что, тыкать в выбранное приложение не получается?
У меня мышки нет, за колесо не скажу, но стрелки работают.
Как что? Вешайте таб либо стрелки на mousewheel при открытом окне альтаб.
Вы справку читали? там как раз на колесо вешают перемещение по альтаб.

#If WinActive("...")
...
#IfWinActive

11 (изменено: Bolgarchuk, 2014-04-20 22:30:07)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Получается, но только в выбранное. А выбрать другое не получается. Т.е. у меня открыто 3 папки и 1 приложение. Удается переместится с 1 на 2 (которое выбрано), но не на 3 или 4.
Справку читал но не всю.  А в разделе про мышь не нашел.
Но как я понял надо в вышеприведенный скрипт вписать что то типа:
WheelUp::Send {Tab}
или
WheelUp::{Tab}
WheelDown::{Tab}{Shift}
и как то настроить так, что бы срабатывало только в окне AltTab

12

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Bolgarchuk пишет:

Как правильно задать удержание? Читал в мануале для этого надо использовать «D:» но куда его правильно ставить перед LEFT или после? Надо писать «:» или нет? Вот так что ли?
D: LEFT::D: ^
Как не пробовал выдает егор


Вам нужно циклически выполнять какое-то действие во время удержания клавиши? Или просто дать скрипту понять, что клавиша физически нажата? Или при удержании в течение определённого времени должно запуститься действие?

13 (изменено: stealzy, 2014-04-20 22:50:04)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

1)Раздел справки "Горячие клавиши для мыши, джойстика и клавиатуры".
2)У меня открывается меню альттаб, и в любое окно получается тыкать мышкой.
3)

IfWinExist ahk_class #32771
...Ваша фантазия
IfWinExist

4)И еще рекомендую:http://www.ntwind.com/software/vistaswitcher.html

14 (изменено: Bolgarchuk, 2014-04-20 23:12:41)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

ypppu, да. Надо дать понять, что клавиша нажата.  Т.е. я пальцем нажал и держу левую клавишу мыши, а для компьютера это должно стать нажатой и удерживаемой клавишей Ctrl на клавиатуре. В принципе, что бы не было конфликтов и для конкретности можно было бы поставить и задержку. Т.е. срабатывание Ctrl не сразу а к примеру через 0,2 сек. А то я боюсь что другие возможности тогда не будут доступны. К примеру: уже сейчас я нажимаю Ctrl  и скрипт  stealzy перестает работать. Отпускаю – работает. Надеюсь задержка поможет.
stealzy интересная программа попробую. Хотя хотелось бы что бы для вышеописанных функций не пришлось устанавливать еще одну программу. Так что попробую доработать предложенный вами скрипт, а не получится тогда буду ставить программу

15 (изменено: stealzy, 2014-04-21 00:02:02)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Замените $~LButton Up:: на *$~LButton Up::
и прочитайте наконец справку. За сим откланиваюсь
http://www.script-coding.com/AutoHotkey/Hotkeys.html
Еще кажется на ру-борде качал локальный файл .chm
Вот .chm:http://yadi.sk/d/1V814vZBMrVyB

16 (изменено: Bolgarchuk, 2014-04-21 00:29:35)

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

stealzy

Раздел справки "Горячие клавиши для мыши, джойстика и клавиатуры".

Странно. Что то не найду не как. Это где то  в темах главной или на этой странице в файле wsh_chm.zip?
В спавке на форуме как то проще написано. А в данном файле для меня сложновато... Ни там ни там раздела "Горячие клавиши для мыши, джойстика и клавиатуры" пока не нашел. Если не затруднит то можете тать ссылку. Ну уже там в следующий раз может...
п.с. Спасибо так же нашел в файле Script-Coding-Collection-19-20120210.zip (12 484 875). Буду изучать.

Пока настроил так XButton2::#F12 в связки с  программой Manage Windows and Switch Tasks Easier
Кстати спасибо! Отличная программа. Но все же позже подумаю как настроить #F12 на двойное нажатие левой. Пока даже присвоить #F12 двойному нажатию не удалось. Да и вопрос с Ctrl не решен... Но это я уже мануал почитаю может разберусь. Хотя не откажусь от совета

17

Re: AHK: Подскажите как с помощью AutoHotkey можно реализовать многофункци

Автор, внимательно изучай мануалы в 15 посту, вначале пробуй сам, не выходит, выкладывай сюда свои примеры обязательно под тегом code, тогда помогут, направят в правильное русло.
Я поиском нашел вашу тему, особенно заинтересовал наболевший мне вопрос про Alt+tab, уже 3й день мучаюсь и не добиться положительного результата, а с первого взгляда было все очень просто, свои страдания я допишу вскоре здесь.