75 lines
1.5 KiB
C++
75 lines
1.5 KiB
C++
#ifndef WL_NUMLOCK_H
|
|
#define WL_NUMLOCK_H
|
|
|
|
#include <qglobal.h>
|
|
|
|
#ifdef Q_OS_LINUX
|
|
|
|
#include <QProcess>
|
|
#include <QDebug>
|
|
#include <fstream>
|
|
#include <iostream>
|
|
#include <QDir>
|
|
|
|
// wl - WindwsLinux
|
|
class WLKeyManager{
|
|
public:
|
|
WLKeyManager(){}
|
|
|
|
bool getNumLockState(){
|
|
if (path.length() == 0)
|
|
path = getNumLockFilePath();
|
|
std::ifstream file(path);
|
|
char str;
|
|
file >> str;
|
|
file.close();
|
|
return str == '1';
|
|
}
|
|
|
|
void pressNumLock(){
|
|
QProcess::execute("/bin/xdotool", {"key", "Num_Lock"});
|
|
}
|
|
|
|
private:
|
|
std::string path;
|
|
|
|
std::string getNumLockFilePath(){
|
|
QDir inputs("/sys/class/input/");
|
|
QString numlock;
|
|
foreach (QString dir, inputs.entryList({"event*"})){
|
|
QDir temp(inputs.absoluteFilePath(dir) + "/device/");
|
|
QStringList list = temp.entryList({"*::numlock"});
|
|
if (!list.empty()){
|
|
numlock = list[0];
|
|
break;
|
|
}
|
|
}
|
|
return QString("/sys/class/input/event3/device/" + numlock + "/brightness").toStdString();
|
|
}
|
|
};
|
|
#endif
|
|
|
|
#ifdef Q_OS_WIN
|
|
|
|
#include <windows.h>
|
|
|
|
class WLKeyManager{
|
|
public:
|
|
WLKeyManager(){}
|
|
|
|
bool getNumLockState(){
|
|
return (bool)GetKeyState(VK_NUMLOCK);
|
|
}
|
|
|
|
void pressNumLock(){
|
|
keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
|
|
keybd_event(VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY, 0);
|
|
keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
|
|
}
|
|
|
|
};
|
|
#endif
|
|
|
|
|
|
#endif // WL_NUMLOCK_H
|