Storeroom of scripts

Script to click on the canvas.

from krita import Krita
from PyQt5.QtCore import (
        Qt,
        QPoint,
        QPointF,
        QEvent)
from PyQt5.QtGui import (
        QMouseEvent,
        QCursor)
from PyQt5.QtWidgets import (
        QWidget,
        QApplication)

def find_current_canvas():
    application = Krita.instance()
    q_window = application.activeWindow().qwindow()
    q_stacked_widget = q_window.centralWidget()
    q_mdi_area = q_stacked_widget.currentWidget()
    q_mdi_sub_window = q_mdi_area.currentSubWindow()
    view = q_mdi_sub_window.widget()
    for c in view.children():
        if c.metaObject().className() == 'KisCanvasController':
            viewport = c.viewport()
            canvas = viewport.findChild(QWidget)
            return canvas

def click_canvas(global_pos=None):

    canvas = find_current_canvas()
    if global_pos is None:
        global_pos = QCursor.pos()# cursor position
        global_posF = QPointF(global_pos)
        posF = QPointF(canvas.mapFromGlobal(global_pos))
    else:
        global_pos = QPoint(global_pos)
        global_posF = QPointF(global_pos)
        posF = QPointF(canvas.mapFromGlobal(global_pos))

    button = Qt.LeftButton
    buttons = Qt.LeftButton
    key_state = Qt.NoModifier

    mouse_press = QMouseEvent(
            QEvent.MouseButtonPress,
            posF,
            button,
            buttons,
            key_state)

    mouse_release = QMouseEvent(
            QEvent.MouseButtonRelease,
            posF,
            button,
            buttons,
            key_state)

    if not canvas.isActiveWindow():
        canvas.activateWindow()
    QApplication.sendEvent(canvas, mouse_press)
    QApplication.sendEvent(canvas, mouse_release)

click_canvas()

This is a simplified version of the one taught in this topic.

It can be used to force tools that require manual clicking, such as continuous selection or layer selection, to work programmatically, but it will not be useful in many situations.
Note that if you register this script to a shortcut that includes the Shift key, for example, the result will be a Shift+click situation.