feat(capslock): Added caps lock checker

pull/3257/head
Diadlo 2016-05-10 11:27:37 +03:00
parent a77afca1ec
commit 97f95e7e91
No known key found for this signature in database
GPG Key ID: 5AF9F2E29107C727
4 changed files with 110 additions and 0 deletions

View File

@ -93,6 +93,10 @@ contains(DEFINES, QTOX_PLATFORM_EXT) {
SOURCES += src/platform/autorun_win.cpp \
src/platform/autorun_xdg.cpp \
src/platform/autorun_osx.cpp
HEADERS += src/platform/capslock.h
SOURCES += src/platform/capslock_win.cpp \
src/platform/capslock_x11.cpp
}
# Rules for Windows, Mac OSX, and Linux

33
src/platform/capslock.h Normal file
View File

@ -0,0 +1,33 @@
/*
Copyright © 2016 by The qTox Project
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef QTOX_PLATFORM_EXT
#ifndef PLATFORM_CAPSLOCK_H
#define PLATFORM_CAPSLOCK_H
namespace Platform
{
bool capsLockEnabled();
}
#endif // PLATFORM_CAPSLOCK_H
#endif // QTOX_PLATFORM_EXT

View File

@ -0,0 +1,30 @@
/*
Copyright © 2016 by The qTox Project
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QtCore/qsystemdetection.h>
#ifdef Q_OS_WIN32
#include <windows.h>
#include "src/platform/capslock.h"
bool Platform::checkCapsLock()
{
return GetKeyState(VK_CAPITAL) == 1;
}
#endif // Q_OS_WIN32

View File

@ -0,0 +1,43 @@
/*
Copyright © 2016 by The qTox Project
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QtCore/qsystemdetection.h>
#if defined(Q_OS_UNIX) && !defined(__APPLE__) && !defined(__MACH__)
#include <X11/XKBlib.h>
#include "src/platform/capslock.h"
#undef KeyPress
#undef KeyRelease
#undef FocusIn
#undef FocusOut
bool Platform::capsLockEnabled()
{
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 // Q_WS_X11