我喜欢mma笔记本中的漂亮文字,并且经常将函数定义为f[\[Alpha]_] =...,以便与我正在使用的精确方程式匹配。因此,它涉及许多Esc-letter-Esc序列,每隔一个笔划就到达Esc会打断我的打字流程。

现在,几乎不使用CapsLock键(我不记得上一次需要它了),但是放置方便(您的小指就在那儿!)。将其重新映射到vim上的Esc对我来说是一个奇迹,我想知道是否可以在mma中进行相同的操作,而不必修改系统的键盘布局。

我尝试通过在KeyEventTranslations.tr中添加以下内容来编辑EventTranslations[{...

Item[KeyEvent["CapsLock"], "ShortNameDelimiter"]

但这没有效果。还有另一种方法吗? CapsLock不是正确的标识符吗?如果有帮助,我正在Mac上使用Mma7学生版。

最佳答案

修饰键的处理方式非常特殊,我怀疑Mathematica是否能够覆盖该系统。您可能拥有来在Mathematica和OS之间的某个层中执行此操作。但是,可以根据所使用的应用程序使键的行为有所不同。因此,通过一些工作,可以使的Capslock键仅在Mathematica的中具有不同的行为。
编辑:我没有看到您说您拥有的操作系​​统,所以我添加了Mac说明。

视窗
例如,如果您使用Windows,则可以使用名为http://www.autohotkey.com/的程序。它特别具有一项功能,您可以将键绑定(bind)到脚本,尤其是以下脚本:

$NumpadEnter::
IfWinNotActive, CAD Editor
{
    Send, {NumpadEnter}
    return
}
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
~NumpadEnter::
IfWinNotActive, CAD Editor
    return
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
要引用此论坛帖子中的“MRCS”,您可能会发现以下有用:
CapsLock UP::Run C:\Documents and Sett...[path to script]...\CapsLock.ahk
GetKeyState, state, CapsLock, T
if state = D
    SetCapsLockState, off
else
    SetCapsLockState, on
exit
因此,更糟的是变得更糟,如果您在修改“如果 Activity 窗口= Mathematica时行为类似Bar,则像Foo一样行为”脚本时遇到麻烦,则可以对此进行手动设置,以手动切换CapsLock状态。谷歌搜索还将显示更多结果。

的Linux
我知道在Linux上,您可以使用名为xbindkeys的程序将CapsLock绑定(bind)到脚本,如果您检测到Mathematica是最顶层的窗口之一(例如,通过Getting pid and details for topmost windowxdo)或更糟,则可以从该脚本依次调用xdotool getwindowfocus-最糟糕的是,您只能使用一个脚本在CapsLock -> xdotool key Escape, xdotool type "whatever", xdotool key Escape(“Mathematica模式”)和“正常模式”之间切换配置,尽管这可能会阻止您在进行数学运算时立即对数学家大喊大叫。除非您可能需要找到某种以编程方式切换CapsLock的方法,否则也许可以通过创建一个虚拟CapsLock key 来进行(尽管这是一个极端的技巧,但很可能可以找到某种类型的库;也许Anybody know how to toggle caps lock on/off in Python?可能有用)。 (可以通过使用CapsLock之外的其他键来避免此问题,或者不关心要保留CapsLock功能;也可以将从未使用过的另一个键转换为CapsLock。)

苹果电脑
Mac可能具有类似的工具。例如,您可以通过MacPorts项目在上面的Linux上获得xdotool。我听说CapLock key 通常无法在Mac上轻松反弹,因此,如果您可以使用另一个 key ,则可能会容易得多。但是从理论上讲应该有可能...
如果您希望使用CapsLock,则可以使用PCKeyboardHack http://pqrs.org/macosx/keyremap4macbook/extra.html将CapLock键重新映射为OSX允许您重新映射CapsLock的键。然后重新映射它,然后使用Quicksilver将 key 绑定(bind)到一个脚本,该脚本会调用xdotool来检查您是否在Mathematica中,如果您在Mathematica中,还会发出:esc:...:esc:(请参见此答案的Linux部分)。否则,您将模拟CapsLock上的按键。但是您重新映射了CapsLock!因此,您可能需要在CapsLock key 中使用另一个从未使用过的虚拟 key ,并使用Cocoa库或简单的AppleScript触发对该虚拟 key 的按键操作。如果您希望使用CapsLock路线,则可能会发现Using Caps Lock as Esc in Mac OS X有用。

09-11 18:20