You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在awesome-wm中能否将单独按下modkey的操作绑定到指定动作

解决方案

awesome默认的按键绑定逻辑仅支持「修饰键+普通按键」的组合触发,单独按下修饰键时,系统会等待后续输入的组合按键,因此你之前尝试的空按键位、同时加两次modkey作为修饰的写法都无法触发对应动作。

正确实现方式

核心逻辑是通过状态标记区分「单独按下并释放modkey」和「modkey作为修饰键搭配其他按键使用」两种场景,具体配置代码如下:

-- 若全局已导入对应依赖可跳过该部分
local gears = require("gears")
local awful = require("awful")

-- 定义modkey单独按下的状态标记
local modkey_pressed_alone = false

-- 绑定modkey的按下与释放事件
root.keys(gears.table.join(root.keys(),
    awful.key({ }, "#133",
        -- 按下modkey时标记为待触发状态
        function ()
            modkey_pressed_alone = true
        end,
        -- 释放modkey时判断是否为单独按下,是则唤起prompt
        function ()
            if modkey_pressed_alone then
                awful.screen.focused().mypromptbox:run()
            end
            modkey_pressed_alone = false
        end
    )
))

-- 全局监听按键事件:如果按下其他键时modkey处于激活状态,说明是组合键,取消单独触发标记
root.connect_signal("key::press", function(_, _, _, mods, _)
    if gears.table.hasitem(mods, modkey) then
        modkey_pressed_alone = false
    end
end)

注意事项

  • 可通过终端运行xev命令,按下你使用的modkey查看输出的keycode,替换代码中的#133即可,通常左Super键码为133,右Super键码为134
  • 请先移除你之前尝试的无效绑定代码,避免逻辑冲突
  • 修改配置后重启awesome即可生效

内容的提问来源于stack exchange,提问作者Baltasar del Sol de Haro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:15:03