在标准.NET中,存在ToasCi/TunCiCod和MapVirtualKey函数来处理这个功能,尽管它似乎没有等效的函数或库没有被引入到Metry/WiRT中。如果metro/winrt中实际上没有等效的函数或库,那么定制文本输入框将很难在非美国国家上市。
具体例子:在我的自定义控件中,如果法语键盘用户按_、_、_或_键,则无法将它们转换为正确的字符。例如,_使用virtualkey.number7的扫描代码,据我所知,无法知道键盘布局,也无法根据当前键盘布局轻松翻译扫描代码。
有人知道这件事吗?

最佳答案

我想这要看你在找什么了。如果您正在寻找一个简单的英文字母或数字,只需执行以下操作:

private static char? ToChar(VirtualKey key, bool shift)
{
    // convert virtual key to char
    if (32 == (int)key)
        return ' ';

    VirtualKey search;

    // look for simple letter
    foreach (var letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    {
        if (Enum.TryParse<VirtualKey>(letter.ToString(), out search) && search.Equals(key))
            return (shift) ? letter : letter.ToString().ToLower()[0];
    }

    // look for simple number
    foreach (var number in "1234567890")
    {
        if (Enum.TryParse<VirtualKey>("Number" + number.ToString(), out search) && search.Equals(key))
            return number;
    }

    // not found
    return null;
}

祝你好运!

08-18 21:54