好的,我已经在我的Mac(版本10.6.8)和Windows XP上本地测试了这个,好消息是它可以工作(而且非常容易)。
基本思路是:
- 知道如何从命令行打开屏幕键盘
- 设置您的浏览器以允许从JavaScript执行命令行
- 编写您的HTML :-)
两个平台的说明如下。
Mac
对于Mac,请下载并构建此Xcode项目:
确保您的构建目标与客户端Mac相同(例如64位Intel等)。输出将是一个名为keyboardViewer
的可执行文件。执行时会弹出屏幕键盘。
假设您已将keyboadViewer
保存到用户的桌面上,那么您要执行的命令(在我的情况下)是:
/Users/Oliver/Desktop/keyboardViewer
.
Windows
在Windows上,从命令行打开屏幕键盘要容易得多。以下(或类似内容)即可完成:
C:\WINDOWS\system32\osk.exe
Firefox
接下来,您需要从浏览器执行此文件(或Windows命令)。因此,请在此处安装Firefox附加组件:
此插件将允许您从JavaScript执行操作系统命令(例如执行文件)。在可以从插件执行此操作之前,您需要将此命令添加到允许的命令列表中。
要执行此操作,请转到浏览器地址栏中的about:config
。右键单击首选项列表,然后选择“新建”>“字符串”。您要添加的新首选项名称是extensions.commandrun.allowedcommands
。对于值,请输入以下内容:
- Mac上:
["/Users/Oliver/Desktop/keyboardViewer"]
- Windows上:
["C:\\WINDOWS\\system32\\osk.exe"]
HTML
现在,您将能够使用类似下面的HTML从Firefox打开屏幕键盘:
<script language="javascript">
function openKeyboard(){
CommandRun.run("/Users/Oliver/Desktop/keyboardViewer", []);
}
</script>
<input type="text" onfocus="javascript:openKeyboard();" />
在Windows上,请按以下操作进行替换:
CommandRun.run("C:\\WINDOWS\\system32\\osk.exe", []);
替代方案
一种替代方案是使用类似Adobe Air的工具编写自己的浏览器。通过这种方法,您的JavaScript调用Air应用程序,然后Air应用程序执行keyboardViewer
(或Windows等效项)。