向不支持输入法的软件输入中文

问题

今天试了下 x2go 的 single application 模式,第一感觉很不错,可以把远程系统中的软件在本地打开,看上去就像打开本地的软件一样。 美中不足的就是没办法输入中文,首先远程系统的输入法没办法在这个模式下使用,而本地系统的输入法也同样不能正常工作,搞得我只能另外开个文本框输了中文粘贴过去。

不能忍

这已经不是我第一次遇到没办法输入中文的情况了。更可恶的是软件本身是支持中文的,就是没办法直接往里输中文,只能从别的地方贴过去,切来切去浪费时间不说,还打断思路。

Ditto

我装了 Ditto 代替 Windows 原生的剪贴板,在使用 Ditto 粘贴的时候突然想到,如果有一个工具能像 Ditto 一样通过全局热键呼出,然后把选择的过程(Ditto 通过 Ctrl+\` 呼出后可以从最近十次复制的内容中选择一个插入到光标所在位置)换成直接输入就好了。也就是把输入流程简化成:

  • 全局热键呼出工具
  • 在弹出窗口中输入中文
  • 回车后自动关闭这个窗口并把内容插入到目标软件

程序员

作为一个程序员,我想我该自己开发这个工具,可是,我是一个 web 程序员啊~~~该用什么工具来开发桌面应用啊~~~全局热键要怎么注册~~~剪贴板又要怎么操作~~~啊啊啊~~~~~~

issue

Visual Studio 好大,Qt 核心语言是 C++,好像还是 node-webkit 比较对口。不过还不确定它支不支持全局热键,搜搜看,发现有个 issue 是关于实现全局热键的,好多人关心这个问题啊,还有人悬赏50美金,然后有人加到了100美金,一条一条往下看,可一直没人明确的说句是不是已经实现了,然后突然就看见有人提到 AutoHotkey。顺便说句,这个问题最后以 @zhchbin 赢得 160 美金告结

AutoHotkey

官网很专业,给人可靠的感觉;扫了一遍简介,立马下载安装;翻翻手册,试试教程;然后就把我要的功能做出来了,总共写了三行代码 @_@,找对工具很重要啊

1
2
3
#`::
InputBox clipboard, Send, , , , 102
Send ^v

依次是:

  • 监听全局热键 Win+\`(参考的 Ditto);
  • 弹出输入框,并把输入内容存入剪贴板;
  • 把剪贴板的内容贴到光标位置。

exe

写完后用自带的工具做了一个可执行文件 http://pan.baidu.com/s/1hqy2Z8g ,为了容易辨认还换了个 icon,以前学 Inkscape 画的。

结束

结束了。