微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AwesomeWM:在代码中关闭提示框而不按 Enter/Escape

如何解决AwesomeWM:在代码中关闭提示框而不按 Enter/Escape

我正在尝试为我的 rc.lua 添加一个键绑定以关闭我的计算机,它将显示类似“Shutdown (y/n)?”的提示,如果“y”是,则会调用关闭按下,但如果按下任何其他内容关闭。到目前为止,这是我的尝试:

...
awful.key({ modkey,"Control","Shift" },"q",function ()
          awful.prompt.run {
            prompt       = "Shutdown? (y/n) ",textBox      = awful.screen.focused().mypromptBox.widget,keypressed_callback = function (_,key,_)
                if key == "y" then
                    naughty.notify {
                        text = "Shutting down!"
                    }
                else
                    naughty.notify {
                        text = "Not shutting down!"
                    }
                end
                return
            end,}
      end,{description = "shutdown",group = "awesome"}),...

但是,按下键后提示仍然有效 - keypressed_callback 将继续触发每隔一个键被按下,直到我按下 Return 或 Escape。

这是明智的认行为,但就我而言,我希望在第一个 keypressed_callback 事件后关闭提示。我的第一个想法是在 return 中使用 keypressed_callback 来尝试转义/取消/销毁提示,但这没有任何作用。

有没有办法做到这一点?

解决方法

您可以拨打awful.keygrabber.stop()

我必须承认这并不理想,而且该功能实际上已被弃用。我认为这确实是提示模块本身的功能差距。

对于单字符提示,我建议直接使用 https://awesomewm.org/apidoc/core_components/awful.keygrabber.html 并使用文本框实现非交互式小部件。

(另一种选择是使用 root.fake_inputawful.keyboard 来模拟 Escape/Enter,但这是一个非常糟糕的 hack)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。