linux C Gnome Shell扩展密钥绑定
发布时间:2023-12-19 20:37:31 所属栏目:Linux 来源:DaWei
导读: (全局)将键组合(例如< Super> A)绑定到gnome shell扩展中的函数的最简单方法是什么?
检查了几个扩展,我遇到了以下代码:
global.display.add_keybinding('random-name',new Gio.Settings(
检查了几个扩展,我遇到了以下代码:
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的副本 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("(编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- LINUX教程:Ubuntu 16.04安装ROS Kinetic
- Install Tomcat 6 on CentOS or RHEL --转载
- linux-kernel – Linux:使用U-Boot和Flat Image
- LinuxC:如何在多进程程序中设置文件读取优先级?
- 10大白帽黑客专用的 Linux 操作系统
- c – 为什么在调用recv系统调用时调用sigprocmas
- linux – rsync到NAS每次都会复制一切
- azure – Project Oxford Speech API的客户端ID
- 命令行 – 在root文件拥有该文件后,有效用户ID不
- /usr/local/bin/python3:bad interpreter:ubun
