You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hammerspoon的hs.eventtap.keyStrokes中添加换行并绑定快捷键输出多行文本?

解决Hammerspoon绑定快捷键输出多行文本的问题

嘿,刚上手Hammerspoon遇到这个小问题很正常,我来给你两个靠谱的解决方案:

方法一:用Lua长字符串直接包含换行(推荐)

其实hs.eventtap.keyStrokes()是支持直接识别\n换行符的,用Lua的长字符串语法[[...]]可以轻松写出多行文本,不需要单独调用return事件,代码更简洁易读:

hs.hotkey.bind({"cmd", "shift"}, "l", function()
  -- 用长字符串包裹多行内容,换行直接保留
  local codeSnippet = [[
from sklearn import metrics
from sklearn.cross_validation import train_test_split
]]
  hs.eventtap.keyStrokes(codeSnippet)
end)

这种方式会一次性把所有内容(包括换行)模拟成键盘输入,大部分应用都能正确识别换行,体验最好。

方法二:手动发送Return键(适合特殊场景)

如果某些应用对keyStrokes()的换行支持不好,可以手动发送Return事件,但要注意加一点延迟——因为Hammerspoon的事件发送速度很快,有些应用可能来不及响应连续的键盘事件,导致换行失效:

hs.hotkey.bind({"cmd", "shift"}, "l", function()
  hs.eventtap.keyStrokes('from sklearn import metrics')
  hs.timer.usleep(10000) -- 延迟10毫秒,给应用足够的响应时间
  hs.eventtap.keyStroke({}, 'return') -- 发送无修饰键的Return
  hs.timer.usleep(10000)
  hs.eventtap.keyStrokes('from sklearn.cross_validation import train_test_split')
end)

你之前的代码可能就是因为没有加延迟,导致Return事件被忽略了,加上短延迟后就能正常工作啦。

内容的提问来源于stack exchange,提问作者Tovio Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:56:02