加入收藏 | 设为首页 | 会员中心 | 我要投稿 台州站长网 (https://www.0576zz.cn/)- 边缘计算、中间件、数据处理、数据分析、智能存储!
当前位置: 首页 > 综合聚焦 > Linux > 正文

linux C Gnome Shell扩展密钥绑定

发布时间:2023-12-18 08:17:46 所属栏目:Linux 来源:DaWei
导读: (全局)将键组合(例如< Super> A)绑定到gnome shell扩展中的函数的最简单方法是什么?
检查了几个扩展,我遇到了以下代码:

global.display.add_keybinding('random-name',new Gio.Settings(

(全局)将键组合(例如< Super> A)绑定到gnome shell扩展中的函数的最简单方法是什么?

检查了几个扩展,我遇到了以下代码:

global.display.add_keybinding('random-name',new Gio.Settings({schema: 'org.gnome.shell.keybindings'}),Meta.KeyBindingFlags.NONE,function() { /* ... some code */ });

我知道组合键是由schema参数指定的,并且可以创建描述组合的XML文件.有更简单的方法吗? 最佳答案 以下是我的答案here的副本
我只在Gnome 3.22中测试了这个

TL; DR

这是一堂课:

KeyManager: new Lang.Class({ Name: 'MyKeyManager',_init: function() { this.grabbers = new Map() global.display.connect( 'accelerator-activated',Lang.bind(this,function(display,action,deviceId,timestamp){ log('Accelerator Activated: [display={},action={},deviceId={},timestamp={}]',display,timestamp) this._onAccelerator(action) })) },listenFor: function(accelerator,callback){ log('Trying to listen for hot key [accelerator={}]',accelerator) let action = global.display.grab_accelerator(accelerator) if(action == Meta.KeyBindingAction.NONE) { log('Unable to grab accelerator [binding={}]',accelerator) } else { log('Grabbed accelerator [action={}]',action) let name = Meta.external_binding_name_for_action(action) log('Received binding name for action [name={},action={}]',name,action) log('Requesting WM to allow binding [name={}]',name) Main.wm.allowKeybinding(name,Shell.ActionMode.ALL) this.grabbers.set(action,{ name: name,accelerator: accelerator,callback: callback }) } },_onAccelerator: function(action) { let grabber = this.grabbers.get(action) if(grabber) { this.grabbers.get(action).callback() } else { log('No listeners [action={}]',action) } } })

这就是你如何使用它:

let keyManager = new KeyManager() keyManager.listenFor("

(编辑:台州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章