gpt4 book ai didi

macos - 在 Mma 7 中将 Caps Lock 键重新映射为 Esc

转载 作者:行者123 更新时间:2023-12-04 01:08:41 27 4
gpt4 key购买 nike

TLDR: How do I get CapsLock to translate to "ShortNameDelimiter" in Mma 7?



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

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

我尝试编辑 KeyEventTranslations.tr通过在 EventTranslations[{... 中添加以下内容
Item[KeyEvent["CapsLock"], "ShortNameDelimiter"]

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

最佳答案

修饰键被非常特殊地处理,我怀疑 Mathematica 将能够覆盖系统。你可能 在 Mathematica 和操作系统之间的层中执行此操作。但是,可以根据您所在的应用程序使 key 的行为有所不同。因此,通过一些工作,可能有大写锁定键的行为仅在 Mathematica 中有所不同.
编辑:我没有看到你说你有哪个操作系统,所以我添加了 Mac 说明。

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

How can a hotkey or hotstring be made exclusive to certain program(s)?

In other words, I want a certain key to act as it normally does except when a specific window is active.In the following example, NumpadEnter is made to perform normally except when a window titled "CAD Editor" is active. Note the use of the $ prefix in "$NumpadEnter", which is required to let the hotkey "send itself":

$NumpadEnter::
IfWinNotActive, CAD Editor
{
Send, {NumpadEnter}
return
}
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return

This next example is more pure than the above, but it will only work if the "CAD Editor" application is designed to ignore the NumpadEnter key itself. The tilde prefix (~) makes NumpadEnter into a non-suppressed hotkey, meaning that the NumpadEnter keystroke itself is always sent to the active window, the only difference being that it triggers a hotkey action. The ~ feature requires Windows NT/2k/XP.

~NumpadEnter::
IfWinNotActive, CAD Editor
return
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
要引用此论坛帖子中的“MRCS”,您可能会发现以下内容很有用:

The first one I named CapsLockR.ahk and contains the following script:

CapsLock UP::Run C:\Documents and Sett...[path to script]...\CapsLock.ahk 

The second one is named CapsLock.ahk and has this script:

GetKeyState, state, CapsLock, T 
if state = D
SetCapsLockState, off
else
SetCapsLockState, on
exit
因此,更糟糕的是,如果您在修改“如果 Active Window = Mathematica 其他行为像 Bar”脚本时遇到问题,您可以在此基础上手动切换我认为的 CapsLock 状态。谷歌搜索也会显示更多结果。

Linux
我知道在 Linux 上,你可以使用名为 xbindkeys 的程序。将 CapsLock 绑定(bind)到一个脚本,然后您可以从中调用 xdo如果您检测到 Mathematica 是最顶层的窗口之一(例如,通过 Getting pid and details for topmost windowxdotool 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 可能有类似的工具。例如,您可以获得 xdotool就像通过 MacPorts 项目在上面的 Linux 上一样。我听说 CapLock 键通常不能在 Mac 上轻松反弹,所以如果你可以处理另一个键,它可能会容易得多。但是理论上应该是可以的...
如果你想使用 CapsLock,你可以使用 PCKeyboardHack http://pqrs.org/macosx/keyremap4macbook/extra.html将 CapLock 键重新映射到将告诉 OS X 让您重新映射 CapsLock 的东西。然后重新映射它,然后使用 Quicksilver 将 key 绑定(bind)到调用 xdotool 的脚本检查您是否在 Mathematica 中也可以发出 :esc:...:esc:如果您是(请参阅此答案的 Linux 部分)。否则,您将模拟 CapsLock 上的按键。但是你重新映射了 CapsLock!因此,您可能需要在 CapsLock 键中创建另一个您从未使用过的虚拟键,并使用 Cocoa 库或简单的 AppleScript 触发按键。如果你想追求 CapsLock 路线,你可能会发现 Using Caps Lock as Esc in Mac OS X有用。

关于macos - 在 Mma 7 中将 Caps Lock 键重新映射为 Esc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5808695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com