当前位置: 首页 > 知识库问答 >
问题:

它们真的是虚拟代码吗?

赵英范
2023-03-14

某些键的虚拟键代码,如shift, [ , ],Del等,在java中显示为与C不同的值 /C.例如:

Key     Java       C / C++
Shift   16         160
[       91         219
]       93         221
\       92         220
Del     127        46
Window  524        91

这是什么原因?这些代码是虚拟代码还是不同的类型?对于包括字母、数字在内的键,功能键(F1-F12)、退格、'等是相同的。

我可能误解了一个概念,在这种情况下,请澄清。

在C/C中登记

KBDLLHOOKSTRUCT * kbhook = (KBDLLHOOKSTRUCT *) lParam;
printf("%u\n",kbhook->vkCode);

签入Java

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {                                       
    int code = evt.getKeyCode();
    // code isEqualTo KeyEvent.VK_DELETE : NOTE

}

Ref:KeyEvent类

共有3个答案

蒋默
2023-03-14

MSDN库说使用虚拟键代码:“键盘上的每个键在按下并释放键时都会生成一个扫描代码。扫描代码是标识密钥的硬件相关编号。键盘驱动程序将每个扫描代码转换或映射到虚拟键代码。虚拟密钥代码是标识密钥的硬件无关的数字。由于键盘布局因语言而异,因此 Windows CE 仅提供所有键盘上的核心虚拟键代码集。这个核心集包括英文字符,数字和一些关键键,如功能和箭头键”。

这是一组虚拟键代码-这些是您从KBDLLHOOKSTRUCT的vkCode成员中检索到的值。

赵正雅
2023-03-14

虚拟键代码是典型键盘上某些键的MS特定表示。因此有虚拟修饰符。请注意,您为Java指定的值表示使用ASCII编码时这些键的值。它们构成较低ASCII编码的一部分。如果使用OTOH,您使用了标准的C函数,例如getchar,如果您使用的是ASCII编码,您将获得与Java相同的值。但是,您可以使用一种特殊的(考虑非ASCII/非Unicode)编码,其中这些字符将被分配不同的整数。

ASCII集特别是经过仔细设计的,要记住某些常用的操作(如从小写到大写)等可以进行优化。

万俟超
2023-03-14

我应该说,虚拟钥匙代码是非常虚拟的。

对于您尝试与之互操作的每个平台,如果没有JavaKeyToWin32Key、Win32KeyToJava等代码,您将无法逃脱。

我相信所有这些密码都是历史性的。一些来自硬件设计决策(看看苹果的“现代”键代码,其中0代码是“a”,1是“s”,2是“D”,等等-我应该继续,还是你从键盘布局中得到“模式”。

“为什么没有标准?”

这是公事,不是私事。三四十年前,每个人都在从头开始开发自己的硬件,二十五年前,所有人都在努力打造最好的CPU,15年前,一切都始于“平台”,在那里,一切都再次被重新定义,但也应该与现有解决方案保持兼容性(当然是同一家公司)。

Java是一种标准,但并非适用于所有人。它已经是所有操作系统之上的一个抽象,具有自己的一组键代码。所以“VK_”是微软遗留下来的,Java密钥代码可能会受到Sun Solaris操作系统的影响,但我不确定。

 类似资料:
  • 8.4.1 什么是虚拟PV 虚拟PV代码允许触发特定事件时将其作为虚拟网页浏览处理,允许自定义页面的URL与页面标题。 代码如下: //只修改url stm_clicki('send', 'pageview', '/path'); //同时修改url和title stm_clicki('send', 'pageview', {'page': '/path', 'title': '标题'});

  • 我正在我的人工智能实验室下学习Prolog,从源码开始学习Prolog吧! 在第五章中,我们来学习累加器。作为示例,给出了这两段代码。要查找列表的长度 无累加器: 带累加器: 我不明白,这两个片段在概念上有什么不同?累加器到底有什么不同?又有什么好处? 累加器听起来像中间变量。(如果我错了请纠正我。)到目前为止,我已经在我的程序中使用了它们,所以这真的是一个很大的概念吗?

  • 透明地代理虚拟机 本演练说明了如何使用mitmproxy设置透明代理。在本示例中,我们将VirtualBox VM与Ubuntu代理计算机一起使用,但是常规Internet <–> Proxy VM <–>(虚拟)内部网络设置可以应用于其他设置。 1.配置代理虚拟机 首先,我们必须找出Ubuntu用哪个名称映射了我们的网络接口。您可以通过以下方式找到此信息: ip link 通常在Ubuntu和V

  • 本文向大家介绍易语言检测程序是不是在虚拟机中运行的代码,包括了易语言检测程序是不是在虚拟机中运行的代码的使用技巧和注意事项,需要的朋友参考一下 汇编检测虚拟机的代码 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。如果你想了解更多相关内容请查看下面相关链接

  • 简单地说,虚拟机(Virtual Machine)就是允许我们在当前操作系统中运行其他操作系统的软件,本质上和 VS、QQ 这些应用程序一样。 所以,只要我们在电脑(PC 或笔记本等)上安装好虚拟机软件,就可以模拟出来若干台相互独立的虚拟 PC 设备,每一个都如何一台真实的计算机。在此基础上,我们可以给每台虚拟的 PC 设备安装指定的操作系统,这样就可以实现在一台电脑上同时运行多个操作系统。 另外

  • 本文向大家介绍什么是虚拟DOM?相关面试题,主要包含被问及什么是虚拟DOM?时的应答技巧和注意事项,需要的朋友参考一下 虚拟 dom 是相对于浏览器所渲染出来的真实 dom 的,在react,vue等技术出现之前,我们要改变页面展示的内容只能通过遍历查询 dom 树的方式找到需要修改的 dom 然后修改样式行为或者结构,来达到更新 ui 的目的。 这种方式相当消耗计算资源,因为每次查询 dom 几