abc*_*bcd 12 macos wolfram-mathematica keymapping mathematica-frontend
TLDR:如何在Mma 7中将CapsLock转换为"ShortNameDelimiter"?
我喜欢我的mma笔记本中的漂亮文本,并且经常定义函数f[\[Alpha]_] =...以匹配我正在使用的确切方程.因此,它涉及很多Esc- letter- Esc序列,并且Esc每隔一个笔划达到打破我的打字流程.
现在,CapsLock关键很少使用(我不记得我最后一次需要它),但是方便放置(你的小指就在那里!).它重新映射到Esc在vim为我创造了奇迹,我想知道是否有办法做到在同一个mma,而不必修改系统的键盘布局.
我尝试KeyEventTranslations.tr通过添加以下内容进行编辑EventTranslations[{...
Item[KeyEvent["CapsLock"], "ShortNameDelimiter"]
Run Code Online (Sandbox Code Playgroud)
但那没有效果.还有另一种方法吗?是CapsLock不正确的标识?如果它有帮助,我在Mac上使用Mma7学生版.
修改键是非常特殊的处理,我怀疑Mathematica能否覆盖系统.您可能必须在Mathematica和OS之间的层中执行此操作.但是,根据您所使用的应用程序,可以使键的行为不同.因此,通过一些工作,可以使大写锁定键仅在Mathematica中表现不同.
编辑:我没有看到你说你有哪个操作系统,所以我添加了Mac指令.
例如,如果您有Windows,则可以使用名为http://www.autohotkey.com/的程序.它特别具有可以将键绑定到脚本的功能,特别是以下脚本:
如何将热键或热字串专用于某些程序?
换句话说,除非特定窗口处于活动状态,否则我希望某个键按照通常的方式运行.在以下示例中,除非标题为"CAD编辑器"的窗口处于活动状态,否则NumpadEnter将正常执行.注意在"$ NumpadEnter"中使用$前缀,这是让热键"发送自己"所必需的:
$NumpadEnter::
IfWinNotActive, CAD Editor
{
Send, {NumpadEnter}
return
}
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
Run Code Online (Sandbox Code Playgroud)
下一个示例比上面的示例更纯粹,但只有在"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
Run Code Online (Sandbox Code Playgroud)
要在此论坛帖子中引用"MRCS",您可能会发现以下内容:
第一个我命名为CapsLockR.ahk并包含以下脚本:
CapsLock UP::Run C:\Documents and Sett...[path to script]...\CapsLock.ahk
Run Code Online (Sandbox Code Playgroud)
第二个名为CapsLock.ahk并具有以下脚本:
GetKeyState, state, CapsLock, T
if state = D
SetCapsLockState, off
else
SetCapsLockState, on
exit
Run Code Online (Sandbox Code Playgroud)
更糟糕的是,如果您在修改"如果活动窗口= Mathematica其他表现得像Bar"这样的行为时遇到问题,那么您可以通过此操作来手动切换我认为的CapsLock状态.谷歌搜索也将揭示更多的结果.
我知道在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可能有类似的工具.例如,您可以xdotool通过MacPorts项目获得上面的Linux.我听说CapLock键通常不能在Mac上轻松反弹,所以如果你能处理另一个键,它可能会容易得多.但理论上它应该是可能的......
如果您希望使用CapsLock,可以使用PCKeyboardHack http://pqrs.org/macosx/keyremap4macbook/extra.html将CapLock键重新映射到可以让OS X重新映射CapsLock的内容.然后重新映射它,然后使用Quicksilver将密钥绑定到一个脚本,该脚本调用xdotool以检查您是否在Mathematica中也发出:esc:...:esc:if if you(请参阅本答案的Linux部分).否则,您将在CapsLock上模拟按键.但你重新映射了CapsLock!因此,您可能需要在CapsLock键中创建另一个从未使用的虚拟键,并使用Cocoa库或简单的AppleScript触发按键.如果您希望继续使用CapsLock路线,您可能会发现在Mac OS X中使用Caps Lock作为Esc非常有用.
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |