1

Тема: AHK:Как назначить сочетание клавиш на одну кнопку?

Подскажите я не совсем разобрался в этой программе.
Скажем у меня есть сочетание клавиш Alt+Ctrl+F и я хочу чтоб это все происходило при нажатии "G".
Как можно это сделать?

2 (изменено: Странникх, 2014-07-17 17:06:12)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

vk0x47::!^vk0x46

Виртуальные key-коды можно найти здесь - http://msdn.microsoft.com/en-us/library … s.85).aspx
P.S.: Если нужно, чтобы еще и G посылалась, то следует добавить ~ перед запускаемой клавишей.

3 (изменено: s20, 2014-07-17 17:48:38)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Спасибо! но такая загвоздка.
Сделал так

VK0x45::VK0x10^VK0x43,

Сочетание клавиш
Shift+Ctrl+C

Но в программе не происходит нужного действия.

4

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

!  = Alt
+ = Shift
^ = Ctrl

Если нужно сделать физический зажим и отжим, то тогда так:

#InstallKeybdHook
#NoEnv

vk0x45::
{
Send {vk0xA0 Down}{vk0x11 Down}{vk0x43 Down}
sleep, 50 ; Здесь можно указать время в миллисекундах на сколько подождать перед выполнением дальше кода
Send {vk0xA0 Up}{vk0x11 Up}{vk0x43 Up}
}
Return

Или так:

#InstallKeybdHook
#NoEnv

vk0x45::Send {vk0xA0 Down}{vk0x11 Down}{vk0x43 Down}{vk0xA0 Up}{vk0x11 Up}{vk0x43 Up}
Return

В теории должно работать, на практике не проверял.

5

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Пасибо огромное! Божественная программа! А можете еще подсказать? Как можно сделать чтоб для каждый программы уникальные хоткеи назначить.

6

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

s20 пишет:

Как можно сделать чтоб для каждый программы уникальные хоткеи назначить.

Это как?
Если нужно, чтобы в ПРОГЕ1 с кнопки G выполнялось ДЕЙСТВИЕ1, а в ПРОГЕ2 с кнопки G выполнялось ДЕЙСТВИЕ2, то можно сделать, например, так:

#InstallKeybdHook
#NoEnv

vk0x45::
IfWinActive, ПРОГА1
{
Send {vk0xA0 Down}{vk0x11 Down}{vk0x43 Down}
sleep, 50 ; Здесь можно указать время в миллисекундах на сколько подождать перед выполнением дальше кода
Send {vk0xA0 Up}{vk0x11 Up}{vk0x43 Up}
}

IfWinActive, ПРОГА2
{
Send ^+{vk0x1B}
}
Return

IfWinActive - если активно окно (название).

7 (изменено: s20, 2014-07-18 10:46:22)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Если можете разъясните пожалуйста на пальцах ото, я в этом не селен.
Вот что  у меня получилось.

#InstallKeybdHook
#NoEnv

IfWinActive,  3ds Max 2014
{
TAb::MouseClick, Left,
CapsLock::MouseClick, Right,

#NoEnv ------ Shift+Ctrl+C Фаска
VK0x45::+^VK0x43
}

IfWinActive, Firefox
{
#NoEnv ------ Muse прокрутка мыши
VK0x51::WheelUp 
VK0x41::MButton 
VK0x5A::Wheeldown
}
Return

Но все равно все хоткеи срабатывают и 3ds Max и Firefox. А мне хотелось бы разделить и будет скажем фотошоп.

8

Re: AHK:Как назначить сочетание клавиш на одну кнопку?


#IfWinActive,  3ds Max 2014 

Tab::MouseClick
CapsLock::MouseClick, Right 
vk45::+^vk43 

#IfWinActive, Firefox 

vk51::WheelUp 
vk41::MButton 
vk5A::Wheeldown 

#IfWinActive
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui
+ s20

9

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

#IfWinActive, Firefox
Должно быть точное  название программы?

10

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

параметр WinTitle

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

11 (изменено: s20, 2014-07-18 11:48:57)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Я видел, но я не смог разобраться как нужно формировать код.

12 (изменено: serzh82saratov, 2014-07-18 11:55:34)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Такого параметра как "название программы" нет.
Есть заголовок окна, класс окна, имя процесса или полный путь к процессу окна http://ahkscript.org/docs/misc/WinTitle.htm#ahk_exe
Например параметр WinTitle для окна блокнота, может выглядеть как один из этих вариантов:

  • Безымянный — Блокнот ahk_class Notepad ahk_exe notepad.exe

  • Безымянный — Блокнот ahk_class Notepad ahk_exe C:\Windows\System32\notepad.exe

  • Безымянный — Блокнот

  • Безымянный — Блокнот ahk_class Notepad

  • ahk_class Notepad

  • ahk_exe notepad.exe

Например если задать его как только заголовок "Firefox", то возможно совпадение с окном например проводника, в котором открыта папка Firefox. Теперь разобрались?
И так как заголовок окна часто меняется, то лучше задавать как класс и ехе:

ahk_class Notepad ahk_exe notepad.exe
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13 (изменено: s20, 2014-07-18 13:01:30)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Я не пойму почему все равно эти хоткеи срабатывают везде.
PS. Кажется разобрался..

14 (изменено: Indomito, 2014-07-18 13:24:37)

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

По сути то всё просто, т.е. очень просто Вот пример

+ открыть спойлер
;-----BEGIN--Для SIMS 3 
#If vGameKey && WinActive("The Sims™ 3")
SetTitleMatchMode, 2

LShift & ESC::
Send {F5}
return

RShift & Enter::
Tab::
Send {n}
Enter::
MouseClick, right, 20, 910
MouseMove, 620, 475
Sleep, 700
MouseClick, WheelUp, , , 6
return

#IfWinActive
;-----END--Для SIMS 3

Те между кодом

#If vGameKey && WinActive("The Sims™ 3")
SetTitleMatchMode, 2

и кодом

#IfWinActive

пишем нужные клавиши/сочетания, действия и т.д.


Переменная vGameKey позволяет динамически отключать эти действия, вот ёё код

+ открыть спойлер
GameKeyOnOff:
if (!vGameKey)
  {
  msgbox 1,Switching Game Keys,Игровые клавиши = OFF `n `nВКЛючить игровые клавиши? ,10
  IfMsgBox, Cancel
      return
    else
      vGameKey := true    
  }
 else
  {
  msgbox 1,Switching Game Keys,Игровые клавиши = ON `n `nВЫКЛючить игровые клавиши?,10
  IfMsgBox, Cancel
      return
    else
      vGameKey := false      
  } 
return

Можеш её убрать из конструкции #If WinActive и получим код

+ открыть спойлер
;-----BEGIN--Для SIMS 3 
#If WinActive("The Sims™ 3")
SetTitleMatchMode, 2

; Действия при активном окне приложения

#IfWinActive
;-----END--Для SIMS 3

SetTitleMatchMode, MatchMode
MatchMode = 1 Заголовок окна должен начинаться со значения, заданного в WinTitle
MatchMode = 2 Заголовок окна должен содержать значение, заданное в WinTitle
MatchMode = 3 Заголовок окна должен совпадать со значением, заданным в WinTitle

Думаю я дал полный ответ на все вопросы.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

15

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Indomito, Спасибо вроде разобрался)! Только один еще вопрос, а можно как-то кнопку задействовать там где символы (~`ё) в списке Virtual-Key Codes, я ее не нашел.

16

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Вот скрипт и для кнопок, и для WinTitle (так сказать).

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

17

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

serzh82saratov, пасибо за подсказки. Черт офигенская программа, почему о ней все молчат.

18

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

serzh82saratov "о птичках"
Это вроде бы твоё произведение

+ VkScCode64.ahk
#Persistent
  OnExit, Exit
   ToolTip
   hHookKeybd := DllCall("SetWindowsHookEx"
      , Int, WH_KEYBOARD_LL := 13
      , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
      , Ptr, DllCall("GetModuleHandle", UInt, 0, "Ptr")
      , UInt, 0, "Ptr")
   Return

^#ESC:: 
Exit:
   DllCall("UnhookWindowsHookEx", Ptr, hHookKeybd)
   ToolTip
ExitApp
 
LowLevelKeyboardProc(nCode, wParam, lParam)
{
   Critical
   SetFormat, Integer, H
   ToolTip, % wParam . "| vkCode: " . NumGet(lParam+0, 0, "UInt") . " scCode: " . NumGet(lParam+0, 4, "UInt")
      . " Extended: " . NumGet(lParam+0, 8, "UInt") & 1 . " Time: " . NumGet(lParam+0, 12, "UInt")
   Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
}

Правда я внёс не значительные правки.
1. Мне нужно, что бы она не оставалась резидентной
2. Я её хочу использовать как подпрограмму функцию, т.е. что бы она возвращала коды нажатия

Все мои попытки потерпели фиаско, но мне нужна именно она и именно в такой реализации.
Помоги мне, если можешь, а то я замучался.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

19

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

s20 пишет:

serzh82saratov, пасибо за подсказки. Черт офигенская программа, почему о ней все молчат.

ей все пользуются, просто надо немного поискать по форуму

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

20

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

+ OffTop:
Indomito пишет:

Все мои попытки потерпели фиаско, но мне нужна именно она и именно в такой реализации.
Помоги мне, если можешь, а то я замучался.

В коде AhkSpy есть даже ссылка на тему для обсуждления этого (несформулированного) вопроса:


    ; _________________________________________________ Hotkey Functions _________________________________________________

    ;  http://forum.script-coding.com/viewtopic.php?pid=69765#p69765

А также на то, что авторство клавиатурного хука принадлежит не мне:



    ;  http://forum.script-coding.com/viewtopic.php?id=6350

Hotkey_LowLevelKeyboardProc(nCode, wParam, lParam)   {
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

21

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Прочёл всё до конца и ничего не понял, т.е. запутался ))))
Мне то нужно просто vk и sc одной клавиши и один раз без модификаторов , но так что бы скрипт можно было выгрузить...
Там я просто запутался...
Сорри

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

22

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Indomito
Видимо спойлер под названием "OffTop" и эта фраза

есть даже ссылка на тему для обсуждления этого (несформулированного) вопроса:

имеют большую степень прозрачности намёка на:

Правила форума пишет:

2. Запреты

2.1. Запрещаются оффтопики (сообщения не по теме ветки

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

23

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Сергей... ок(уяснил намёк)

С уважением, Александр.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

24

Re: AHK:Как назначить сочетание клавиш на одну кнопку?

Я продолжу в этой теме?
Есть задача в стеке модификаторов Copy и Pasteтить.
в Махе не получается назначить хоткей на эту штуку.
Можно ли как-то скриптом AutoHotkey реализовать.
Я просто не знаю по какому принципу строки AutoHotkey нужно прописывать.(хотяб какойнить пример)
http://cs624417.vk.me/v624417601/859a/VfX_9Z_Wqoo.jpg