gpt4 book ai didi

event-handling - 在 gnome shell 扩展中处理窗口焦点事件

转载 作者:行者123 更新时间:2023-12-04 04:31:43 25 4
gpt4 key购买 nike

我正在为 Gnome 3.4 开发一个 gnome shell 扩展。如果任何可编辑的文本聚焦/聚焦,我的扩展程序需要捕获窗口事件。

global.stage.connect('notify::focus-key', Lang.bind(this, this._myHandler));

对我不起作用。

这是一个简单的用例:每当用户点击 firefox 搜索框时,我希望我的处理程序运行。

感谢您的帮助,

最佳答案

Selcuk 向我指出了这个问题,所以为了在未来的搜索中得到这个答案。

允许设置全局桌面监听器以关注更改的库是 libatspi(GNOME 可访问性框架的客户端库)。您可以直接使用 C、pyatspi2(python 手动绑定(bind))或基于 gobject-introspection 的绑定(bind)(即 javascript)。因此,每次焦点更改时打印焦点对象的 name:role_name 的小型 javascript 程序将是:

const Atspi = imports.gi.Atspi;

function onChanged (event) {
log(event.source.get_name() + ',' + event.source.get_role_name());
}

Atspi.init();
let atspiListener = Atspi.EventListener.new(onChanged);
atspiListener.register("object:state-changed:focused");
Atspi.event_main();

无论如何,对于代码示例,您可以查看最近在 gnome-shell 放大镜(使用 javascript 的小型示例)或 Orca(GNOME 屏幕阅读器,大型示例,使用pyatspi2).

libatspi 引用:https://developer.gnome.org/libatspi/

gnome-shell 放大镜代码在这里:https://git.gnome.org/browse/gnome-shell/tree/js/ui/magnifier.js

关于event-handling - 在 gnome shell 扩展中处理窗口焦点事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com