如何在Hammerspoon中为hs.eventtap.keyStrokes添加换行符?

时间:2018-03-29 13:58:01

标签: lua hammerspoon

我刚开始使用Hammerspoon。我按 Cmd + Shift + l 尝试输出多行文字。

这是我到目前为止所尝试的内容:

hs.hotkey.bind({"cmd", "shift"}, "l", function()
  hs.eventtap.keyStrokes('from sklearn import metrics')
  hs.eventtap.keyStroke("return")
  hs.eventtap.keyStrokes('from sklearn.cross_validation import train_test_split')
end)

我也试过内联" \ n"和"%\ n"

如何绑定组合键以输出多行文字?或者,如何发送换行符?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我尝试了你在上面尝试的内容,尽管它在许多应用程序中都有效,但它仍然无法在Chrome中运行。我使用了粘贴板(剪贴板)作为解决方法。

jira_text = [[a 
long 
multi-line
string]]

-- Hotkey JIRA text
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "J", function ()
  hs.alert.show("Remove this message after debugging!")
  --hs.eventtap.keyStrokes(jira_text)#don't do this!
  hs.pasteboard.writeObjects(jira_text)
  hs.eventtap.keyStroke("cmd", "v")
  end)
--

您可以使用自定义命名的粘贴板进一步改进它,这样就不会覆盖剪贴板内容(如果您愿意)。

答案 1 :(得分:0)

我也遇到了这个问题,并通过在加载和粘贴多行字符串之前将系统粘贴板的内容保存到临时粘贴板来改进 Josh Fox 的答案。

MULTILINE_STRING = [[multi
line
string]]

-- Paste Multi-line String
hs.hotkey.bind({'ctrl', 'cmd'}, 'F1', function()
    -- save clipboard data to temp
    tempClipboard = hs.pasteboard.uniquePasteboard()
    hs.pasteboard.writeAllData(tempClipboard, hs.pasteboard.readAllData(nil))
    
    -- load string into clipboard and paste
    hs.pasteboard.writeObjects(MULTILINE_STRING)
    hs.eventtap.keyStroke({'cmd'}, 'v')

    -- recall clipboard data
    hs.pasteboard.writeAllData(nil, hs.pasteboard.readAllData(tempClipboard))
    hs.pasteboard.deletePasteboard(tempClipboard)
end)