创建用于粘贴Mac OSX中特定文本短语的热键或键盘快捷方式


21

我有一个经常在多个应用程序中使用的文本短语(实际上是几个阶段)。我想创建一个键盘快捷方式或热键,将光标放在文本输入字段(Apple Mail,Microsoft Word,TextEdit,TextWrangler,浏览器窗口等)中的任何位置粘贴此文本短语,而不是不断复制和从便签粘贴。

我不希望不必购买任何应用程序(似乎Keyboard Maestro具有此功能,但为此仅支付36美元似乎很愚蠢),尽管免费应用程序会很好。尝试在“系统偏好设置”>“键盘”>“键盘快捷键”下查找,但没有明显的解决方案,我发现的所有AppleScript似乎都无法正确翻译。我在该论坛上为Windows用户(例如AutoHotKey)找到了针对此问题的其他解决方案,但对于Mac用户却没有。

Answers:


16

使用AppleScript键入文本的最简单方法是运行:

tell application "System Events" to keystroke "foo bar"

您可以通过在Automator中创建新的快速操作(以前称为Service)来使用键盘快捷键来触发此操作。将其设置为接收No Input,然后将“运行AppleScript ”从左窗格向右拖动。

它看起来应该像这样:

保存它,然后在“ 系统偏好设置”»“键盘”»“键盘快捷方式”下为该服务分配键盘快捷方式


哇,非常感谢@slhck!我试过了,但是在最后一步遇到了问题。当我进入“系统偏好设置”中的“键盘快捷键”时,它没有显示在“服务”菜单中。我知道它可以运行,因为当我打开Automator并单击“播放”时,该文本将在上一个应用程序中键入,但不会显示在服务中,因此即使将其保存在“库”>“服务”文件夹中,我也可以添加键盘快捷键。根据我在Google搜索的其他论坛的建议,我再次检查了服务输入是否设置为“服务收到:无输入”(确实如此),并尝试重新启动Finder。有什么想法吗?
Ruthie 2013年

所以您从Automator中保存了它?通常,它应该显示在底部“ 服务”和“ 常规”下的“键盘快捷键”选项中。您是否尝试注销然后重新登录,甚至重新启动?
slhck

@slhck听起来很不错,但是您能详细说明一下答案吗?我对Automator的工作方式不太熟练,当我启动它时,它会问我“为您的文档选择一种类型”,然后我有点迷失了方向。我现在会讲乔纳森·惠伊(Jonathan Huie)的答案,但这仍然意味着要键入一些内容……谢谢!
MicroMachine 2015年

@fabriced您需要在Automator中创建一个服务
slhck

2
我发现这在文本编辑器中有效,但不适用于网站上的文本字段。还有谁?
艾略特2015年

6

keystroke命令只能用于插入在当前键盘布局上可以找到的字符,并且较长的文本字符串会有明显的延迟。您还可以直接插入文本:

该方法也不是真的可用。在10.7和10.8中有一个错误,其中直到您将鼠标悬停在服务菜单上时,Automator服务的快捷方式才总是起作用。

我已使用FastScripts将此脚本分配给F3:

try
    set old to the clipboard as record
end try
try
    tell application "System Events"
        key code 123 using {option down, shift down}
        keystroke "c" using command down
    end tell
    delay 0.05
    set input to the clipboard
    read POSIX file "/Users/lauri/Notes/snippets.txt" as «class utf8» using delimiter linefeed
    repeat with p in result
        considering case
            if p starts with (input & " ") then
                set the clipboard to text ((offset of space in p) + 1) thru -1 of p
                tell application "System Events" to keystroke "v" using command down
                delay 0.05
                exit repeat
            end if
        end considering
    end repeat
end try
try
    set the clipboard to old
end try

snippets.txt看起来像这样:

m name@example.com
cmd ⌘

另一种选择是使用DefaultKeyBinding.dict。这将使⌥M或⌥X和m插入电子邮件地址:

{
    "~m" = (insertText:, "name@example.com");
    "~x" = {
        "m" = ("insertText:", "name@example.com");
    };
}

您也可以在按住键时将自定义文本添加到显示的弹出窗口中。看到这个问题


2

看一下名为“ Textexpander”的应用程序,它可以让您轻松定义诸如@dd之类的文本短语,当键入这些文本短语时,将扩展为所定义的内容(在这种情况下为实际日期)。

AFAIK这是共享软件。因此它实际上不是免费的,但演示模式没有时间限制。


如果对其他用户有用,请快速注意一下-TextExpander在X11终端窗口上不起作用。
ggkmath13年

2

Alfred应用程序允许您使用“工作流程”和“代码片段”功能来执行此操作,以及执行许多其他操作。我一直在使用Alfred,并强烈推荐它。要解锁工作流程,您需要支付Powerpack许可证的费用,但您不会后悔。😉


我同意,这是拥有Mac的任何人都应该拥有的最有用的应用程序之一。我完全从自定义的Automator服务迁移到了Alfred。
slhck

1

只需单击:系统偏好设置,键盘,文本,然后输入快捷方式和短语


1
我喜欢这个答案,但是它实际上并不允许“键盘快捷键”或“热键”,仍然需要输入由机器代替的文本(而不是键的组合)。
MicroMachine 2015年

1
这似乎仅在少数选定的应用程序中有效。它并不在多数,我想它的地方工作,比如浏览器输入字段,我的邮件客户端(雷鸟),终端等
不要惊慌

0

一个名为“火星人键盘”的单独键盘将容纳文本字符串,例如句子,甚至是简短的段落。它可以避免您日复一日地键入烦人的讨厌的按键。这些键的工作方式类似于“粘贴”键。它具有使用Shift键将所有快捷方式存储在单个键盘上的Word中的功能。它主要用于专业用途,因此有点贵。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.