使用一个键调用键盘快捷键

时间:2013-03-10 04:41:10

标签: applescript case systemevent

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

选择文字时:

大写是 Ctrl + C

使小写字母 Ctrl + L

使大写字母 Ctrl + U

有道理,但现在已经布局了我想创建一个Applescript,只用 CAPS 键来调用这些快捷方式。

我想要的是:

选择文字时:

双击 CAPS 调用 Ctrl + C

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

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

否则 CAPS 正常运作。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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