4

我正在使用不同的键盘布局,使用 AHK 的 qwerty to colemak 脚本。它将字母重新映射到不同的字母。当 ctrl、alt 或 windows 键按下时,如何禁用它。这样像 ctrl+s 这样的热键保存应该仍然有效!

编辑:我从这里得到了脚本http://colemak.com/wiki/index.php?title=Download

它看起来像这样

r::p
t::g
y::j
u::l
4

4 回答 4

3

用于Suspend禁用热键。Use~告诉 AHK 不要阻止本地事件。然后Suspend再次使用以重新启用热键。

~Ctrl::Suspend, On
~Ctrl Up::Suspend, Off

~Alt::Suspend, On
~Alt Up::Suspend, Off

~LWin::Suspend, On
~LWin Up::Suspend, Off
于 2013-01-15T21:21:19.820 回答
2

虽然我在上面的评论中写道,我认为这种条件禁用不是必需的,但这里有一些代码。我使用了字母 f 并在记事本中进行了测试。按 f 会返回 Hello 按 ^f 应该会给出 hELLO,但由于 #IF 不正确,记事本查找会打开,因为系统会发送常规 Ctrl+f。!f 也一样,这将打开“文件”菜单。警告您必须安装 autoHotKey_L 才能使#IF 正常工作!

#If (NOT ((GetKeyState("Control", "P")) OR (GetKeyState("Alt", "P"))))
    f::Send, Hello ; Should execute as long as Ctrl or Alt are not pressed.
    *a::Send, QQQQ ; The * ignores all modyfiers, not executed when Alt or Ctrl is pressed.
    ^f::Send, hELLO ; should never execute due to #IF = False
    !f::Send, olleh ; should never execute due to #IF = False
#IF
于 2013-01-16T08:49:13.793 回答
0


包括脚本的代码或提供脚本的链接(我自己正在搜索但找不到它)会有所帮助。

如果脚本中的重新映射正确完成,组合Ctrl+S应该仍然有效,尽管键的物理位置已经改变。正如我在布局中看到的那样
http://colemak.com/wiki/images/8/80/Colemak_layout_2.png
s 与原始 s 的距离并不远,因此您可以尝试记住它。



禁用热键的通常解决方案是:

    Suspend, On

http://www.autohotkey.com/docs/commands/Suspend.htm

由于我没有看到脚本,我不知道它是否会起作用。

于 2013-01-15T20:26:45.510 回答
0

和上面一样。不确定剧本。一个想法可能是使用 autoHotKey_L #if 函数并将重新分配的键放置在 #IF 中。然后应该围绕未按下的修饰键创建#IF。

于 2013-01-15T20:34:08.057 回答