CMD + Delete

CMD + Delete

一个用于Minecraft的文本导航快捷键框架,允许macOS用户获得原生文本行为,并允许其他所有人自定义快捷键。

CMD + Delete

在 macOS 上玩《我的世界》时,按 option + backspace 会删除单个字符,而按 command + backspace 会删除一个单词。这与操作系统原生行为完全不一致,所以我修复了它……

这个模组还作为一个功能完备的、可配置的《我的世界》文本编辑/导航快捷键框架,支持自定义映射 JSON 和分享码、游戏内切换等功能!

一些背景

  1. 如果你在 Windows 或 Linux 上使用此模组,且未使用自定义映射,那么游戏行为将与原版《我的世界》完全一致。
  2. 如果你使用此模组时遇到任何问题,请在 GitHub 上提交 Issue 反馈。此模组是开源的,非常欢迎提交 Pull Request!:)

注意:

CMD + Delete 是一个 Fabric 模组,同时也支持 Quilt,适用于《我的世界》1.16 至最新版本。

它还支持 Forge 1.20.1 和 NeoForge 1.21.1,但仅可通过 Sinytra Connector 使用。

聊天框中 opt/cmd + backspace 的功能演示

内置映射快捷键

默认情况下,CMD + Delete 会检测你是否在使用 macOS。如果是,则会自动设置为 macOS 快捷键;否则将使用 Windows/Linux 快捷键。

操作 macOS Windows / Linux
删除前一个单词 option + backspace ctrl + backspace
删除后一个单词 option + delete ctrl + delete
删除到行首 cmd + backspace 无
删除到行尾 cmd + delete 无
移动到前一个单词 option + ← ctrl + ←
移动到后一个单词 option + → ctrl + →
移动到行首 cmd + ← home
移动到行尾 cmd + → end
移动到文本开头 cmd + ↑ ctrl + home
移动到文本末尾 cmd + ↓ ctrl + end
选中前一个单词 option + shift + ← ctrl + shift + ←
选中后一个单词 option + shift + → ctrl + shift + →
选中到行首 cmd + shift + ← shift + home
选中到行尾 cmd + shift + → shift + end
选中到文本开头 cmd + shift + ↑ ctrl + shift + home
选中到文本末尾 cmd + shift + ↓ ctrl + shift + end
向上选中一行 shift + ↑ shift + ↑
向下选中一行 shift + ↓ shift + ↓

其他内置映射

CMD + Delete 现在还提供了以下其他内置映射:

  • builtin:emacs_windows_linux:在 Windows/Linux 上模拟 Emacs 的标准文本导航快捷键(已尽力还原,但并非完美)。
  • builtin:emacs_mac:在 macOS 上模拟 Emacs 的标准 Cocoa 文本导航快捷键(已尽力还原,但并非完美)。
  • builtin:readline:模拟 GNU Readline 的标准文本导航快捷键(已尽力还原,但并非完美)。

自定义映射

你可以通过配置文件定义自己的自定义映射,文件位置及名称格式为:<minecraft install>/config/cmd_delete/mappings/<id>.json。这让你可以根据自己的喜好和配置来定制《我的世界》中的文本导航快捷键行为。你还可以通过分享码轻松分享你的映射!

示例

sample.json 文件:

{
  "fv": 4,
  "inherits": "builtin:mac",
  "meta": {
    "name": "示例自定义映射",
    "author": "Omegabird113",
    "description": "此示例演示了继承、修补等功能!不过,这些按键绑定是虚构的,一般人大概率不会这么用……",
    "version": "2.1.0",
    "id": "sample",
    "systems": [
      "mac", "windows", "linux"
    ]
  },
  "actions": {
    "NAV_TEXT_START": [
      {
        "key": "up",
        "superCommand": true,
        "altOption": false,
        "shift": false,
        "enabled": false
      },
      {
        "key": "e",
        "superCommand": true
      },
      {
        "key": "home"
      }
    ]
  }
}

mac 分享码: CDS:EV1:tMeXxZVB45VieA3HvggAeo3p5zjrCbj7crBL5PbmPwdWGpgx8nz6vXnqxX48Cgc5BHZX63EYegfSTth3sTL16tud1DU6KFQKQNLmEtrhaoojTDiqtcm88t2ePt3yKWY4NnfPEUBhPqMgmoFCZwkfgVMpmKr6L2QYWmtruBniZRgBG5hxpA95W2E3pn5dv9SnDhpQenXnr2cWvyENAGmNpTzpUyktLDQoEZGJZE8CKK84G8jXsTf81f1Kxojv88pF66AeMYEqMCYCki7jafgTDi4YspYGxLvqrd9eZPGUPy1JvV588pD6MFT13sYK2m5yiJk5qGwqMg17DSbXjEUzU3dLN322AqPDP4Xvm3n1nztxo2fuCeGPpmD7poJDbHCws7RNKtVcgnpas8EhxHDUBqZPwyDWjbUwqxNfmqSvKQwYQbU3jTt527Z89g1Li4QPBto4bNFc9Fr7jWYQVdu8k7PxahZEFjPes5YrufVoNtU1ZC8VuMreMQNeBUz9MH5qN3oDbdYu7L5Jupr6XBrpKMoVzGGS4ygdcBMfG7ZZF6ruzNjTGDjHvrNDGDuJXpXfnccn9ami1xM4SipedBHugVM56FyR26MsRcddBMwmnSr4LTrGT6hofbsGuapfVJZUNfgab6WvHDAgHMXFQD9reFnfuMQ3KNtzMFzPJXSyVLfbFYDjPxv94yB5:2419707130

技术特性

自定义映射支持:

  • 使用通配符展开,即键位组合中未包含的修饰键会被视为 true 或 false 均可。
  • 使用 CMD + Delete 定义的友好按键名称字符串,而非 GLFW 键码。如果某个按键名称未定义,你仍然可以在 JSON 中使用原始的 GLFW 键码。
  • 通过将顶层 inherits 值设置为 custom:<id> 来继承自定义 JSON,或设置为 builtin:<id>(或直接 <id>)来继承内置 JSON,从而继承内置映射或其他自定义映射的键位绑定。
  • 通过将键位绑定的 enabled 属性设置为 false 来修补和覆盖其继承的映射。请注意,CMD + Delete 总是先移除你禁用的键位绑定,然后再添加你启用的键位绑定,从而轻松实现“先修补后重新实现”的模式。
  • 设置某些布尔特性标志来控制模组的行为。
  • 启用 strict 模式(作为顶层 JSON 布尔值),如果映射存在键位冲突或未知操作等可恢复问题,该模式将阻止映射加载。

请注意:

  • 格式版本 fv 目前为 4,你的映射应与之匹配(不过游戏内仍然支持格式版本为 2 和 3 的旧版映射)。
  • meta.id 字段必须与不带 .json 扩展名的文件名完全一致。
  • 在某些地方,你会看到映射 id 为 ""(空字符串),这指的是默认映射行为,即根据用户的操作系统加载 builtin:windows_linux 或 builtin:mac。请注意,"inherits": "" 表示映射 JSON 不继承任何内容,因此无法继承默认行为。

分享码语法

分段(按顺序) 描述
CDS CMD + Delete 分享的前缀。
EV1 分享码编码格式的版本(目前为 1)。
载荷 映射 JSON 的 Base58 编码的 GZip 压缩载荷。
校验和 未压缩映射 JSON 的 CRC32 校验和。

/navmappings 命令

CMD + Delete 包含一个游戏内的客户端 /navmappings 命令,用于检查、切换、导入、导出和调试映射,而无需手动修改配置文件。

命令 描述
/navmappings info 显示当前加载的映射信息。
/navmappings list 显示当前可用映射的命名空间 ID 列表,你可以切换到这些映射。
/navmappings set default 切换到默认映射行为。
/navmappings set builtin <不带命名空间的 id> 切换特定操作系统的内置映射 JSON。
/navmappings set custom <不带命名空间的 id> 切换到某个你自己的自定义映射 JSON。
/navmappings reload 重新加载当前激活的映射。
/navmappings export <type> file <不带命名空间的 id> <绝对路径> 将某个映射 JSON 复制到系统上的另一个位置,以便你复制它。
/navmappings export <type> sharecode <不带命名空间的 id> 生成一组映射的分享码副本,并将其打印到聊天框及复制到剪贴板。
/navmappings import file <绝对路径> 将你从系统其他位置制作的 JSON 副本导入到自定义 JSON 文件夹中,以便你将其用作自定义映射。
/navmappings import sharecode clipboard 从你复制到剪贴板中的分享码导入一组映射的副本。
/navmappings import sharecode chat <sharecode> 从你在命令中输入的分享码导入一组映射的副本。
/navmappings debug 一个实用工具,提供信息转储,如 CMD + Delete 相关信息、CMD + Delete 映射 JSON 支持的友好按键名称转储,或内部加载的映射注册表的原始转储。