Pei*_*ayz 7 python windows keycode visual-c++
我正在使用msvcrt.getwch以Windows为目标的Python进行交互式提示。
该文件说:
读取按键并以字节字符串形式返回结果字符。什么也没有回应到控制台。如果尚未提供按键,则该呼叫将被阻止,但不会等待按下Enter键。如果按下的键是特殊功能键,则将返回“ \ 000”或“ \ xe0”;下一次调用将返回键码。使用此功能无法读取Control-C按键。
我发现F10使用前者- \x00D,F11使用后者\xe0\x85。
但是,这并未说明键码是什么。这很重要,因为\xe0除了其他键之外,我没有键(à),因此无法测试输入此值的输出。
其他方面
例如,我尝试过两种方式将此键粘贴到提示中。
\x16。这是ASCII中的同步空闲密钥。[1](这是我输入的组合键。)右键单击(在PS中粘贴)-结果仅\xe0被输入。
我不确定Power Shell和Visual C ++是否允许我粘贴转义序列,或者这是对该键的实际处理。
鉴于这msvcrt似乎是Visual C ++的包装,我也查看了该文档。
_getch和_getwch函数从控制台读取单个字符,而不回显该字符。这些功能均不能用于读取CTRL + C。读取功能键或箭头键时,每个功能必须调用两次;第一次调用返回0或0xE0,第二次调用返回实际的密钥代码。
这也没有说出键码是什么。
我在网上看过,但是我只能找到有关虚拟键码的信息,但是这表示F10是\x79,F11是\x7A。由于此函数未返回这些值,因此我知道它没有引用这些键码。
仅在Visual C ++的帮助下对此做出响应。
函数getwch将返回扫描代码而不是虚拟键代码。因此,对虚拟键码的引用无效。
此外,根据MSDN _getch,_getwch文档,在读取功能键或箭头键时,每个功能必须调用两次;第一次调用返回0或0xE0,第二次调用返回实际的密钥代码。
以下代码将返回有效的扫描代码:
#include<stdio.h>
#include <ctype.h>
int main()
{
wchar_t ch = _getwch(); //Will return '0'
ch = _getwch(); //Will return valid scan code
}
Run Code Online (Sandbox Code Playgroud)
为了回答您的问题,“ 键盘扫描代码规范”中提供了有效的扫描代码列表。
例如,对上述函数的第二次调用将为F10键返回68(0x44),并且在MSDN中也是如此:

密钥扫描代码中存在相同的列表,但是由于文档较旧而无法通过身份验证。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |