【问题标题】:Invoke keyboard shortcuts with one key一键调用键盘快捷键
【发布时间】:2013-03-10 04:41:09
【问题描述】:

我在我的 Mac 上创建了三个可在任何应用程序中使用的右键单击菜单项的键盘快捷键:

选择文本时:

大写是 Ctrl+C

使小写为 Ctrl+L

使大写为 Ctrl+U

有道理,但现在我想创建一个 Applescript 以仅使用 CAPS 键来调用这些快捷方式。

我想要的是:

选择文本时:

双击CAPS调用Ctrl+C

如果文本是 UC 单击 CAPS 调用 Ctrl+L

如果文本是 LC 单击 CAPS 调用 Ctrl+U

否则 CAPS 正常。

有没有办法做到这一点?键盘设置不允许我使用 CAPS 作为热键/快捷方式。

【问题讨论】:

    标签: applescript case systemevent


    【解决方案1】:

    我认为这即使不是不可能做到也很难。我过去写过 Applescripts 来检测大写锁定或锁定。(one such as this) 但它们的设置很笨重。并且需要其他组件运行,然后即使我在 Objective-C 中使用或编写了应用程序,也意味着必须运行第三方应用程序。

    最简单的解决方案是使用功能键。您可以使用其中的三个,每个一个

    【讨论】:

      【解决方案2】:

      您可以使用PCKeyboardHack 将大写锁定更改为另一个键(如 F19),然后在 KeyRemap4MacBook 中将类似这样的内容添加到private.xml

      <autogen>__DoublePressModifier__ KeyCode::F19, KeyCode::F19, KeyCode::F19, ModifierFlag::COMMAND_L</autogen>

      或用于持有钥匙:

      <autogen>__HoldingKeyToKey__ KeyCode::F19, KeyCode::F19, KeyCode::VK_NONE, KeyCode::F19, ModifierFlag::COMMAND_L, Option::NOREPEAT</autogen>

      您可以使用 Automator 创建用于转换为小写/大写的服务。检查输出替换选定的文本并添加一个运行 shell 脚本操作,如下所示:

      export LC_CTYPE=UTF-8
      input=$(cat)
      grep -q [[:upper:]] <<< "$input" && \
      printf %s "$input" | tr [[:upper:]] [[:lower:]] || \
      printf %s "$input" | tr [[:lower:]] [[:upper:]]
      

      您可以在“系统偏好设置”中为其设置一个快捷方式(如 ⌘F19)。

      Automator 默认使用 C 语言环境,因此如果没有 LC_CTYPE=UTF-8 字符类将仅包含 ASCII 字符。

      【讨论】: