在有些情况下,我们不能把剪贴板中的内容直接粘贴出来使用. 比如有些分段式的银行卡账号,在网页上输入的时候,如果你用手打,它就会自动跳到下一个输入框, 而你直接粘贴的话, 它只会贴在第一个框里. 而对我来说,我的情况是我会批量运行一些指令, 就像在 shell 里面运行一样, 但是在shell 里面直接粘贴是没有问题的, 但是我是在其它一些地方使用. 我需要把剪贴板里每一行的内容单独发出,而不是一次性发出. 这时候, 能把剪贴板的内容像打字一样打出来就会省很多复制粘贴的时间.
我在windows里习惯使用一个叫 hoekey 的小程序来实现这个功能. 但是在macos里面, 没有这个程序. 另外一个比较好用的程序 autohotkey 也是没有 macos 的版本.
之前试了用 automator + 内置的 keyboard shortcut 一直没有成功. 就是shortcut 不工作. 后来试了下 Alfred 的 workflow, 发现可以比较完美的解决这个问题.
设置如下
bash script 里的内容
// 到此处下载 https://github.com/minoki/InputSourceSelector
/Users/fennng/gitLocal/InputSourceSelector/InputSourceSelector select com.apple.keylayout.ABC
Javascript 里面的内容
function run(argv) {
// https://github.com/JXA-Cookbook/JXA-Cookbook/wiki/System-Events#example-of-sending-copy-command
function sendKeystroke(text) {
if (false) {
console.log("do is called");
} else {
var seApp = Application("System Events");
seApp.keystroke(text);
}
}
var query = argv[0];
console.log(query);
const lines = query.split('\n');
for (let i = 0; i < lines.length; i++) {
delay(2);
console.log('now typing ===>', lines[i]);
sendKeystroke(lines[i] + "\r");
}
}
设置完成后, 使用热键 SHIFT+ALT+V 就可以把剪贴板的内容像打字一样打出来. 不过我现在还不知道怎么样中断这个workflow, 有小伙伴知道的可以留言教我.