feat: implement zwp_keyboard_shortcuts_inhibit_unstable_v1 server-side - #1321
feat: implement zwp_keyboard_shortcuts_inhibit_unstable_v1 server-side#1321deepin-wm wants to merge 2 commits into
Conversation
Add KeyboardShortcutsInhibitManagerV1 module wrapping the wlroots keyboard-shortcuts-inhibit implementation with focus-driven activation. 新增 KeyboardShortcutsInhibitManagerV1 模块,封装 wlroots 键盘快捷键 抑制实现,激活状态严格绑定键盘焦点。 Log: 实现键盘快捷键抑制协议服务端 Influence: 客户端可通过该协议抑制合成器键盘快捷键,支持焦点驱动激活与VT切换逃生通道。
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: deepin-wm The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Reviewer's GuideImplements the server-side zwp_keyboard_shortcuts_inhibit_unstable_v1 protocol via a new KeyboardShortcutsInhibitManagerV1 module, wiring it into the seat helper to control compositor shortcut suppression and VT-switch escape behavior, with supporting logging and build-system updates. Sequence diagram for keyboard shortcut inhibition lifecyclesequenceDiagram
participant Client
participant Manager as KeyboardShortcutsInhibitManagerV1
participant Seat as WSeat
participant Helper
participant Inhibitor as wlr_keyboard_shortcuts_inhibitor_v1
Client->>Manager: create inhibitor
Manager->>Manager: onNewInhibitor(inhibitor)
Seat-->>Manager: keyboardFocusSurfaceChanged
Manager->>Inhibitor: wlr_keyboard_shortcuts_inhibitor_v1_activate()
Inhibitor-->>Client: active
Helper->>Manager: isInhibited(seat, surface)
Manager-->>Helper: true
Helper-->>Helper: suppress compositor shortcut dispatch
Seat-->>Manager: keyboardFocusSurfaceChanged
Manager->>Inhibitor: reset active flag
Helper->>Manager: deactivateActiveInhibitor(seat)
Manager->>Inhibitor: wlr_keyboard_shortcuts_inhibitor_v1_deactivate()
Inhibitor-->>Client: inactive
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
The "Build treeland on Deepin crimson (independent)" run for this commit was cancelled after hitting the GitHub Actions 6h job limit: 31 of 48 CTest cases timed out due to CI runner resource degradation, not a code defect. The same commit already passed the "Build treeland on Arch Linux" workflow. Push an empty commit (no source changes) to retrigger the workflows on a healthy runner. Log: 重新触发因 CI 环境退化超时失败的 Deepin 构建工作流 Influence: 无代码变更,仅重新触发 CI
|
TAG Bot New tag: 0.9.1 |
Summary
Implement the server-side of
zwp_keyboard_shortcuts_inhibit_unstable_v1protocol for the treeland compositor.Changes
KeyboardShortcutsInhibitManagerV1module wrapping wlroots'wlr_keyboard_shortcuts_inhibit_v1_create()activewhen the inhibited surface gains keyboard focus; resets active flag on focus leave (noinactiveevent), allowing re-activation on focus returnCtrl+Alt+FnVT-switch force-deactivates the active inhibitor (sendsinactive)helper.cppviaisInhibited(seat, surface)check before compositor shortcut dispatchextern "C"guard around wlroots header include to fix C++ linkageRelated Issue
WM-300
Summary by Sourcery
Implement server-side keyboard shortcuts inhibition so focused clients can suppress compositor shortcuts while retaining access to VT switching.
New Features:
Bug Fixes:
Enhancements:
Build: