Macos 把剪贴板的内容打字出来

在有些情况下,我们不能把剪贴板中的内容直接粘贴出来使用. 比如有些分段式的银行卡账号,在网页上输入的时候,如果你用手打,它就会自动跳到下一个输入框, 而你直接粘贴的话, 它只会贴在第一个框里. 而对我来说,我的情况是我会批量运行一些指令, 就像在 shell 里面运行一样, 但是在shell 里面直接粘贴是没有问题的, 但是我是在其它一些地方使用. 我需要把剪贴板里每一行的内容单独发出,而不是一次性发出. 这时候, 能把剪贴板的内容像打字一样打出来就会省很多复制粘贴的时间.

我在windows里习惯使用一个叫 hoekey 的小程序来实现这个功能. 但是在macos里面, 没有这个程序. 另外一个比较好用的程序 autohotkey 也是没有 macos 的版本.

之前试了用 automator + 内置的 keyboard shortcut 一直没有成功. 就是shortcut 不工作. 后来试了下 Alfred 的 workflow, 发现可以比较完美的解决这个问题.

设置如下

CleanShot 2022-04-10 at 14.25.37.png

CleanShot 2022-04-10 at 14.27.08.png

CleanShot 2022-04-10 at 14.27.29.png

CleanShot 2022-04-10 at 14.27.38.png

CleanShot 2022-04-10 at 14.27.51.png

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, 有小伙伴知道的可以留言教我.

发表评论

您的电子邮箱地址不会被公开。