用一个键调用键盘快捷键



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

当选择文本时:

大写是Ctrl+C

Make Lower Case is Ctrl+L

Make Upper Case is Ctrl+U

很有意义,但是现在我想创建一个Applescript来调用这些快捷键,只需要CAPS键。

我想要的是:

当选择文本时:

双击CAPS调用Ctrl+C

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

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

否则CAPS正常。

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

我认为这即使不是不可能,也是很难做到的。我以前写过applesscripts来检测大写锁定。(比如这个)但是它们设置起来很笨拙。并要求其他组件运行,然后即使我使用或编写了一个应用程序在Objective-C这意味着第三方应用程序必须运行。

最简单的解决方案是使用功能键。可以使用三个

各一个

您可以使用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字符。

最新更新