修改键被非常特殊地处理,我怀疑 Mathematica 是否能够覆盖系统。您可能必须在 Mathematica 和操作系统之间的层中执行此操作。但是,可以根据您所在的应用程序使键的行为有所不同。因此,通过一些工作,可能大写锁定键的行为仅在 Mathematica 中有所不同。。 p>
编辑:我没有看到你说你有什么操作系统,所以我添加了 Mac 说明。
窗口
例如,如果您有 Windows,则可以使用名为 http://www.autohotkey.com/ 的程序。它特别具有一个功能,您可以将密钥绑定到脚本,特别是以下脚本:
如何将热键或热字符串设置为特定程序的专有?
换句话说,我希望某个键能够正常运行,除非特定窗口处于活动状态。
在以下示例中,NumpadEnter 正常执行,除非标题为“CAD 编辑器”的窗口处于活动状态。注意在“$NumpadEnter”中使用了 $ 前缀,这是让热键“发送自身”所必需的:
$NumpadEnter::
IfWinNotActive, CAD Editor
{
Send, {NumpadEnter}
return
}
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
下一个示例比上面的更纯粹,但它仅在“CAD 编辑器”应用程序设计为忽略 NumpadEnter 键本身时才有效。波浪号前缀 (~) 使 NumpadEnter 成为非抑制热键,这意味着 NumpadEnter 击键本身总是发送到活动窗口,唯一的区别是它触发热键操作。 ~ 功能需要 Windows NT/2k/XP。
~NumpadEnter::
IfWinNotActive, CAD Editor
return
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
引用此论坛帖子中的“MRCS”,您可能会发现以下内容很有用:
我将第一个命名为 CapsLockR.ahk 并包含以下脚本:
CapsLock UP::Run C:\Documents and Sett...[path to script]...\CapsLock.ahk
第二个名为 CapsLock.ahk 并且有这个脚本:
GetKeyState, state, CapsLock, T
if state = D
SetCapsLockState, off
else
SetCapsLockState, on
exit
因此,情况变得更糟,如果您在修改“如果活动窗口 = Mathematica 其他行为像 Bar”脚本时遇到问题,您可以在此基础上手动切换我认为的 CapsLock 状态。谷歌搜索也会显示更多结果。
Linux
我知道在 Linux 上,您可以使用名为 xbindkeys 的程序将 CapsLock 绑定到脚本,如果您检测到 Mathematica 是最顶层的窗口之一(例如通过 @ 987654322@ 或 xdotool getwindowfocus) 或更糟糕的情况下,您可以只使用一个脚本在 CapsLock -> xdotool key Escape, xdotool type "whatever", xdotool key Escape (“Mathematica 模式”)和“正常模式”之间切换您的配置......尽管这可能会阻止你来自在做数学时对数学家大喊大叫。除非您可能需要找到某种方法来以编程方式切换 CapsLock,也许是通过创建一个虚拟 CapsLock 键(虽然这是一种极端的技巧,但很可能可以找到某种库;也许Anybody know how to toggle caps lock on/off in Python? 可能有用)。 (这个问题可以通过使用 CapsLock 之外的键来避免,或者不关心您想要保留 CapsLock 功能;您也可以将另一个您从不使用的键变成 CapsLock。)
Mac
Mac 可能有类似的工具。例如,您可以通过 MacPorts 项目在上面的 Linux 上获得xdotool。我听说 CapLock 键通常不能在 Mac 上轻松反弹,所以如果你可以处理另一个键,它可能会容易得多。不过理论上应该是可以的……
如果你想使用 CapsLock,你可以使用 PCKeyboardHack http://pqrs.org/macosx/keyremap4macbook/extra.html 将 CapLock 键重新映射到某个东西,这会告诉 OS X 让你重新映射 CapsLock。然后你重新映射它,然后使用 Quicksilver 将密钥绑定到一个调用 xdotool 的脚本,以检查你是否在 Mathematica 中,如果你在,也发出 :esc:...:esc: (请参阅此答案的 Linux 部分)。否则,您将模拟 CapsLock 上的按键。但是你重新映射了 CapsLock!因此,您可能需要在 CapsLock 键中创建另一个您从未使用过的虚拟键,并使用 Cocoa 库或简单的 AppleScript 触发按键。如果您想使用 CapsLock 路线,您可能会发现 Using Caps Lock as Esc in Mac OS X 很有用。