为了账号安全,请及时绑定邮箱和手机立即绑定

使用掩码键在键绑定问题上使用python-evdev将事件发送到uinput

使用掩码键在键绑定问题上使用python-evdev将事件发送到uinput

一只萌萌小番薯 2021-03-22 21:18:26
简而言之,我试图在程序中添加一个键盘绑定,以编辑剪贴板,然后将所做的更改粘贴到活动窗口中。在Windows上,我认为我可以通过消息传递来做到这一点,但X并不那样使用消息传递,因此,为了做到这一点,我只是使用python-evdev向uinput发送ctrl + v事件。当您仅运行它时,它就可以很好地运行,但是我需要它在键绑定(在本例中为super + v)上运行。问题在于,当您将ctrl和v事件发送到uinput时,超级掩码仍处于活动状态,因此,它发送ctrl + super + v而不是将ctrl + v发送到窗口,而实际上并没有执行任何操作。这是最少的代码来确切解释我在说什么:import evdev,time,keybinder,gtkdef callback():    with evdev.UInput() as uinput:        uinput.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_LEFTCTRL, 1)        uinput.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_V, 1)        uinput.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_V, 0)        uinput.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_LEFTCTRL, 0)        uinput.syn()keybinder.bind("<super>v",callback)keybinder.bind("Escape",gtk.main_quit)gtk.main()如果您足够快地发布超级,您实际上可以使它正常工作,但是它相当快,显然对于实际应用程序是不可接受的。我曾尝试发布super,但这会带来一些问题。它不是很通用,它提出了随后要做什么的问题(将其释放?再次按下?如果他们在您释放然后再次按下之间的时间内释放了该怎么办?),最重要的是,它没有确实似乎有效。无论如何,我想问题是,有没有解决的办法?也许是一种发送按键事件的方法,该事件不会与物理键盘结合(不太可能)?如果没有,是否有更好的方法可以将其通用地粘贴到Linux?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信