在综合格斗 7 中将大写锁定键重新映射到 Esc



TLDR:如何让 CapsLock 在 Mma 7 中翻译成"短名称分隔符"?

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

现在,CapsLock键很少使用(我不记得上次需要它是什么时候了(,但放置方便(你的小指就在那里!在vim上将其重新映射到 Esc 对我来说创造了奇迹,我想知道是否有办法在 mma 中做同样的事情,而无需修改系统的键盘布局。

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

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

但这没有效果。有没有其他方法可以做到这一点?CapsLock不是正确的标识符吗?如果有帮助,我在Mac上使用Mma7学生版。

修饰

键的处理非常特殊,我怀疑Mathematica是否能够覆盖系统。你可能必须在 Mathematica 和操作系统之间的一层中执行此操作。 但是,可以根据您所在的应用程序使密钥的行为不同。因此,通过一些工作,可能只有 Mathematica 中的 capslock 键表现不同

编辑:我没有看到你说你使用的是哪个操作系统,所以我添加了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 else 表现像酒吧"脚本时遇到问题,您可以添加它来手动切换 CapsLock 状态我认为。谷歌搜索也会显示更多结果。

<小时 />

Linux目录

我知道在 Linux 上,您可以使用名为 xbindkeys 的程序将 CapsLock 绑定到脚本xdo,如果您检测到 Mathematica 是最顶层窗口之一(例如,通过获取最顶层窗口的 pid 和详细信息,或xdotool getwindowfocus(或更糟糕的情况,您可以使用一个脚本在CapsLock -> xdotool key Escape, xdotool type "whatever", xdotool key Escape("Mathematica 模式"(和"正常模式"之间切换您的配置......尽管这可能会阻止您在做数学时通过即时消息对数学家大喊大叫。除非你可能需要找到一些方法来编程地切换CapsLock,也许通过创建一个虚拟的CapsLock键(虽然这是一个极端的黑客,但很可能可以找到某种库;也许有人知道如何在Python中打开/关闭大写锁定?可能有用(。(这个问题可以通过使用 CapsLock 之外的密钥来避免,或者不关心你想要保留你的 CapsLock 功能;你也可以把另一个你从未使用的键变成 CapsLock。

<小时 />

苹果电脑

Mac 可能有类似的工具。例如,您可以通过MacPorts项目获得像上面的Linux一样xdotool。我听说CapLock键通常无法在Mac上轻松反弹,因此,如果您可以处理另一个键,则可能会容易得多。但从理论上讲,这应该是可能的...

如果你想使用CapsLock,你可以使用PCKeyboardHack http://pqrs.org/macosx/keyremap4macbook/extra.html 将CapLock键重新映射到一些东西,这将告诉OS X让你重新映射CapsLock。然后你重新映射它,然后使用Quicksilver将密钥绑定到一个脚本,该脚本进行调用xdotool以检查您是否在Mathematica中,如果您还在Mathematica中,也可以发出:esc:...:esc:(请参阅本答案的Linux部分(。否则,您将在 CapsLock 上模拟按键。但是你重新映射了CapsLock!因此,您可能需要将另一个从未使用的虚拟密钥放入CapsLock密钥中,并使用Cocoa库或简单的AppleScript触发按键。如果您希望采用CapsLock路线,您可能会发现在Mac OS X中使用Caps Lock作为Esc很有用。

相关内容

  • 没有找到相关文章

最新更新