问题标签 [scancodes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1438 浏览

keyboard - 操作系统和实现独立访问键盘?

我用 MSVC++ 制作了一个 FPS 游戏,它在 Windows 上运行得很好。但是现在我正在尝试使它可移植(至少我想创建一个 linux 和一个 Windows 版本),所以我决定将 IDE 更改为 Code::Blocks 并将框架更改为 wxWidgets。但似乎不同系统上的虚拟键码和扫描码是不同的。

早些时候我经历过,即使在相同的操作系统但不同的计算机上,虚拟键码也可能不同(我收到关于他们无法控制角色的错误报告(取决于 numlock 状态,哈哈,不是开玩笑),这在更改时已修复使用扫描码而不是 virtkey 码的代码)(编辑:使用 wxWidgets,小键盘上的 virtkey 和扫描码都有不同的值,具体取决于 numlock 状态,砰!)

现在使用 wxWidgets 似乎 wxKeyEvent::GetRawKeyCode 和之前从 WM_KEYDOWN 的 lParam 获得的代码是不同的。而且我还从 GetRawKeyCode 在 linux (ubuntu) 上获得了完全不同的扫描代码。

好吧,我可以通过按所有键并查看它给出的代码来制作自己的扫描码表,但是ubuntu在我的笔记本电脑上运行的唯一问题,并且笔记本电脑没有完整的键盘......但我需要所有这些使控制设置工作。

那么问题来了:是否有一种标准的跨平台方式来为同一个键(更准确地说是同一个位置的键)获取相同的代码?(至少在 Windows 和 linux 上)

0 投票
2 回答
1398 浏览

windows - 按键时的扫描码不同。微软规范错了吗?

我正在使用 Windows XP 专业版 SP3。标准英文键盘。我住在美国; 从来没有碰过键盘设置。库存安装。因此,当我按检查我的程序返回的扫描码时,它们如下所示:

A = 30
S = 31
D = 32
F = 33
G = 34

当我检查微软规范(文档的第 11 页:: http: //download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc )它说:

A = 31
S = 32
D = 33
F = 34
G = 35

他们落后 1 分!任何想法为什么?

0 投票
2 回答
6434 浏览

c++ - SendInput() 不是“发送”正确的移位字符吗?

VkKeyScanEx 为'/'和'?'返回不同的键码(相同的键),但是如果你尝试使用这个方法写一个包含'?'的消息,它只会写'/'。我不知道发生了什么事。';' 也会发生同样的事情 和 ':'。

我部分不理解键码和扫描码。大多数字符都有一个虚拟键码,但是我找不到类似的问号。它们必须存在,但没有列出?

0 投票
2 回答
1462 浏览

cocoa - OS X Cocoa - 将虚拟扫描代码与 Char 相互转换

是否有可可/碳等效于 Windows 上的 VkKeyScan 和 ToUnicode 函数,用于在虚拟扫描码和 unicode 字符串之间进行转换?我也想反之亦然执行此转换(从字符到扫描码)。

0 投票
1 回答
2852 浏览

winapi - 从 WM_KEYDOWN 消息中唯一识别密钥

我尝试使用 wParam 提供的虚拟键代码,但效果不佳:

  • 多个键映射到同一个键码
  • 有些键根本无法识别
  • 虚拟键似乎适应了键盘布局(我不想要/不需要)

然后我看到 lParam 会给我一个扫描码和一个“扩展”标志,当这样计算时,它似乎为键盘上的每个键产生不同的值:

即使在不同的键盘/系统中,这个值对于键盘上的同一个键是否总是相同的?

0 投票
1 回答
8501 浏览

linux - 获取字符的键盘扫描码

我想与 Virtualbox-VM 交互以进行 Virtualbox-Guest-Additions 的无人值守安装。因此,我必须将击键发送到 VM。我可以通过使用 VBoxManage-API 来做到这一点,我将扫描码的 HEX 发送到 VM:

现在我想向虚拟机发送一个完整的命令,比如:

所以我必须将该字符串的每个字符转换为扫描码,并使用 VBoxManage 将其发送到 VM。

如何在 Linux 上将这些字符转换为相应的键盘扫描码?我的虚拟机与我的主机具有相同的键盘映射。我正在寻找可以这样使用的东西:

?

0 投票
4 回答
12908 浏览

c - 如何在 linux 中立即捕获击键?

可能重复:
Linux 中的 getch() 和 getche() 等价于什么?

我是linux编程的新手。:-)

我只是想知道我的程序(使用C语言)是否可以立即在 linux 中捕获每个击键,然后决定是否回显它以及如何显示它,就像 telnet 一样。

例如,如果用户点击“A”,我希望程序显示“B”,如果他输入“B”,则需要“C”,等等。

这听起来很有趣而且没用。我只是对此感到好奇。

0 投票
1 回答
4594 浏览

java - 虚拟码和扫码的区别

Virtual Key Code和有什么区别Scan Code我在这里阅读了有关扫描码的信息,但我不明白虚拟代码的用途是什么,以及扫描代码与虚拟代码有何不同?

例如在Java中:

C中:

以上只是示例,我不希望在此基础上阐明概念。

0 投票
1 回答
203 浏览

encoding - 程序实际上是如何接收字符输入的?从扫描码到最终的原始输入位

所以,我的问题很简单:在用户“输入”(从物理键盘或任何其他方式)字符键之后,程序如何接收原始输入位?

我的意思是我知道字符编码在程序将其作为原始位接收如何工作,但我不清楚该位序列最初是如何出现的。

我一直在阅读一些内容,但结果证明这对我的 Google-fu 来说是一个艰难的搜索。似乎操作系统从输入设备(通常是键盘)接收扫描代码,使用字符映射和键盘布局将其映射到编码,然后将生成的位序列传递给程序。我对吗?如果是这样,对我来说唯一缺少的部分是:

  1. 键盘布局如何定义扫描码对应的字符?使用 Unicode 代码点?操作系统特定的内部表?

  2. 其次,程序是否在编译时定义了它期望输入(来自操作系统)的字符编码?有吗?

0 投票
0 回答
681 浏览

iphone - iPhone键盘扫码获取屏幕亮度

我正在尝试通过我的 调整 iPhone 的屏幕亮度Arduino,这就像键盘一样。不幸的是,我没有成功,因为我不知道要发送的确切扫描码。

我检查了ApplePS2Keyboard.cpp0x69 (brightness down)并发现它0x6A (brightness up) 只能在我的 Mac 上工作,但这些扫描码由于某种原因在 iPhone 上不起作用。

我也想过使用 的组合键Fn+F1,但似乎Fn不会生成任何扫描码,所以我无法继续。

[2012 年 12 月 11 日更新]:下载了 KeyCodes 应用程序并在我的 Mac 上运行它,看起来该Fn键生成了一个修饰符0x800100,但“Brightness Up”功能键不生成任何键码。是不是说扫描码0x6A被内核接收到,然后立即转化为动作而不是键码?

如果 Apple 的无线键盘可以在 Mac 和任何 iOS 设备上使用,并且假设无论您与哪个主机配对它都会生成相同的扫描码,为什么相同的扫描码不能在 iOS 设备上使用?

我已经尝试通过循环遍历可能的扫描代码来使用蛮力0x2A to 0x80,但它们都不起作用。我也尝试过暴力破解消费者报告格式的所有排列,但这也不起作用。我的蓝牙模块是 Roving Networks RN-42 HID。

请帮忙!谢谢!