我在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字符。