我有时会处理虚拟机VMware vCloud 总监控制台或在数字海洋网络控制台。两者都可以在浏览器中运行。我还在 IBM 服务器上管理了一些 RSA 适配器,这些适配器在 Web 浏览器中使用 Java 插件。问题是,通常各种按键(例如Ctrl+ k)/字符(例如Shift+ 7)无法到达(虚拟)服务器或(虚拟)服务器接收到错误的键码,并且如果出现这种情况,则需要在虚拟服务器中使用屏幕键盘可用。我想没有解决方法,它完全取决于这个基于网络的控制台的开发人员,甚至取决于浏览器运行的操作系统?
答案1
为 kvm/ip 产品编写基于 Web 的终端的可怜人几乎肯定不会取得绝对的成功。即使你忽略unicode问题并只关注美国市场,也会遇到太多挑战。我将忽略视频/鼠标问题,因为它们大部分已解决(除了高帧速率的电影/游戏)并专注于键盘。
我的第一个键盘是ascii。它有 8 位并行带状电缆,将其连接到 z80 机器。这在大多数情况下运行良好,z80 使用 ascii 进行所有操作,并且由于 Shift 键没有 ASCII 代码,它会以快乐的方式运行,从不知道或关心您是否按下了 Shift 键。 Shift 完全是键盘的责任,控制键也是如此(没有 Alt 或 Meta 键),而且 ctrl t 和 shift ctrl t 之间没有区别这一事实没有人打扰,键盘的责任只是发送 ascii。我所有早期的键盘都只是发送 ascii,无论是并行还是串行。只要您不想发送元音变音或其他无法用 ascii 编码的内容,这种方法就可以正常工作。
现在 IBM PC 有所不同,它能够更改其使用的字符集。 (我相信这种做法在此之前可能已经在其他地方使用过,但这是我第一次接触不支持 ascii 的键盘。) PC 有一个三层键盘模型,至今仍在使用,尽管略有改变。它使用扫描码、按键码和字符码。扫描码是纯硬件抽象。按键按布局顺序编号,与 IBM 之外的任何标准无关。每个键都有一个按下代码和一个释放代码。这些新闻和发布代码称为扫描代码。然后,扫描代码被映射到键代码(发布事件使用与新闻事件相同的键代码,但处理方式不同)和字符代码(默认为 ascii,但如果您需要欧洲语言,则可以更改)。如今,unicode 已基本取代了 ascii,但如果扩展得更薄,层也基本不会发生变化,因为大多数窗口环境为没有字符代码的按键提供按键事件。现在的挑战是撤消所有这些以及网络浏览器放入的内容。