arith

导航

KDE 5.27.5 在wayland下无法通过alt+shift+tab反向切换窗口的原因与解决方法

这是一个bug。见:https://bugs.kde.org/438991

5.27.11修复了这个bug https://kde.org/announcements/plasma/5/5.27.11/

原因:kwin在反向切换窗口时只处理了Qt::Key_Backtab,而没有处理Qt::Key_Tab,从而不匹配快捷键。

https://invent.kde.org/plasma/kwin/-/commit/c8b7717953a28ac43f1fa5e69c9eceae4ea7e868

diff --git a/src/tabbox/tabbox.cpp b/src/tabbox/tabbox.cpp
index 8ac998d310459bcf1c08cb38476cc9222ba9c41d..6883112c60135f6219ad335528e0f4de81de3b65 100644
--- a/src/tabbox/tabbox.cpp
+++ b/src/tabbox/tabbox.cpp
@@ -1329,15 +1329,16 @@ void TabBox::keyPress(int keyQt)
             return Steady;
         }
 
-        // Before testing the unshifted key (Ctrl+A vs. Ctrl+Shift+a etc.), see whether this is +Shift+Tab
-        // and check that against +Shift+Backtab (as well)
+        // Before testing the unshifted key (Ctrl+A vs. Ctrl+Shift+a etc.),
+        // see whether this is +Shift+Tab/Backtab and test that against
+        // +Shift+Backtab/Tab as well
         Qt::KeyboardModifiers mods = Qt::ShiftModifier | Qt::ControlModifier | Qt::AltModifier | Qt::MetaModifier | Qt::KeypadModifier | Qt::GroupSwitchModifier;
         mods &= keyQt;
-        if ((keyQt & ~mods) == Qt::Key_Tab) {
-            if (contains(forward, mods | Qt::Key_Backtab)) {
+        if (((keyQt & ~mods) == Qt::Key_Tab) || ((keyQt & ~mods) == Qt::Key_Backtab)) {
+            if (contains(forward, mods | Qt::Key_Backtab) || contains(forward, mods | Qt::Key_Tab)) {
                 return Forward;
             }
-            if (contains(backward, mods | Qt::Key_Backtab)) {
+            if (contains(backward, mods | Qt::Key_Backtab) || contains(backward, mods | Qt::Key_Tab)) {
                 return Backward;
             }
         }

解决方法:

1、修改~/.config/kglobalshortcutsrc,将Alt+Shift+Tab修改为Alt+Shift+BackTab;

-Walk Through Windows (Reverse)=Alt+Shift+Tab,Alt+Shift+Backtab,遍历窗口(反向)
+Walk Through Windows (Reverse)=Alt+Shift+Backtab,Alt+Shift+Backtab,遍历窗口(反向)

2、升级到5.27.11以后的版本。

posted on 2025-03-05 20:30  调几算方  阅读(6)  评论(0)    收藏  举报