如何在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
相关产品推荐
相关产品推荐

