Javaでできます。Windows、Linux、および MacOS はすべて Java をサポートしています。それはワンライナーです:
boolean zCapsLockOn = java.awt.Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
バイナリ コードで同じことを行うには、(A) x86 マシンであると想定し、(B) オペレーティング システムを検出する必要がありますが、これは複雑です。ただし、これを行った場合は、OS 固有の呼び出しを行って、OS に基づいて capslock 状態を取得できます。
次のようなコードを使用して、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 状態を取得することはできないことに注意してください。そのため、そのようなコードは OS に依存します。