繁体   English   中英

C#ASCII到键码?

[英]c# ascii to keycode?

[DllImport("user32.dll")]
private static extern short VkKeyScan(char ch);

set = set + "\r\n";
int txL = set.Length;
for (int o = 1; o < (txL); o++)
{
    short vkey = VkKeyScan(set[o]); //MessageBox.Show(vkey.ToString());
    Keys retval = (Keys)(vkey & 0xff);
    int modifiers = vkey >> 8;
    if ((modifiers & 1) != 0) retval |= Keys.Shift; 
    if ((modifiers & 2) != 0) retval |= Keys.Control;
    if ((modifiers & 4) != 0) retval |= Keys.Alt;
}

该函数将标准的字母和键盘布局转换为KeyCode,我如何将所有其他Unicode转换为中文以及ASCII转换为符号? 它对于班次键也不起作用:“!,@,#,$ ...”那么,如何结合ALT和其他键,然后转换为KeyCode呢? 例如ALT+33 = "!" and KeyCode = 0xF0 ALT+33 = "!" and KeyCode = 0xF0

有许多没有相应键的Unicode字符。 例如,我有一个105键的键盘,而大约有一百万个不同的Unicode字符。 同样,键码-字符映射取决于键盘布局。 因此,没有通用的答案可以解决您的问题。

ALT代码只是Unicode符号十六进制值的十进制表示。 例如,如果您查看官方图表,您将看到!的值! 如果将其从十六进制转换为十进制,则为0021则得到33 ,这就是alt + numPad-3 + numPad-3的来源。

通过查看来自http://www.unicode.org/charts的适当的PDF,可以获得所有可能的Unicode密钥代码值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM