The*_*hog 3 gnome event-handling clutter gnome-shell-extensions
我正在为Gnome 3.4开发一个gnome shell扩展.如果任何可编辑文本聚焦在/进出,我的扩展需要捕获窗口事件.
global.stage.connect('notify::focus-key', Lang.bind(this, this._myHandler));
Run Code Online (Sandbox Code Playgroud)
不适合我.
这是一个简单的用例:每当用户点击firefox搜索框时,我都希望运行我的处理程序.
谢谢你的帮助,
小智 6
塞尔丘克向我指出了这个问题,所以为了将来这里的答案用于未来的搜索.
允许设置全局桌面侦听器以集中更改的库是libatspi(GNOME可访问性框架的客户端库).您可以直接使用C,pyatspi2(python手动绑定)或基于gobject-introspection的绑定(即javascript).所以一个小的javascript程序在每次焦点更改时打印名称:focus_name的焦点对象:
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();
Run Code Online (Sandbox Code Playgroud)
在任何情况下,对于代码示例,您可以查看最近在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
| 归档时间: |
|
| 查看次数: |
1028 次 |
| 最近记录: |