有没有办法找出必须按下哪些键或键组合才能获得特定字符。对于像“1”、“a”这样的字符很容易,但对于像“.”、“_”或“ü”这样的其他字符则不那么容易。任何想法 ?谢谢。
问问题
1781 次
2 回答
0
这是“特殊字符”的完整列表。这些实际上是字符实体,其中为一个字符提供了特定的代码。
这主要用于 HTML 中,其中代码将提供序列,但在客户端他们将看到字符实体。
这里有一个可能重复的答案,如何从虚拟键代码转换为 System.Windows.Forms.Keys
编辑 还有另一个带有“。”等字符的重复项。此处:如何将字符转换为等效的 System.Windows.Input.Key 枚举值?
于 2013-06-26T07:46:32.513 回答
0
感谢您发布的链接,我找到了我在此处发布的解决方案。输入是一个字符,输出是 System.Windows.Forms.Keys 的列表。第一个键是实际键,列表中的其他键(如果有)是修饰键。
[DllImport("user32.dll")]
static extern short VkKeyScan(char ch);
public static List<Keys> FromCharacterToKeys(char c)
{
var key = BitConverter.GetBytes(VkKeyScan(c));
if (key[1] > 0)
{
var list = new List<Keys> {(Keys) key[0]};
list.AddRange(ConvertModifierByte(key[1]));
return list;
}
else
{
return new List<Keys> { (Keys)key[0] };
}
}
private static List<Keys> ConvertModifierByte(byte modifier)
{
switch ((short)modifier)
{
case 1:
return new List<Keys> { Keys.Shift };
case 2:
return new List<Keys> { Keys.Control };
case 4:
return new List<Keys> { Keys.Alt };
case 6:
return new List<Keys> { Keys.Control, Keys.Alt };
default:
return new List<Keys> { Keys.None };
}
}
于 2013-06-26T13:13:35.283 回答