将 Mma 7 中的 Caps lock 键重新映射为 Esc

2024-01-02

TLDR:如何在 Mma 7 中将 CapsLock 转换为“ShortNameDelimiter”?

I like pretty text in my mma notebooks, and often define functions as f[\[Alpha]_] =... so as to match the exact equation that I'm working with. As such, it involves a lot of Esc-letter-Esc sequences, and reaching for Esc every other stroke breaks my flow of typing.

Now, the CapsLock key is seldom used (I can't remember the last time I needed it), but conveniently placed (your pinky is right there!). Remapping it to Esc on vim worked wonders for me and I was wondering if there was a way to do the same in mma, without having to modify the system's keyboard layout.

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

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

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


修饰键的处理非常特殊,我怀疑 Mathematica 是否能够覆盖该系统。你可能have在 Mathematica 和操作系统之间的层中执行此操作。但是,根据您所在的应用程序,可以使密钥的行为有所不同。因此,只需做一些工作,就有可能仅在 Mathematica 中大写锁定键的行为有所不同.

编辑:我没有看到你说你有哪个操作系统,所以我添加了Mac指令。


Windows

例如,如果您有 Windows,则可以使用名为http://www.autohotkey.com/ 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

下一个示例比上面的更纯粹,但只有当“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

因此,更糟糕的是,如果您在修改“如果 Active Window = Mathematica 则行为像 Bar,则行为像 Foo”脚本时遇到困难,我认为您可以添加此脚本来手动切换 CapsLock 状态。谷歌搜索还将揭示更多结果。


Linux

我知道在 Linux 上,你可以使用名为xbindkeys将 CapsLock 绑定到脚本,您可以依次调用xdo如果您检测到 Mathematica 是最顶层的窗口之一(例如通过获取最顶层窗口的 pid 和详细信息 https://stackoverflow.com/questions/2041532/getting-pid-and-details-for-topmost-window , or xdotool getwindowfocus)或者更糟,你可以只用一个脚本来切换你的配置CapsLock -> xdotool key Escape, xdotool type "whatever", xdotool key Escape(“Mathematica 模式”)和“正常模式”...尽管这可能会阻止您在做数学时因即时消息而对数学家大喊大叫。除非你可能需要找到某种方法来以编程方式切换 CapsLock,也许是通过创建一个虚拟的 CapsLock 键(尽管这是一种极端的黑客行为,但很可能可以找到某种库;也许有人知道如何在Python中打开/关闭大写锁定吗? https://stackoverflow.com/questions/2353112/anybody-know-how-to-toggle-caps-lock-on-off-in-python可能有用)。 (可以通过使用 CapsLock 之外的键来避免此问题,或者不关心您想要保留 CapsLock 功能;您也可以将另一个从未使用过的键变成 CapsLock。)


Mac

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

如果您想使用 CapsLock,可以使用 PCKeyboardHackhttp://pqrs.org/macosx/keyremap4macbook/extra.html http://pqrs.org/macosx/keyremap4macbook/extra.html将 Caps Lock 键重新映射为告诉 OS X 让您重新映射 Caps Lock 的键。然后重新映射它,然后使用 Quicksilver 将密钥绑定到进行调用的脚本xdotool检查您是否在 Mathematica 中,还可以发出:esc:...:esc:如果你是(请参阅此答案的 Linux 部分)。否则,您将模拟 CapsLock 上的按键。但你重新映射了 CapsLock!因此,您可能需要将另一个从未使用过的虚拟键放入 CapsLock 键中,并使用 Cocoa 库或简单的 AppleScript 触发按键。如果您想采用 CapsLock 路线,您可能会发现在 Mac OS X 中将 Caps Lock 用作 Esc https://stackoverflow.com/questions/127591/using-caps-lock-as-esc-on-a-mac useful.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Mma 7 中的 Caps lock 键重新映射为 Esc 的相关文章

  • 使用 NSURLSession 进行单元测试

    我想为使用共享的方法编写单元测试NSURLSession 特别是 NSURLSessionDataTask下载数据 基本上 我希望目标方法能够接收模拟响应 数据 而不需要互联网连接 模拟这些组件的不太不显眼的方式是什么 我正在考虑填充NSU
  • 无法通过 pip 安装 xmlsec

    我在运行时收到以下信息pip install xmlsec在 macOS Big Sur 11 3 1 中 Building wheels for collected packages xmlsec Building wheel for x
  • 如何在最新的 OS X 上安装多个版本的 Python 并并行使用它们?

    我想在 OS X 10 11 上使用多个 Python 版本运行测试 包括 Python 2 6 Python 2 7 默认 已解决 Python 3 4 Python 3 5 通过brew 安装 运行良好 Conda Python 3 5
  • 在 MacOS 上重新启动终端而不关闭

    如何在不关闭窗口的情况下重新启动当前的 MacOS 终端会话 在Linux中我使用exec bash但在这种环境下它不起作用 我对 bash profile 提示 别名等 我想在不关闭它并再次打开的情况下查看 只需输入命令 exec bas
  • 如何在 Xcode 构建完成时设置警报?

    我是一名懒惰的 iOS 开发人员 在一个大型 iOS 项目中工作 我已经应用了许多优化来减少项目构建时间 但每次构建都需要超过 10 12 分钟 我开始构建 有时当构建完成时 我会在桌子上睡着 有没有什么方法可以将任何语音 铃声警报与 xc
  • postgresql 数据库在 OS X 上的位置?

    我确信这个问题已经得到解答 但我似乎找不到答案 我使用 Homebrew brew install postgresql 安装了 postgresql 它安装到 usr local Cellar postgresql 后记按照我这样做的说明
  • 使 pycaffe 致命错误:找不到“Python.h”文件

    我在运行 OSX 10 9 5 的 Mac 上编译了 caffe 并且我知道尝试编译 pycaffe 当我在 caffe 根文件夹中运行 make pycaffe 时 我得到 CXX LD o python caffe caffe so p
  • 更新 Mac OS 10.7 的 grep

    我想将 Mac 上的 grep 更新到比 Mac OS 10 7 2 附带的 2 5 1 更新的版本 我的问题是 为 Mac 更新 grep 或任何类似程序 的最佳方法是什么 我可以使用 Fink 或 MacPorts 安装新版本并设置路径
  • 使用 MTL/Boost 库 Mac 终端 C++

    准确地说 我正在尝试运行这个优秀的项目 https github com ppwwyyxx panorama https github com ppwwyyxx panorama 我使用的是现代 Mac 问题是我似乎无法让我的计算机正确包含
  • 在 Mac 中运行 Postgresql:数据库“postgres”不存在 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我按照这些说明让 postgresql 在 mac 上运行 请注意 我使用 Homebrew 进行安装 并且当前可通过brew安装的版本是 9 2 1
  • window.speechSynthesis.getVoices() 在 macOS safari 15.4 上返回空数组

    功能window speechSynthesis getVoices 在我的浏览器 macOS 12 3 1 Safari 15 4 上返回一个空数组 在以前的版本 Safari 15 3 macOs 12 2 上 该函数按照预期返回一个包
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 如何使 SFSpeechRecognizer 在 macOS 上可用?

    我正在尝试使用 Apple 的语音框架在 macOS 10 15 1 上进行语音识别 在 macOS 10 15 之前 语音识别仅在 iOS 上可用 但根据文档 https developer apple com documentation
  • 最近打开的应用程序[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有什么方法可以获取最近打开的应用程序 例如 4 个 的列表吗 如果是这样 怎么办 可可麦克 看看LaunchServices LSSh
  • NSSharingService 共享子菜单

    如何在 Mac 应用程序中添加共享子菜单 例如 Safari gt 文件 gt 共享 我戳了戳Apple 共享服务示例代码 http developer apple com library mac samplecode SharingSer
  • 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

    基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 HLS Live Stream 我对这门语言比较陌生 所以基本上掌握了一些示例代码 http qiita com ono matope items 23d
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • Vim 和 Mac:如何在不使用 pbcopy 的情况下复制到剪贴板

    我有一个同时支持剪贴板和 xterm clipboard 的 vim 版本 然而 y or y不要复制到系统剪贴板 我知道我可以使用 w pbcopy 甚至为其创建快捷方式 但我真的想要标准方式 我也看到了 fakeclip 但希望找到一个
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove

随机推荐

  • javax 邮件:UTF-8 编码问题

    我已经看到了几个与此相关的问题 但没有一个能解决我的问题 我有一封带有 pdf 附件的中文电子邮件 所有文本在包含在多部分电子邮件中之前都是有效的 UTF 8 Problem 电子邮件中的文本到达收件人时是垃圾字符 电子邮件标头显示其编码不
  • 从 iPhone 中的固定数字集生成随机数

    假设我有一组数字 即 1 6 3 5 7 9 我只想从这组数字生成随机数 即生成的数字应该是随机的 并且应该仅来自这些数字 1 6 3 5 7 9 标准 C C 函数也可以 arc4random set count 随机索引
  • python:如何根据 1 个列表中的内容从 2 个列表中删除值

    我有 2 个号码列表 其中一个名为xVar另一个叫yVar 我将使用这两个元素在图表上绘制 X 和 Y 值 它们都具有相同数量的元素 通常情况下 我只会绘制 ax scatter xVar yVar s 2 color tomato 我想从
  • 访问 symfony 2 中的 AppKernel 环境变量

    我正在使用 symfony 2 我们有 2 个配置 开发版和生产版 我需要知道是否可以找出我在实体或模型中使用的是哪一个 我正在寻找与 AppKernel php 中找到的代码类似的内容 this gt getEnvironment 如果我
  • 使用 Next.js 检索服务器端数据并保存在上下文中

    我希望能够从服务器端 API 检索数据 并将其加载到 React 上下文中 以便使其可供我的应用程序中的任何组件使用 我尝试过各种事情 但似乎没有什么能让我完全做我想做的事 我尝试过的一些事情包括 getServerSideProps 这允
  • Codeigniter 删除所有 html 标签

    你如何删除ALL带 codeigniter 的 HTML 标签 我猜你必须使用 PHP 函数strip tags 但我想要类似 XSS 过滤的全局设置 Thanks 如果您指的是使用input方法 是的 你可以从技术上开放system li
  • Angular2 反应式表单 - 使用下拉菜单设置表单字段的默认值

    如何设置 Angular 2 反应表单中所有表单字段的默认值 这里是plnkr https plnkr co edit GKguMzZbr0kzrraPP73f p preview重现问题 下面的代码不会更新下拉值 因为它有一个与之关联的对
  • 使用 R 检索期刊论文的引文

    使用 R 我想获取引用科学期刊论文的文章列表 我所拥有的唯一信息是文章的标题 例如 用福林苯酚试剂测量蛋白质 有人能够通过制作一个我可以使用的可复制示例来帮助我吗 这是我到目前为止所尝试的 R 包fulltext似乎很有用 因为它允许检索链
  • 概览显示重复的 EF 查询

    我的 MVC 4 应用程序运行速度太慢 出现问题 我安装了 Glimpse 来分析该应用程序 我想我已经找到了部分问题 我的许多 EF 查询似乎运行了两次 这是我的 HomeController 它正在发出一些警报 HttpGet publ
  • 将 URL 参数传递给redirect_to :root

    这可能是一个非常愚蠢的问题 但几乎不可能通过谷歌搜索答案 是否有可能 如果可以的话如何 做类似的事情 redirect to root registered gt true 然后将链接到http myurl com registered t
  • 如何告诉 scons 使用 C++11 标准

    我无法找到如何告诉 scons 接受 c 11 标准 SConstruct 文件 env Environment CPPPATH usr include boost CPPDEFINES LIBS SCONS CXX STANDARD c
  • 我如何在 FMX 中使用 showmodal?

    我正在尝试为我的主 Android 表单创建一个登录表单 所以我做了这样的事情 var CanGo Boolean begin Application Initialize Application CreateForm TForm1 For
  • OpenCV 将一种颜色转换为另一种颜色

    我有一张灰度图像 我想将所有白色像素 纯白色 255 转换为黑色 0 仅那些颜色 而不是所有灰度 我怎样才能做到这一点 谢谢你 罗恩 您可以执行以下操作 使用阈值设置图像inRange http docs opencv org module
  • Rxjava tolist() 未完成

    我的 RxJava 调用链有问题 toList 无法正常工作 我猜想 toList 需要一些东西来完成 这就是它被卡住的原因 但我不知道如何解决这个问题 The code mModel getLocations flatMapIterabl
  • “ApacheCordovaToolsPackage”包未正确加载

    我刚刚安装了 VS 2015 Professional 并尝试安装 Visual Studio Tools for Apache Cordova 它成功完成 然而 当我尝试为此创建一个新项目时 它就卡在那里了 然后 如果我打开 VS 201
  • Ant 和可用任务 - 如果某些任务不可用怎么办?

    当我使用该任务时 仅当资源 例如文件 可用时 该属性才会设置为 TRUE 如果不是 则该属性未定义 当我打印属性的值时 如果资源可用 则返回 true 否则仅打印属性名称 如果资源是 有没有办法将属性设置为某个值not可用的 我尝试在可用检
  • 请解释一下这个高阶函数的javascript代码

    我正在按照 Eloquent JavaScript 书学习高阶函数 我无法理解这段代码 为什么 布尔值 作为嘈杂的第一个参数传递 这应该是改变其他功能的功能 我只是不明白它是如何工作的 function noisy f return fun
  • 使用可变属性名称反序列化 JSON

    我想反序列化 jsonhere http feiertage jarmedia de api jahr 7Byear 7D 与此类似 BW Neujahrstag datum 2017 01 01 hinweis Heilige Drei
  • Admin 中 Django 的外键参考

    我一直在尝试在 Django admin 中解决这个问题 但仍然找不到文档 In my 模型 py 我有以下代码 from django db import models class Post models Model title mode
  • 将 Mma 7 中的 Caps lock 键重新映射为 Esc

    TLDR 如何在 Mma 7 中将 CapsLock 转换为 ShortNameDelimiter I like pretty text in my mma notebooks and often define functions as f