输入 – 跨所有桌面操作系统截取numlock键的工具是什么?

基本上我想编写一个应用程序,以便在按下Num Lock键时捕获.这需要跨
windows,
linux,mac支持.

应用程序可以在浏览器中以某种方式运行吗?使用HTML5等.

应该用Qt C编写应用程序,如果是这样,Qt库是否有对interceptNumLock()的跨平台调用?

它可能在Java上完成吗?

通过跨浏览器插件?

上述方法的优点和缺点是什么?如果是这样,我可以在考虑缺点和优点之后做出决定.

最佳答案 你可以用Java做到这一点. Windows,Linux和MacOS都支持Java.这是一个班轮:

boolean zCapsLockOn = java.awt.Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);

要在二进制代码中执行相同操作,需要您(A)假设它是x86机器,并且(B)检测操作系统,这将是复杂的.但是,如果您这样做了,那么您可以根据操作系统特定的调用来获取封锁状态.

您可以使用以下代码与Qt进行此平台检查:

bool QMyClass::checkCapsLock()
{
    // platform dependent method of determining if CAPS LOCK is on
#ifdef Q_OS_WIN32 // MS Windows version
    return GetKeyState(VK_CAPITAL) == 1;
#else // X11 version (Linux/Unix/Mac OS X/etc...)
    Display * d = XOpenDisplay((char*)0);
    bool caps_state = false;
    if (d)
    {
        unsigned n;
        XkbGetIndicatorState(d, XkbUseCoreKbd, &n);
        caps_state = (n & 0x01) == 1;
    }
    return caps_state;
#endif
}

请注意,如果不通过操作系统,您无法直接从BIOS获取二进制代码来获取CAPSLOCK状态,这就是为什么任何此类代码都依赖于操作系统的原因.

点赞