5#include <QtCore/QSocketNotifier>
6#include <QtCore/private/qglobal_p.h>
8#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) && (QT_CONFIG(evdev) || QT_CONFIG(libinput))
12#include <private/qcore_unix_p.h>
21#define KDSKBMUTE 0x4B51
25#define KBD_OFF_MODE K_OFF
27#define KBD_OFF_MODE K_RAW
35static void setTTYCursor(
bool enable)
41 const char *
const devs[] = {
"/dev/tty0",
"/dev/tty",
"/dev/console", 0 };
43 for (
const char *
const *dev = devs; *dev; ++dev) {
47 const char *termctl =
enable ?
"\033[9;15]\033[?33h\033[?25h\033[?0c" :
"\033[9;0]\033[?33l\033[?25l\033[?1c";
59void QFbVtHandler::signalHandler(
int sigNo)
75 if (::socketpair(AF_UNIX, SOCK_STREAM, 0, m_sigFd)) {
82 setKeyboardEnabled(
false);
90 sa.sa_handler = signalHandler;
91 sigemptyset(&sa.sa_mask);
92 sigaction(SIGINT, &sa, 0);
93 sigaction(SIGTSTP, &sa, 0);
94 sigaction(SIGCONT, &sa, 0);
95 sigaction(SIGTERM, &sa, 0);
103 setKeyboardEnabled(
true);
106 if (m_signalNotifier) {
113void QFbVtHandler::setKeyboardEnabled(
bool enable)
120 ::ioctl(m_tty, KDSKBMUTE, 0);
121 ::ioctl(m_tty, KDSKBMODE, m_oldKbdMode);
123 ::ioctl(m_tty, KDGKBMODE, &m_oldKbdMode);
125 ::ioctl(m_tty, KDSKBMUTE, 1);
126 ::ioctl(m_tty, KDSKBMODE, KBD_OFF_MODE);
134void QFbVtHandler::handleSignal()
140 if (
QT_READ(m_sigFd[1], &sigNo,
sizeof(sigNo)) ==
sizeof(sigNo)) {
148 setKeyboardEnabled(
true);
150 ::kill(getpid(), SIGSTOP);
154 setKeyboardEnabled(
false);
166void QFbVtHandler::handleInt()
170 setKeyboardEnabled(
true);
178#include "moc_qfbvthandler_p.cpp"
QFbVtHandler(QObject *parent=nullptr)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
void activated(QSocketDescriptor socket, QSocketNotifier::Type activationEvent, QPrivateSignal)
void setEnabled(bool)
If enable is true, the notifier is enabled; otherwise the notifier is disabled.
void qErrnoWarning(const char *msg,...)
Combined button and popup list for selecting options.
GLboolean GLboolean GLboolean GLboolean a
[7]
Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent