I'm looking for a way to turn On/Off caps lock depending if a program is active or not. All my text is UPPERCASE in autocad, so I would like to have capslock turn on as soon as it's active, and when any other window is activated it would turn off.
; AutoCad Not Active Reset Capslock
#IfWinNotActive AutoCAD
SetTitleMatchMode 2
SetCapsLockState,Off ; Doesn't work
Send {SetCapsLockState,Off} ; Doesn't work
Send {CapsLock} ; Doesn't work
; Autocad Setup
#IfWinActive AutoCAD
SetTitleMatchMode 2
MButton::MButton
XButton1::^+c
^LButton::^v
Thanks in advance
Here is some code I use:
AutoCapsAcad()
#h::
{
Gui, Add, Text,, Caps Lock disabled
Gui, Add, Text,, Ctrl+Caps Lock = Caps On/Off
Gui, Add, Text,, Win+L turn off Caps before locking workstation
Gui, Show
}
Return
; Disable Caps Lock
Capslock::Return
; Ctrl+Caps Lock = Caps Lock
^Capslock::Capslock
;Win+L turn off Caps Lock before locking workstation
#l::
{
SetCapsLockState, off
DllCall("LockWorkStation")
}
Return
#Persistent
AutoCapsAcad()
{
Loop
{
WinGet,WID1,ID,A
isActive1 := isAcadRelated(WID1)
If isActive2 && !isActive1
SetCapsLockState, off
Else If !isActive2 && isActive1
SetCapsLockState, on
Sleep, 200
WinGet,WID2,ID,A
isActive2 := isAcadRelated(WID2)
If isActive1 && !isActive2
SetCapsLockState, off
Else If !isActive1 && isActive2
SetCapsLockState, on
}
}
isAcadRelated(WinID)
{
RetVal = 0
WinGet ProcessName,ProcessName, ahk_id %WinID%
If (ProcessName = "acad.exe")
{
RetVal = 1
}
Return %RetVal%
}