키 보드를 프로그램에 추가하여 클립 보드를 편집 한 다음 변경 사항을 활성 창에 붙여 넣으려고합니다. Windows에서 나는 아마도 메시지 전달과 함께 그것을 할 수 있다고 생각하지만, X는 이와 같은 메시지 전달을 사용하지 않기 때문에 이것을 수행하기 위해 나는 단지 python-evdev을 사용하여 ctrl + v 이벤트를 uinput으로 보냈습니다. 이것은 당신이 방금 실행할 때 합리적으로 잘 작동하지만, 키 바인딩 (이 경우에는 super + v)에서 실행해야합니다. 문제는 ctrl 및 v 이벤트를 uinput으로 보낼 때 수퍼 마스크가 여전히 활성 상태이므로 ctrl + v를 창에 보내지 않고 실제로 아무것도 수행하지 않는 Ctrl + super + v를 보냅니다. 당신은 매우 신속하게 해제 당신이 실제로 일을 얻을 수있는 경우마스크 키가있는 키 바인딩 문제로 인해 파이썬 - evdev로 이벤트를 보내려합니다.
import evdev,time,keybinder,gtk
def 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()
하지만, 실제 응용 프로그램에 대해 분명히 허용하지 꽤 빨리 그리고 다음은 최소한의 코드는 내가 무슨 말을하는지 설명이다. 나는 슈퍼를 풀려고했지만 몇 가지 문제가있다. 매우 일반적인 것이 아니기 때문에 나중에 할 일의 문제가 제기됩니다 (놓아 둡니다. 다시 누르십시오. 놓아 두었다가 다시 누르는 사이에 릴리스하면 어떻게됩니까?). 가장 중요한 것은 그렇지 않습니다. 실제로 작동하는 것 같습니다.
어쨌든, 나는이 문제를 해결할 방법이 있습니까? 아마도 물리적 인 키보드와 결합하지 않는 키 누르기 이벤트를 보낼 수있는 방법일까요? 그렇지 않다면 Linux에 일반적으로 붙여 넣기위한 더 좋은 방법이 있습니까?
불행히도, "나는 정말로 노력하고 있습니다"라고 말한 것은 정확히 내가 말했던 것입니다. 나는 매우 솔직하게 노력했습니다. 텍스트를 보내거나 문제를 해결하기 위해 영리한 방법으로 사용하지 않고 클립 보드 데이터를 가져오고 붙여 넣으려고합니다. 문제는 매번이 앱의 붙여 넣기 기능을 사용하고 싶지 않다는 것입니다. 그렇지 않으면 클립 보드를 채우고 사용자가 그 클립을 채울 수있게됩니다. 이맥스 문제는 응용 프로그램에서 스크립트를 작성할 수 있으므로 정상적으로 작동하지 않는 곳으로 붙여 넣을 수있는 키 바인딩 (예 : super + shift + v)을 추가 할 수 있습니다. 감사합니다 – Josiah
어쩌구, 나는 그 마지막 코멘트를 역겨운 것으로 계속 읽는다. 나는 더 좋은 방법을 생각할 수 없었고, 그것을 수정할 시간이 없었으므로 실수로 그것을 새말을 삽입 할 때 제출했습니다. 그냥 그 의미가 아니라는 것을 알아, 나는 당신의 응답을 주셔서 감사합니다. – Josiah