我想在 Windows XP 中切换 Ctrl 和 Alt 键。我创建了一个包含以下内容的 AutoHotKey 脚本:
LAlt::LCtrl
RAlt::RCtrl
LCtrl::LAlt
RCtrl::RAlt
这很管用,但唯一的问题是 Alt-Tab 切换器卡住了。当我松开 Alt-Tab 时,窗口切换器会一直保持打开状态,直到我按下另一个键或单击鼠标。
有谁知道如何解决这个问题?
答案1
这对我有用:
; First, swap LAlt and Ctrl
LAlt::Ctrl
; This reverts the Alt+Tab behavior
^Tab::
Send, {LAlt Down}{Tab}
ReleaseLAlt(10000)
; The purpose of this function is to release the LAlt key
; Without this, the LAlt key will be stuck
ReleaseLAlt(timeout := "")
{
startTime := A_Tickcount
while (isaKeyPhysicallyDown("LAlt"))
{
if (timeout && A_Tickcount - startTime >= timeout)
Send, {LAlt Up} ; Took too long
sleep, 50
}
Send, {LAlt Up}
}
isaKeyPhysicallyDown(Keys)
{
if isobject(Keys)
{
for Index, Key in Keys
if getkeystate(Key, "P")
return key
}
else if getkeystate(Keys, "P")
return Keys ;keys!
return 0
}
答案2
我想切换 Alt 和 Ctrl,因为我目前是 Windows 上的 Mac 用户(使用 PC 键盘)。Mac 上的所有热键:Cmd+n、Cmd+w ... -> PC:Ctrl+n、Ctrl+w 和 Cmd 与 Alt 键位于同一位置。
我找到了一个不太完美的解决方案:
将所有字母映射如下:
LAlt & a::Send {LCtrl Down}{a}{LCtrl Up}
...
LAlt & z::Send {LCtrl Down}{z}{LCtrl Up}
LCtrl & a::Send {LAlt Down}{a}{LAlt Up}
...
LCtrl & z::Send {LAlt Down}{z}{LAlt Up}
并且您将保留 Alt+Tab 和 AltGr 功能
这是我的完整实现(不完整):http://www.pastie.org/1660132
答案3
我也在寻找同样的东西,并找到了一些不需要插件或其他程序就可以工作的东西。您可以使用注册表来实现如这里所述。
或者,只需创建 2 个 reg 文件。首先是用于将 Ctrl 键切换到 Alt 的文件。
switch_ctrl-to-alt.reg
这会将必要的密钥添加到注册表中。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1D,00,38,00,38,00,1D,00,00,00,00,00
然后将 Alt 切换回 Ctrl 键的文件。
switch_alt-to-ctrl.reg
这将从注册表中删除必要的密钥。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=-
双击 reg 文件后,需要重新启动,然后就好了。
答案4
如果你是 Mac 用户(或者即使你不是),你也可能思考你想交换 Control 和 Alt,但也许你真正需要的只是交换
Alt-A 到 Alt-Z 以及一些额外的键(箭头、[ 和 ])。
尝试一下,出于测试目的,我只在 Chrome 中激活它。
#IfWinActive ahk_exe chrome.exe
![::Send !{Left}
!]::Send !{Right}
!a::Send ^a
!b::Send ^b
!c::Send ^c
!d::Send ^d
!e::Send ^e
!f::Send ^f
!g::Send ^g
!h::Send ^h
!i::Send ^i
!j::Send ^j
!k::Send ^k
!l::Send ^l
!m::Send ^m
!n::Send ^n
!o::Send ^o
!p::Send ^p
!q::Send ^q
!r::Send ^r
!s::Send ^s
!t::Send ^t
!u::Send ^u
!v::Send ^v
!w::Send ^w
!x::Send ^x
!y::Send ^y
!z::Send ^z
!Right::
Send {End}
return
*!Right:: ; This handles Shift-Right
Send {Blind}{LAlt Up}{End}
return
!Left::
Send {Home}
return
*!Left:: ; This handles Shift-Left
Send {Blind}{Alt Up}{Home}
return
您应该能够在此基础上进行构建。这些是让我最常使用的 Mac 快捷方式。