placeholderinputeventfilter: don't block media keys
While blindly typing with no outputs connected is unlikely to be intentional, using the media keys likely is. BUG: 491531
This commit is contained in:
parent
85f2e85fe4
commit
cfc0f05c94
3 changed files with 43 additions and 18 deletions
|
@ -12,6 +12,7 @@
|
||||||
#include "core/session.h"
|
#include "core/session.h"
|
||||||
#include "input_event.h"
|
#include "input_event.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "utils/keys.h"
|
||||||
#include "wayland/seat.h"
|
#include "wayland/seat.h"
|
||||||
#include "wayland_server.h"
|
#include "wayland_server.h"
|
||||||
#include "workspace.h"
|
#include "workspace.h"
|
||||||
|
@ -54,23 +55,7 @@ bool DpmsInputEventFilter::wheelEvent(WheelEvent *event)
|
||||||
|
|
||||||
bool DpmsInputEventFilter::keyEvent(KeyEvent *event)
|
bool DpmsInputEventFilter::keyEvent(KeyEvent *event)
|
||||||
{
|
{
|
||||||
static constexpr std::array s_mediaKeys = {
|
if (isMediaKey(event->key())) {
|
||||||
Qt::Key::Key_MediaLast,
|
|
||||||
Qt::Key::Key_MediaNext,
|
|
||||||
Qt::Key::Key_MediaPause,
|
|
||||||
Qt::Key::Key_MediaPlay,
|
|
||||||
Qt::Key::Key_MediaPrevious,
|
|
||||||
Qt::Key::Key_MediaRecord,
|
|
||||||
Qt::Key::Key_MediaStop,
|
|
||||||
Qt::Key::Key_MediaTogglePlayPause,
|
|
||||||
Qt::Key::Key_VolumeUp,
|
|
||||||
Qt::Key::Key_VolumeDown,
|
|
||||||
Qt::Key::Key_VolumeMute,
|
|
||||||
Qt::Key::Key_MicVolumeUp,
|
|
||||||
Qt::Key::Key_MicVolumeDown,
|
|
||||||
Qt::Key::Key_MicMute,
|
|
||||||
};
|
|
||||||
if (std::ranges::find(s_mediaKeys, event->key()) != s_mediaKeys.end()) {
|
|
||||||
// don't wake up the screens for media or volume keys
|
// don't wake up the screens for media or volume keys
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "placeholderinputeventfilter.h"
|
#include "placeholderinputeventfilter.h"
|
||||||
|
#include "input_event.h"
|
||||||
|
#include "utils/keys.h"
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
@ -29,7 +31,7 @@ bool PlaceholderInputEventFilter::wheelEvent(WheelEvent *event)
|
||||||
|
|
||||||
bool PlaceholderInputEventFilter::keyEvent(KeyEvent *event)
|
bool PlaceholderInputEventFilter::keyEvent(KeyEvent *event)
|
||||||
{
|
{
|
||||||
return true;
|
return !isMediaKey(event->key());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PlaceholderInputEventFilter::touchDown(qint32 id, const QPointF &pos, std::chrono::microseconds time)
|
bool PlaceholderInputEventFilter::touchDown(qint32 id, const QPointF &pos, std::chrono::microseconds time)
|
||||||
|
|
38
src/utils/keys.h
Normal file
38
src/utils/keys.h
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
KWin - the KDE window manager
|
||||||
|
This file is part of the KDE project.
|
||||||
|
|
||||||
|
SPDX-FileCopyrightText: 2024 Xaver Hugl <xaver.hugl@gmail.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QInputEvent>
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
namespace KWin
|
||||||
|
{
|
||||||
|
|
||||||
|
static constexpr std::array s_mediaKeys = {
|
||||||
|
Qt::Key::Key_MediaLast,
|
||||||
|
Qt::Key::Key_MediaNext,
|
||||||
|
Qt::Key::Key_MediaPause,
|
||||||
|
Qt::Key::Key_MediaPlay,
|
||||||
|
Qt::Key::Key_MediaPrevious,
|
||||||
|
Qt::Key::Key_MediaRecord,
|
||||||
|
Qt::Key::Key_MediaStop,
|
||||||
|
Qt::Key::Key_MediaTogglePlayPause,
|
||||||
|
Qt::Key::Key_VolumeUp,
|
||||||
|
Qt::Key::Key_VolumeDown,
|
||||||
|
Qt::Key::Key_VolumeMute,
|
||||||
|
Qt::Key::Key_MicVolumeUp,
|
||||||
|
Qt::Key::Key_MicVolumeDown,
|
||||||
|
Qt::Key::Key_MicMute,
|
||||||
|
};
|
||||||
|
static inline bool isMediaKey(int key)
|
||||||
|
{
|
||||||
|
return std::ranges::find(s_mediaKeys, key) != s_mediaKeys.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue