如何解决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_input
或 awful.keyboard
来模拟 Escape/Enter,但这是一个非常糟糕的 hack)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。