Site icon 峰哥分享

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

在有些情况下,我们不能把剪贴板中的内容直接粘贴出来使用. 比如有些分段式的银行卡账号,在网页上输入的时候,如果你用手打,它就会自动跳到下一个输入框, 而你直接粘贴的话, 它只会贴在第一个框里. 而对我来说,我的情况是我会批量运行一些指令, 就像在 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, 有小伙伴知道的可以留言教我.

Exit mobile version