0
votes

I am trying to remap Left Alt to Left Win and Left Win to Left Alt in AutoHotKey.

But I also want to have Shift + F11 to toggle these two remaps.

I know I can do:

LAlt::LWin  
LWin::LAlt

but what I can't figure out is the toggle. The following version fails:

Shift & F11::
Hotkey, LAlt, Toggle
Hotkey, LWin, Toggle
return

When I press Shift and F11, it will say:

---------------------------
test.ahk
---------------------------
Error:  Nonexistent hotkey.  The current thread will exit.

Specifically: LAlt

    Line#
    001: Return
    002: SetKeyDelay,-1
    002: Send,{Blind}{LAlt DownTemp}
    002: Return
    002: SetKeyDelay,-1
    002: Send,{Blind}{LAlt Up}
    002: Return
--->    006: Hotkey,LAlt,Toggle
    007: Hotkey,LWin,Toggle
    008: Return
    009: Exit
    010: Exit
    010: Exit

---------------------------
OK   
---------------------------

I've been scratching my head for hours.. Any input will be greatly appreciated!

1

1 Answers

0
votes

I'm sure it is more verbose than necessary, but I just tried this script and it does something like what you're after. It might send you in the right direction, if nothing else.

#NoEnv
SendMode Input

IsRemapEnabled := false
SetRemapEnabled(false)

SetRemapEnabled(toEnabled) 
{
  global IsRemapEnabled := toEnabled
}

+F11::
  SetRemapEnabled(!IsRemapEnabled)
return

LAlt::
  if (IsRemapEnabled) 
  {
    Send,{LWin DOWN}
  } else 
  {
    Send,{LAlt DOWN}
  } 
return

LAlt up::

  if (IsRemapEnabled) 
  {
    Send,{LWin UP}
  } else 
  {
    Send,{LAlt UP}
  } 
return

LWin::
  if (IsRemapEnabled) 
  {
    Send,{LAlt DOWN}
  } else 
  {
    Send,{LWin DOWN}
  } 
return

LWin UP::
  if (IsRemapEnabled) 
  {
    Send,{LAlt UP}
  } else 
  {
    Send,{LWin UP}
  } 
return