fmate14
Joined: 28 Oct 2007 Posts: 42 Location: Hungary, Érd
|
Posted: Mon Dec 31, 2007 8:35 am Post subject: Alternate solution |
|
|
| Chris wrote: | | This probably won't be added anytime soon, so it's probably best to look for an alternate solution. I believe the Scripts forum has some keyboard hook and WM_INPUT examples that might help. |
Okay, here is an alternate solution.
| Code: | #NoEnv
#Persistent
#InstallKeybdHook
#SingleInstance force
return
; for ex. *SC015::
keyPress:
ThisHotkey := Substr(A_ThisHotkey, 2)
keyPressNoSet:
if ( 0 ) {
; blah…
} else {
vk := VK%ThisHotkey%
Send {%vk%}
}
return
; Get the virtual key of scan code, because
; SC015::Send {SC015}
; work only with english QWERTY keyboard layout
*VK30:: ; 0
*VK31:: ; 1
*VK32:: ; 2
*VK33:: ; 3
*VK34:: ; 4
*VK35:: ; 5
*VK36:: ; 6
*VK37:: ; 7
*VK38:: ; 8
*VK39:: ; 9
*VK41:: ; A
*VK42:: ; B
*VK43:: ; C
*VK44:: ; D
*VK45:: ; E
*VK46:: ; F
*VK47:: ; G
*VK48:: ; H
*VK49:: ; I
*VK4A:: ; J
*VK4B:: ; K
*VK4C:: ; L
*VK4D:: ; M
*VK4E:: ; N
*VK4F:: ; O
*VK50:: ; P
*VK51:: ; Q
*VK52:: ; R
*VK53:: ; S
*VK54:: ; T
*VK55:: ; U
*VK56:: ; V
*VK57:: ; W
*VK58:: ; X
*VK59:: ; Y
*VK5A:: ; Z
*VKBA:: ; OEM_1
*VKBF:: ; OEM_2
*VKC0:: ; OEM_3
*VKDB:: ; OEM_4
*VKDC:: ; OEM_5
*VKDD:: ; OEM_6
*VKDE:: ; OEM_7
*VKDF:: ; OEM_8
*VKE2:: ; OEM_102
*VKBC:: ; OEM_COMMA
*VKBD:: ; OEM_MINUS
*VKBE:: ; OEM_PERIOD
*VKBB:: ; OEM_PLUS
Critical
ThisHotkey := getScanCodeFromVirtualKey( Substr(A_ThisHotkey, 2) )
goto keyPressNoSet
return
getScanCodeFromVirtualKey(VK)
{
static scancodes := "02,03,04,05,06,07,08,09,0a,0b,0c,0d,10,11,12,13,14,15,16,17,18,19,1a,1b,1e,1f,20,21,22,23,24,25,26,27,28,29,2b,2c,2d,2e,2f,30,31,32,33,34,35,39,56,53,"
curr = ;
Loop, parse, scancodes, `,
{
if ( getKeyState("SC0" . A_LoopField, "P") )
{
StringReplace, scancodes, scancodes, %A_LOOPFIELD%`,, , All
curr := "SC0" . A_LOOPFIELD
break
}
}
if not curr
return VK
Hotkey *%VK%, Off
setGlobal( "VK" . curr, VK )
Hotkey *%curr%, keyPress
return %curr%
}
setGlobal( var, value )
{
global
%var% := value
}
|
This works only, when the default keyboard layout is the active. |
|