Пример #1
0
def send_string(window, str, modifiers, press=True):
    xlib_display = get_xlib_display()

    mask = 0
    for modifier in modifiers:
        if modifier == "Ctrl":
            mask |= Xlib.X.ControlMask
        elif modifier == "Alt":
            mask |= Xlib.X.Mod1Mask
        elif modifier == "Shift":
            mask |= Xlib.X.ShiftMask
        elif modifier == "Super":
            mask |= Xlib.X.Mod4Mask

    keycode = xlib_display.keysym_to_keycode(get_keysym(str))

    if press:
        event_type = Xlib.protocol.event.KeyPress
    else:
        event_type = Xlib.protocol.event.KeyRelease

    event = event_type(
        root=xlib_display.screen().root,
        window=window,
        child=Xlib.X.NONE,
        same_screen=1,
        root_x=0,
        root_y=0,
        event_x=0,
        event_y=0,
        state=mask,
        detail=keycode,
        time=Xlib.X.CurrentTime,
    )
    window.send_event(event, propagate=True)
Пример #2
0
def send_string(window, str, modifiers, press=True):
    xlib_display = get_xlib_display()
    
    mask = 0
    for modifier in modifiers:
        if modifier == "Ctrl":
            mask |= Xlib.X.ControlMask
        elif modifier == "Alt":
            mask |= Xlib.X.Mod1Mask
        elif modifier == "Shift":
            mask |= Xlib.X.ShiftMask
        elif modifier == "Super":
            mask |= Xlib.X.Mod4Mask
            
    keycode = xlib_display.keysym_to_keycode(get_keysym(str))        
            
    if press:        
        event_type = Xlib.protocol.event.KeyPress
    else:
        event_type = Xlib.protocol.event.KeyRelease
        
    event = event_type(
        root=xlib_display.screen().root,
        window=window,
        child=Xlib.X.NONE,
        same_screen=1,
        root_x=0,
        root_y=0,
        event_x=0,
        event_y=0,
        state=mask,
        detail=keycode,
        time=Xlib.X.CurrentTime,
    )
    window.send_event(event, propagate=True)
Пример #3
0
 def reparent(self, x, y):
     xlib_display = get_xlib_display()
     
     tray_xwindow = xlib_display.create_resource_object("window", self.winId().__int__())
     emacs_xwindow = xlib_display.create_resource_object("window", self.emacs_xid)
     
     tray_xwindow.reparent(emacs_xwindow, x, y + 1)
     
     xlib_display.sync()
Пример #4
0
 def reparent(self, x, y):
     xlib_display = get_xlib_display()
     
     tray_xwindow = xlib_display.create_resource_object("window", self.winId().__int__())
     emacs_xwindow = xlib_display.create_resource_object("window", self.emacs_xid)
     
     tray_xwindow.reparent(emacs_xwindow, x, y + 1)
     
     xlib_display.sync()
Пример #5
0
 def reparent(self):
     xlib_display = get_xlib_display()
     
     emaf_xwindow = xlib_display.create_resource_object("window", self.winId().__int__())
     emacs_xwindow = xlib_display.create_resource_object("window", self.emacs_xid)
     
     emaf_xwindow.reparent(emacs_xwindow, 0, 0)
     
     xlib_display.sync()
Пример #6
0
    def reparent(self, x, y):
        xlib_display = get_xlib_display()

        browser_xwindow_id = self.winId().__int__()
        browser_xwindow = xlib_display.create_resource_object("window", browser_xwindow_id)
        emacs_xwindow = xlib_display.create_resource_object("window", emacs_xwindow_id)

        browser_xwindow.reparent(emacs_xwindow, x, y)

        xlib_display.sync()
Пример #7
0
    def eventFilter(self, obj, event):
        if event.type() in [
                QEvent.KeyPress,
                QEvent.KeyRelease,
                QEvent.MouseButtonPress,
                QEvent.MouseButtonRelease,
                QEvent.MouseMove,
                QEvent.MouseButtonDblClick,
                QEvent.Wheel,
                QEvent.InputMethod,
                QEvent.InputMethodQuery,
                QEvent.ShortcutOverride,
                QEvent.ActivationChange,
                QEvent.Enter,
                QEvent.WindowActivate,
        ]:
            QApplication.sendEvent(self, event)

            if event.type() == QEvent.KeyPress and event.key(
            ) == QtCore.Qt.Key_Control:
                self.press_ctrl_flag = True
            elif event.type() == QEvent.KeyRelease and event.key(
            ) == QtCore.Qt.Key_Control:
                self.press_ctrl_flag = False

            global emacs_xwindow_id

            xlib_display = get_xlib_display()
            xwindow = xlib_display.create_resource_object(
                "window", emacs_xwindow_id)

            mask = []
            event_key = event.text()
            if event.modifiers(
            ) & QtCore.Qt.AltModifier == QtCore.Qt.AltModifier:
                mask.append("Alt")
            elif event.modifiers(
            ) & QtCore.Qt.ControlModifier == QtCore.Qt.ControlModifier:
                mask.append("Ctrl")
            elif event.modifiers(
            ) & QtCore.Qt.ShiftModifier == QtCore.Qt.ShiftModifier:
                mask.append("Shift")
            elif event.modifiers(
            ) & QtCore.Qt.MetaModifier == QtCore.Qt.MetaModifier:
                mask.append("Super")

            send_string(xwindow, event_key, mask,
                        event.type() == QEvent.KeyPress)

            xlib_display.sync()
        else:
            if event.type() not in [12, 77]:
                call_method("%s %s" % (event.type(), event))

        return False
Пример #8
0
    def reparent(self):
        xlib_display = get_xlib_display()

        view_xid = self.winId().__int__()
        view_xwindow = xlib_display.create_resource_object("window", view_xid)
        emacs_xwindow = xlib_display.create_resource_object(
            "window", self.emacs_xid)

        view_xwindow.reparent(emacs_xwindow, self.x, self.y)

        xlib_display.sync()
Пример #9
0
    def reparent(self):
        xlib_display = get_xlib_display()

        emaf_xwindow = xlib_display.create_resource_object(
            "window",
            self.winId().__int__())
        emacs_xwindow = xlib_display.create_resource_object(
            "window", self.emacs_xid)

        emaf_xwindow.reparent(emacs_xwindow, 0, 0)

        xlib_display.sync()
Пример #10
0
    def eventFilter(self, obj, event):
        if event.type() in [QEvent.KeyPress, QEvent.KeyRelease,
                            QEvent.MouseButtonPress, QEvent.MouseButtonRelease,
                            QEvent.MouseMove, QEvent.MouseButtonDblClick, QEvent.Wheel,
                            QEvent.InputMethod, QEvent.InputMethodQuery, QEvent.ShortcutOverride,
                            QEvent.ActivationChange, QEvent.Enter, QEvent.WindowActivate,
        ]:
            QApplication.sendEvent(self, event)

            if event.type() == QEvent.KeyPress and event.key() == QtCore.Qt.Key_Control:
                self.press_ctrl_flag = True
            elif event.type() == QEvent.KeyRelease and event.key() == QtCore.Qt.Key_Control:
                self.press_ctrl_flag = False

            global emacs_xwindow_id

            xlib_display = get_xlib_display()
            xwindow = xlib_display.create_resource_object("window", emacs_xwindow_id)

            mask = []
            event_key = event.text()
            if event.modifiers() & QtCore.Qt.AltModifier == QtCore.Qt.AltModifier:
                mask.append("Alt")
            elif event.modifiers() & QtCore.Qt.ControlModifier == QtCore.Qt.ControlModifier:
                mask.append("Ctrl")
            elif event.modifiers() & QtCore.Qt.ShiftModifier == QtCore.Qt.ShiftModifier:
                mask.append("Shift")
            elif event.modifiers() & QtCore.Qt.MetaModifier == QtCore.Qt.MetaModifier:
                mask.append("Super")

            send_string(xwindow, event_key, mask, event.type() == QEvent.KeyPress)

            xlib_display.sync()
        else:
            if event.type() not in [12, 77]:
                call_method("%s %s" % (event.type(), event))

        return False
Пример #11
0
    event = event_type(
        root=xlib_display.screen().root,
        window=window,
        child=Xlib.X.NONE,
        same_screen=1,
        root_x=0,
        root_y=0,
        event_x=0,
        event_y=0,
        state=mask,
        detail=keycode,
        time=Xlib.X.CurrentTime,
    )
    window.send_event(event, propagate=True)


if __name__ == "__main__":
    xlib_display = get_xlib_display()
    xwindow = xlib_display.create_resource_object("window", 73400407)

    # send_string(xwindow, "x", ["Ctrl"], False)
    # send_string(xwindow, "x", ["Ctrl"], True)

    # send_string(xwindow, "h", [], False)
    # send_string(xwindow, "h", [], True)

    send_string(xwindow, "y", ["Super"], False)
    send_string(xwindow, "y", ["Super"], True)

    xlib_display.sync()
Пример #12
0
        
    event = event_type(
        root=xlib_display.screen().root,
        window=window,
        child=Xlib.X.NONE,
        same_screen=1,
        root_x=0,
        root_y=0,
        event_x=0,
        event_y=0,
        state=mask,
        detail=keycode,
        time=Xlib.X.CurrentTime,
    )
    window.send_event(event, propagate=True)

if __name__ == "__main__":
    xlib_display = get_xlib_display()
    xwindow = xlib_display.create_resource_object("window", 73400407)

    # send_string(xwindow, "x", ["Ctrl"], False)
    # send_string(xwindow, "x", ["Ctrl"], True)

    # send_string(xwindow, "h", [], False)
    # send_string(xwindow, "h", [], True)

    send_string(xwindow, "y", ["Super"], False)
    send_string(xwindow, "y", ["Super"], True)

    xlib_display.sync()