LINUX.ORG.RU

Gtk+ Python3 Как отослать (эмулировать) нажатие клавиш

 ,


1

1

Хочу получить нажатие клавиши Super_L, но не пойму как. Вот пример, но...

from gi.repository import Gdk, Gtk

class KeyPressTest:
    def __init__(self):
        button = Gtk.Button("Test")
        button.connect('clicked', self.on_button_clicked)
        button.set_can_focus(False)
        vbox = Gtk.Box()
        vbox.pack_start(button, True, True, 0)
        self.window = Gtk.Window()
        self.window.connect('destroy', lambda w: Gtk.main_quit())
        self.window.add(vbox)
        self.window.show_all()

    def on_button_clicked(self, button):
        event = Gdk.Event(Gdk.EventType(Gdk.EventType.KEY_PRESS))
        event.keyval = 0xffeb
        event.state = Gdk.ModifierType(4)
        event.time = 0

        gd = Gdk.Display.get_default()
        gd.put_event(event)

if __name__ == "__main__":
    u = KeyPressTest()
    Gtk.main()
Ответ на: комментарий от pawnhearts

В общем, хотел понять принцип действий используя только Gtk+ и библиотеки в него входящие. Как ни странно, не могу найти ни одного подходящего примера (например такого http://faq.pygtk.org/index.py?req=show&file=faq03.014.htp) Пусть будет пример с использованием Gtk3 (желательно) на крайний случай IBus или Gkbd или GdkX11, хочу понять принцип их построения. Использование сторонних инструментов как xdotool успешно. Теперь хочу понять как это реализовать на Gtk.

ivsatel
() автор топика
Ответ на: комментарий от ivsatel

как это реализовать на Gtk

это смотря куда ты хочешь нажатие отправить. если в эту же программу, то pygtk с этим справится, а если ты хочешь симулировать нажатие клавиши во всей системе, то, вероятно, нужно что-то из python-xlib, python-uinput или pyautogui.

anonymous
()
Ответ на: комментарий от anonymous

с python-xlib будет вот так:

from Xlib import X
from Xlib.display import Display
import Xlib.ext.xtest as xtest

d = Display()
xtest.fake_input(d, X.KeyPress, 133)
d.sync()
xtest.fake_input(d, X.KeyRelease, 133)
d.sync()

anonymous
()
Ответ на: комментарий от ivsatel

AFAIK - никак. Лорчую анонимуса, тебе нужен xlib. Ещё он тебе понадобится, например, чтобы сделать глобальный hotkey.

pawnhearts ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.