def click(self, x, y, display_id: Optional[int] = None) -> None:
        """
        simulate android tap

        Args:
            x, y: int
            display_id: int, default None, see "dumpsys SurfaceFlinger --display-id" for valid display IDs
        """
        if any(map(is_percent, [x, y])):
            w, h = self.window_size()
            x = int(x * w) if is_percent(x) else x
            y = int(y * h) if is_percent(y) else y
        x, y = map(str, [x, y])
        cmdargs = ["input"]
        if display_id is not None:
            cmdargs.extend(['-d', str(display_id)])
        self.shell(cmdargs + ["tap", x, y])

        simulate android tap

        Args:
            x, y: int
            display_id: int, default None, see "dumpsys SurfaceFlinger --display-id" for valid display IDs
        
adbutils/shell.py