基本上我想写一个应用程序,只要按下Num Lock键就可以捕获。这需要跨windows,linux,mac支持。
应用程序可能会以某种方式在浏览器中运行吗?使用HTML5等。
应该用Qt C ++编写应用程序,如果是这样,Qt库是否有对interceptNumLock()的跨平台调用?
是否可以在Java上完成?
通过跨浏览器插件?
上述方法的优点和缺点是什么?如果是这样,我可以在考虑缺点和专业人士之后做出决定。
答案 0 :(得分:1)
答案 1 :(得分:1)
你可以用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状态,这就是为什么任何此类代码都依赖于操作系统的原因。
答案 2 :(得分:0)
我会将其作为在浏览器上运行的普通网站应用程序来实现,在这种情况下,最好使用jQuery库,它将为您提供浏览器和系统之间的跨浏览器兼容性:
查看我的jQuery大写锁定检测器demo。您可以在Windows / Linux和不同的浏览器(Firefox,Chrome,IE)中试用它。
答案 3 :(得分:0)
Qt 4.7.4: Is there a way to find out the status of CAPS LOCK?
这是在c / c ++中实现它的方法。如果你在Qt中使用keyPressEvent,你应该能够在用户按下某个键时检测到,而你可以检查按钮的状态。