在Linux上的python中侦听全局键组合

在Linux上的python中侦听全局键组合,第1张

概述我刚刚写了一个小程序,每隔几分钟从flickr下载一个新壁纸. 现在我想添加“喜欢”壁纸的功能,所以它会比非喜欢或不喜欢的壁纸更频繁地出现. 我想为这个功能分配一个全局键盘快捷键. 例如:如果按ctrl 7,它将在Python中执行某种“喜欢”的功能. 是否有任何库(在JavaScript中,例如,有一个库,我可以用快捷方式定义快捷方式(“ctrl-b”,someFunction);) 否则,我该 我刚刚写了一个小程序,每隔几分钟从flickr下载一个新壁纸.

现在我想添加“喜欢”壁纸的功能,所以它会比非喜欢或不喜欢的壁纸更频繁地出现.

我想为这个功能分配一个全局键盘快捷键.

例如:如果按ctrl 7,它将在Python中执行某种“喜欢”的功能.

是否有任何库(在JavaScript中,例如,有一个库,我可以用快捷方式定义快捷方式(“ctrl-b”,someFunction);)

否则,我该怎么做呢?我见过this similar SO question,但它已经老了.

解决方法 我不知道任何旨在扩展的库.然而,正如你的链接所说,pykeylogger的后端提供了一个如何做到的例子,但它似乎有点过于复杂,你需要.

pykeylogger使用python-xlib模块捕获X显示器上的按键.有人已经创建了一个更简单的例子,说明如何在pastebin上完成此 *** 作.下面是它原样复制的来源.

@H_419_29@from Xlib.display import displayfrom Xlib import Xfrom Xlib.ext import recordfrom Xlib.protocol import rqdisp = Nonedef handler(reply): """ This function is called when a xlib event is fired """ data = reply.data while len(data): event,data = rq.EventFIEld(None).parse_binary_value(data,disp.display,None,None) # KEYCODE IS FOUND USERING event.detail print event.detail if event.type == X.KeyPress: # button pressed print "pressed" elif event.type == X.keyrelease: # button RELEASED print "released"# get current displaydisp = display()root = disp.screen().root# Monitor keypress and button pressctx = disp.record_create_context( 0,[record.AllClIEnts],[{ 'core_requests': (0,0),'core_replIEs': (0,'ext_requests': (0,'ext_replIEs': (0,'delivered_events': (0,'device_events': (X.keyreleaseMask,X.buttonReleaseMask),'errors': (0,'clIEnt_started': False,'clIEnt_dIEd': False,}])disp.record_enable_context(ctx,handler)disp.record_free_context(ctx)while 1: # Infinite wait,doesn't do anything as no events are grabbed event = root.display.next_event()

您将不得不扩展处理程序以满足您的需要,而不仅仅是打印到屏幕,然后将其转换为单独的线程.

(痛苦的)替代方案是直接听键盘,而不依赖于外部库或X会话.在linux中,所有内容都是一个文件,你可以在后台将你的keyboard input will be in /dev/input作为文件读取,例如open(‘/ dev / input / even2′,’rb’).这不建议,因为它需要升级权限,找出哪个设备是键盘,然后创建自己的键映射.只是想让你知道必要时有什么可能.

编辑:也找到Global keybinding on X using Python gtk3,似乎有更多的例子善良.

总结

以上是内存溢出为你收集整理的在Linux上的python中侦听全局键组合全部内容,希望文章能够帮你解决在Linux上的python中侦听全局键组合所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1028174.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存