因此,我尝试使用{/ {1}}获取按下的键的名称,使用原始输入给出的make / scan代码和扩展键标志:
// Created a JsonSerializerSettings and passed it to DeserializeObject
var jsonSettings = new JsonSerializerSettings { Error = ErrorHandler };
JsonConvert.DeserializeObject<ParkingOfferDetailsDTO>(responseJson,jsonSettings);
/// actual handler method
List<string> errors = new List<string>();
private void ErrorHandler(object sender,ErrorEventArgs e)
{
errors.Add(e.ErrorContext.Error.Message);
e.ErrorContext.Handled = true;
}
这对于大多数键都有效,但是GetKeyNameText
(扫描代码53)和std::wstring GetKeyName(const RAWKEYBOARD& info)
{
WCHAR n[128];
const int l = GetKeyNameTextW((info.MakeCode << 16) | ((info.flags & RI_KEY_E0) != 0 ? 1 << 24 : 0),n,ARRAYSIZE(n));
if(l == 0) { return L""; }
return std::wstring(n);
}
(扫描代码55)给出错误的结果:它们都给出字符串“(ZEHNERTASTATUR)”(德语键盘)布局,因此英语为“ Num”)-因此名称中缺少Num /
或Num *
。
我已经用两个不同的键盘测试了这个结果,结果相同(使用Windows 10 btw),我是否缺少某些东西?为什么这两个键的名称不正确?