2

我需要检测 CapsLock 键是否被锁定(活动),但是当我尝试这个时:

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"但问题仍然存在。

有什么问题?谁来帮帮我?

谢谢

4

1 回答 1

3

此代码在 Windows 10 桌面版中很好,可以完美运行,但在 widows 10 移动版中则不行

实际上,Windows 10 Mobile OS 的虚拟键盘中并没有 CapsLock 键,如果我们需要确保输入大写字母,只需按两下 Shirt 键即可。所以在这种情况下你无法检测到它。

在此处输入图像描述

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

如果您确实需要这样做,请考虑使用CoreWindow.CharacterReceived事件来检测当前的 KeyCode 以检查用户是否输入了大写字母。在这种情况下查看我的答案

于 2016-01-06T09:03:07.930 回答