簡而言之,我試圖在程序中添加一個鍵盤綁定,以編輯剪貼板,然后將所做的更改粘貼到活動窗口中。在Windows上,我認(rèn)為我可以通過消息傳遞來做到這一點(diǎn),但X并不那樣使用消息傳遞,因此,為了做到這一點(diǎn),我只是使用python-evdev向uinput發(fā)送ctrl + v事件。當(dāng)您僅運(yùn)行它時,它就可以很好地運(yùn)行,但是我需要它在鍵綁定(在本例中為super + v)上運(yùn)行。問題在于,當(dāng)您將ctrl和v事件發(fā)送到uinput時,超級掩碼仍處于活動狀態(tài),因此,它發(fā)送ctrl + super + v而不是將ctrl + v發(fā)送到窗口,而實(shí)際上并沒有執(zhí)行任何操作。這是最少的代碼來確切解釋我在說什么: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()如果您足夠快地發(fā)布超級,您實(shí)際上可以使它正常工作,但是它相當(dāng)快,顯然對于實(shí)際應(yīng)用程序是不可接受的。我曾嘗試發(fā)布super,但這會帶來一些問題。它不是很通用,它提出了隨后要做什么的問題(將其釋放?再次按下?如果他們在您釋放然后再次按下之間的時間內(nèi)釋放了該怎么辦?),最重要的是,它沒有確實(shí)似乎有效。無論如何,我想問題是,有沒有解決的辦法?也許是一種發(fā)送按鍵事件的方法,該事件不會與物理鍵盤結(jié)合(不太可能)?如果沒有,是否有更好的方法可以將其通用地粘貼到Linux?
添加回答
舉報
0/150
提交
取消