GNOME-Shell:如何使用 Escape 键关闭 ModalDialog

问题描述

我不是程序员,我只是在学习。我正在尝试使用 GJS 和 GNOME-Shell-extensions 作为示例来学习 javascript。我正在尝试构建一个扩展,它有一个带有关闭按钮的 ModalDialog。从按钮开始,一切都没有问题地关闭,但我想添加使用 Escape 键关闭它的能力。 在代码我有一个这样的信号处理程序

this.connect('key-press-event',() => {

但至少杀了我,我不明白如何处理这个信号。我在这里看到了几个类似的问题,我以不同的方式尝试了答案选项,但我有错误或未定义的错误,救救我,我的头爆炸了。请向我解释我需要如何使用“按键事件”。

我找到了一个这样的解决方案并且它有效。前提是有一个用于输入文本的字段并且它处于焦点之下。这里的诀窍是 clutter 是要遵循的。而 clutter一个垃圾堆。

global.stage.set_key_focus(newEntry);
newEntry.connect('key-press-event',(o,e) => {
    const symbol = e.get_key_symbol();
    if (symbol === clutter.KEY_Escape) {
        log('what you need');
        this._closeDialog();
    }
    else {
        log('Not growth again' );
    }

});

这里是我无法理解的三件事。为什么第一行(焦点)对我不起作用,对其他人却起作用,“o”和“e”是什么,get_key_symbol() 方法从何而来?

解决方法

试着去here.你可以检查键盘事件代码。