1

Тема: AutoHotkey: Начинающему разработчику - Печатаю виртуальными кодами

Использование виртуальных кодов вместо имён рекомендуется для тех клавиш, имена которых меняются при смене раскладки клавиатуры (языка ввода). Это все буквенные клавиши. На русском они обозначаются одной буквой, на английском - уже другой, а виртуальный код всегда один и тот же.

Автор примера - F1-12. Дальше авторский текст.

--------------------------------------------------------

В помощь начинающему разработчику: Печатаю сразу виртуальными кодами

Мне помогает в моих ежедневных экспериментах следующий простенький скрипт. Надеюсь, поможет и вам:

$Esc Up:: Send, {Esc}
Esc & vk30:: Send, vk30
Esc & vk31:: Send, vk31
Esc & vk32:: Send, vk32
Esc & vk33:: Send, vk33
Esc & vk34:: Send, vk34
Esc & vk35:: Send, vk35
Esc & vk36:: Send, vk36
Esc & vk37:: Send, vk37
Esc & vk38:: Send, vk38
Esc & vk39:: Send, vk39
Esc & vk41:: Send, vk41
Esc & vk42:: Send, vk42
Esc & vk43:: Send, vk43
Esc & vk44:: Send, vk44
Esc & vk45:: Send, vk45
Esc & vk46:: Send, vk46
Esc & vk47:: Send, vk47
Esc & vk48:: Send, vk48
Esc & vk49:: Send, vk49
Esc & vk4A:: Send, vk4A
Esc & vk4B:: Send, vk4B
Esc & vk4C:: Send, vk4C
Esc & vk4D:: Send, vk4D
Esc & vk4E:: Send, vk4E
Esc & vk4F:: Send, vk4F
Esc & vk50:: Send, vk50
Esc & vk51:: Send, vk51
Esc & vk52:: Send, vk52
Esc & vk53:: Send, vk53
Esc & vk54:: Send, vk54
Esc & vk55:: Send, vk55
Esc & vk56:: Send, vk56
Esc & vk57:: Send, vk57
Esc & vk58:: Send, vk58
Esc & vk59:: Send, vk59
Esc & vk5A:: Send, vk5A
Esc & vkBA:: Send, vkBA
Esc & vkBB:: Send, vkBB
Esc & vkBC:: Send, vkBC
Esc & vkBD:: Send, vkBD
Esc & vkBE:: Send, vkBE
Esc & vkBF:: Send, vkBF
Esc & vkC0:: Send, vkC0
Esc & vkDB:: Send, vkDB
Esc & vkDC:: Send, vkDC
Esc & vkDD:: Send, vkDD
Esc & vkDE:: Send, vkDE
Esc & vkDF:: Send, vkDF
Esc & vkE2:: Send, vkE2

Т.е. чтобы получить виртуальный код клавиши (притом в том виде,  с которым работает AHK), следует всего лишь, удерживая ESC, нажать на нужную клавишу.

Сделан только для "букв", поскольку "буквенные" клавиши - самая стабильная часть клавиатуры и поэтому их целесообразно и достаточно задавать через виртуальный код.

2

Re: AutoHotkey: Начинающему разработчику - Печатаю виртуальными кодами

Пара примеров использования виртуальных кодов.

vk59:: Send, {vk53}  ; Нажатие на Y посылает нажатие и отпускание S.
                     ; Обратите внимание на фигурные скобки.

+^vk51::             ; Shift-Ctrl-Q
  Send, {vk57 Down}  ; Нажатие W.
  Sleep, 1000
  Send, {vk57 Up}    ; Отпускание W.
Return

F11:: Send, ^{vk43}  ; Посылается комбинация Ctrl-C.

vk45::vk52           ; Переназначение (remapping) клавиш E и R.

Если нажатия посылаются в какое-то текстовое поле, то появляющаяся там при этом буква будет зависеть от языка, на который переключено окно, - точно так же, как при реальном нажатии на клавишу. Если же надо послать именно букву, скажем, вставить в текстовый редактор русскую букву Ы, независимо от языка окна редактора, то букву и нужно посылать, а не виртуальный код.

vk59:: Send, Ы  ; Нажатие на Y посылает букву Ы.

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

3

Re: AutoHotkey: Начинающему разработчику - Печатаю виртуальными кодами

Скрипт для наблюдения - отображает информацию о нажатых клавишах в правом верхнем углу экрана и позволяет скопировать эту информацию в буфер. После запуска скрипта включение и выключение режима наблюдения осуществляется с помощью PrintScreen.

#NoEnv 
Process Priority,,High 
SetBatchLines -1 

#InstallKeybdHook 
SetKeyDelay 0,0 
#KeyHistory 25      
Width  = 400         
Height = 550        
TopCut = 280     

PrintScreen:: 
   shown := !shown 
   If (!shown) { 
      SetTimer RThistory, OFF 
      WinHide ahk_id %KHID% 
      Return 
   } 
   KeyHistory 
   WinGet KHID, ID, %A_ScriptFullPath% - AutoHotkey v 
   WinSet AlwaysOnTop, ON, ahk_id %KHID% 
   WinSet ExStyle,-0x80, ahk_id %KHID% ; removes window from the alt-tab list 
   WinSet Region,% "W" Width " H" Height " 4-" TopCut, ahk_id %KHID% 
   WinMove ahk_id %KHID%,,% A_ScreenWidth-Width, -TopCut 
   SetTimer RThistory, 500 
Return 

RThistory: 
   WinGet ID, ID, A                   
   ControlSend,,{F5}, ahk_id %KHID%  
   WinActivate ahk_id %ID%           
Return

Благодарность за публикацию - Softoed.

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