Тема: AHK: запись клавиши в переменную
Можно ли сделать так чтоб при нажатии любой клавиши она добавилась в переменную
Например:
D::
Добавилось впеременную кнопка D, и далее мы используем её.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Можно ли сделать так чтоб при нажатии любой клавиши она добавилась в переменную
Например:
D::
Добавилось впеременную кнопка D, и далее мы используем её.
Встроенная переменная A_ThisHotkey хранит название последнего хоткея или строки автозамены.
P.S.: Отредактируй название темы - АНК:
BashkaMen, повышайте грамотность, знаки препинания Вам помогут.
Типа так:
D::
MsgBox , вы нажали %A_ThisHotkey%А можно несколько клавиш записать? Например при активации начать и при деактивации завершить, а пот при активации пишет то что было нажато.
BashkaMen, нельзя до тех пор, пока не исправите заголовок.
Плявилась идея:
1button :=%A_ThisHotkey%
2button :=%A_ThisHotkey%
Zanoza, в этом случае будеть показывать только "D"
А мне нужно что б Активация была с любой клавиши и оно сказало какую мы нажали. Впринцепи можно сделать так.
d:: msgbox, вы нажали d
s:: msgbox, вы нажали s
ну и так далее...
Zanoza, в этом случае будеть показывать только "D"
<...>
Серьёзно?
s::
d::
msgbox, вы нажали %A_ThisHotkey%
Return
Господа, ведь на форуме есть уже давно готовые наработки на эту тему:
SetBatchLines -1
SetFormat, IntegerFast, H
OnExit, Exit
hHookKeybd := DllCall("SetWindowsHookEx" . (A_IsUnicode ? "W" : "A")
, Int, WH_KEYBOARD_LL := 13
, Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
, Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
, UInt, 0, Ptr)
Return
Exit:
DllCall("UnhookWindowsHookEx", Ptr, hHookKeybd)
ExitApp
LowLevelKeyboardProc(nCode, wParam, lParam)
{
Critical
IF (wParam = 0x100 || wParam = 0x104)
ToolTip % "вы нажали: " GetKeyName("vk" NumGet(lParam+0, 0, "UInt") "sc" NumGet(lParam+0, 4, "UInt"))
Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam)
}
или "попроще для новичка":
SetBatchLines -1
Buttons := "LAlt|RAlt|LCtrl|RCtrl|LShift|RShift|LWin|RWin|"
. "vkBA|vkBB|vkBC|vkBD|vkBE|vkBF|vkC0|vkDB|vkDC|vkDD|vkDE|vk41|vk42|vk43|vk44|vk45|vk46|vk47|vk48|vk49|"
. "vk4A|vk4B|vk4C|vk4D|vk4E|vk4F|vk50|vk51|vk52|vk53|vk54|vk55|vk56|vk57|vk58|vk59|vk5A|"
. "vkC1|vkC2|vkDF|vkE1|vkE2|vkE6|vkE3|vkF0|vkF2|vkF3|vkF5|vkF6|vkF7|vkF8|vkF9|vkFE|vk2B|vk6C|"
. "AppsKey|Backspace|CapsLock|Del|Down|End|Enter|Esc|Home|Left|Pause|PgDn|PgUp|PrintScreen|Right|ScrollLock|"
. "Space|Tab|Up|0|1|2|3|4|5|6|7|8|9|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24|"
. "Break|Clear|CtrlBreak|Help|Insert|Numlock|Numpad0|Numpad1|Numpad2|Numpad3|Numpad4|Numpad5|Numpad6|Numpad7|Numpad8|Numpad9|"
. "NumpadAdd|NumpadClear|NumpadDel|NumpadDiv|NumpadDot|NumpadDown|NumpadEnd|NumpadEnter|NumpadHome|NumpadIns|"
. "NumpadLeft|NumpadMult|NumpadPgDn|NumpadPgUp|NumpadRight|NumpadSub|NumpadUp|Sleep|"
. "Browser_Back|Browser_Favorites|Browser_Forward|Browser_Home|Browser_Refresh|Browser_Search|Browser_Stop|Launch_App1|"
. "Launch_App2|Launch_Mail|Launch_Media|MButton|Media_Next|Media_Play_Pause|Media_Prev|Media_Stop|"
. "Volume_Down|Volume_Mute|Volume_Up|MEDIA_NEXT_TRACK|MEDIA_PREV_TRACK|LAUNCH_MEDIA_SELECT|"
. "WheelDown|WheelUp|WheelRight|WheelLeft|XButton1|XButton2"
Loop, Parse, Buttons, |
Hotkey, ~%A_LoopField%, Buttons, UseErrorLevel
return
Buttons:
ThisHotkey := SubStr(A_ThisHotkey, 2)
ToolTip % "вы нажали: " InStr(ThisHotkey, "vk") ? GetKeyName(ThisHotkey) : ThisHotkey
return
BashkaMen
Поправьте всё таки ещё раз заголовок
AHK: запись клавиши в переменую
на
AHK: Запись клавиши в переменную
serzh82saratov, без #Persistent скрипт, который не "для новичка", становится практически неуловимым.
Irbis мне фиолетово.
Irbis мне фиолетово.
В каком смысле? Irbis имел в виду, что без #Persistent скрипт завершится моментально, дойдя до первого Return.
Господа, ведь на форуме есть уже давно готовые наработки на эту тему:
SetBatchLines -1 SetFormat, IntegerFast, H OnExit, Exit hHookKeybd := DllCall("SetWindowsHookEx" . (A_IsUnicode ? "W" : "A") , Int, WH_KEYBOARD_LL := 13 , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast") , Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr) , UInt, 0, Ptr) Return Exit: DllCall("UnhookWindowsHookEx", Ptr, hHookKeybd) ExitApp LowLevelKeyboardProc(nCode, wParam, lParam) { Critical IF (wParam = 0x100 || wParam = 0x104) ToolTip % "вы нажали: " GetKeyName("vk" NumGet(lParam+0, 0, "UInt") "sc" NumGet(lParam+0, 4, "UInt")) Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam) }или "попроще для новичка":
SetBatchLines -1 Buttons := "LAlt|RAlt|LCtrl|RCtrl|LShift|RShift|LWin|RWin|" . "vkBA|vkBB|vkBC|vkBD|vkBE|vkBF|vkC0|vkDB|vkDC|vkDD|vkDE|vk41|vk42|vk43|vk44|vk45|vk46|vk47|vk48|vk49|" . "vk4A|vk4B|vk4C|vk4D|vk4E|vk4F|vk50|vk51|vk52|vk53|vk54|vk55|vk56|vk57|vk58|vk59|vk5A|" . "vkC1|vkC2|vkDF|vkE1|vkE2|vkE6|vkE3|vkF0|vkF2|vkF3|vkF5|vkF6|vkF7|vkF8|vkF9|vkFE|vk2B|vk6C|" . "AppsKey|Backspace|CapsLock|Del|Down|End|Enter|Esc|Home|Left|Pause|PgDn|PgUp|PrintScreen|Right|ScrollLock|" . "Space|Tab|Up|0|1|2|3|4|5|6|7|8|9|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24|" . "Break|Clear|CtrlBreak|Help|Insert|Numlock|Numpad0|Numpad1|Numpad2|Numpad3|Numpad4|Numpad5|Numpad6|Numpad7|Numpad8|Numpad9|" . "NumpadAdd|NumpadClear|NumpadDel|NumpadDiv|NumpadDot|NumpadDown|NumpadEnd|NumpadEnter|NumpadHome|NumpadIns|" . "NumpadLeft|NumpadMult|NumpadPgDn|NumpadPgUp|NumpadRight|NumpadSub|NumpadUp|Sleep|" . "Browser_Back|Browser_Favorites|Browser_Forward|Browser_Home|Browser_Refresh|Browser_Search|Browser_Stop|Launch_App1|" . "Launch_App2|Launch_Mail|Launch_Media|MButton|Media_Next|Media_Play_Pause|Media_Prev|Media_Stop|" . "Volume_Down|Volume_Mute|Volume_Up|MEDIA_NEXT_TRACK|MEDIA_PREV_TRACK|LAUNCH_MEDIA_SELECT|" . "WheelDown|WheelUp|WheelRight|WheelLeft|XButton1|XButton2" Loop, Parse, Buttons, | Hotkey, ~%A_LoopField%, Buttons, UseErrorLevel return Buttons: ThisHotkey := SubStr(A_ThisHotkey, 2) ToolTip % "вы нажали: " InStr(ThisHotkey, "vk") ? GetKeyName(ThisHotkey) : ThisHotkey return
сделал такой большой код, а он всё равно делает так как этот:
d::
s::
msgbox, %A_ThisHotkey%
return
он записует одну букву и отображает её, а надо чтоб, при активации начел запись цифр, букв, знаков, и после дективации перестал записывать, а аж потом при другой активации выложил те слова, цифры...
serzh82saratov пишет:Irbis мне фиолетово.
В каком смысле? Irbis имел в виду, что без #Persistent скрипт завершится моментально, дойдя до первого Return.
teadrinker
Пардон, времени небыло вчера расписать мысль.
Я то знаю что Persistent там необходим, но не попал он в мой огрызок кода, а скорее обрезалось
Esc::ExitAppиз твоей темы. Я про то, что новичёк должен спросить почему код незапустился, но так как в 90% случаев, все коды пишутся в вакуум, я сказал что мне фиолетово, запустится он или нет. Irbis в который раз спасибо, всё подметил как всегда, фраза ни в коем случае не в его адрес, а скорее в пустоту.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться