大写锁定检测 - Windows 10 vs Windows 10 Mobile - C#

时间:2016-01-05 12:35:50

标签: c# keyboard windows-10 windows-10-mobile capslock

我需要检测CapsLock Key是否已锁定(活动),但是当我尝试这样做时:

public void CapsLockStatus()
{
    if ((CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.CapitalLock) &
        CoreVirtualKeyStates.Locked) != 0)
    {
         //true -> Caps Lock is enable;
    }
    else
    {
        //false -> Caps Lock is disable;
    }
}

在Windows 10桌面中,它运行正常,但在Windows 10移动版中却没有。 我尝试将"GetKeyState"替换为"GetAsyncKeyState",但问题仍然存在。

问题是什么?有人帮帮我吗?

由于

1 个答案:

答案 0 :(得分:3)

  

这个代码,在Windows 10桌面上,很好,工作得很好,但在寡妇10手机不是

实际上,Windows 10移动操作系统中的虚拟键盘中没有CapsLock Key,如果我们需要确保输入大写字母,只需按两次Shirt键。因此,您无法在此方案中检测到它。

enter image description here

接下来的问题是,为什么需要在UWP移动应用中检测CapsLock Key?唯一可能的情况是密码输入和提醒用户,但据我们所知,移动用户体验与PC上的用户体验不同,如果用户按两次Shift键,他/她将注意这个变化,因为虚拟键盘占用了大量的屏幕空间。

如果您确实需要这样做,请考虑使用CoreWindow.CharacterReceived事件来检测当前的KeyCode,以检查用户是否键入了大写字母。见my answer in this case