1

是否可以在 ios 越狱以及越狱涉及的所有元素上模拟特定屏幕坐标中的触摸事件,按下官方外部键盘(通过相机连接套件或蓝牙的 USB)上的特定键?

我会用它来用脚按下应用程序中的按钮(幅度),我想将键盘用作脚踏开关。

仅供私人使用。没有 Appstore 或 Cydia。谢谢。

4

1 回答 1

3

您可以在您的计算机上编写脚本,并使用您的键盘和鼠标基于模拟触摸库来控制您的 iOS 设备。

iOS13-SimulateTouch是一个开源库,可让您在系统级别模拟触摸事件。您可以使用任何编程语言编写脚本,以远程或本地模拟 iOS 设备上的触摸事件。源码请查看 [Github] iOS13-SimulateTouch


IOS13-SimulateTouch

iOS 11.0 - 13.6 系统级触摸模拟 iOS13 模拟触摸

需要越狱设备

描述

该库使您能够仅用一行代码在 iOS 11.0 - 13.6 上模拟触摸事件!所有源代码将在稍后发布。

特征

  1. 支持多点触控(您找不到其他库支持多点触控)。
  2. 可编程的。可以使用您想要的所有编程语言对控制脚本进行编程。
  3. 支持即时控制。可以在没有其他设备/计算机的延迟的情况下控制 ios 设备。
  4. 系统级触摸模拟(不会注入任何进程)。

安装

  1. 打开 Cydia - 来源 - 编辑 - 添加 - http://47.114.83.227(“http”而不是“https”!!!请仔细检查。)
  2. 安装“ZJXTouchSimulation”调整
  3. 完毕

代码示例

Python Version

import socket
import time

# event types
TOUCH_UP = 0
TOUCH_DOWN = 1
TOUCH_MOVE = 2
SET_SCREEN_SIZE = 9

# you can copy and paste this method to your code
def formatSocketData(type, index, x, y):
    return '{}{:02d}{:05d}{:05d}'.format(type, index, int(x*10), int(y*10))

s = socket.socket()
s.connect(("127.0.0.1", 6000))  # connect to the tweak. Replace "127.0.0.1" with the ip address of your device
s.send(("1"+formatSocketData(SET_SCREEN_SIZE, 0, 2048, 2732)).encode())  # tell the tweak that the screen size is 2048x2732 (your screen size might differ). This should be send to the tweak every time you kill the SpringBoard (just send once)
time.sleep(1)  # sleep for 1 sec to get setting size process finished
s.send(("1"+formatSocketData(TOUCH_DOWN, 7, 300, 400)).encode())  # tell the tweak to touch 300x400 on the screen
# IMPORTANT: NOTE the "1" at the head of the data. This indicates the event count and CANNOT BE IGNORED.
s.close()

实际上触摸仅由一行执行:

s.send(("1"+formatSocketData(TOUCH_DOWN, 7, 300, 400)).encode()) 

整洁而轻松。

执行触摸移动

s.send(("1"+formatSocketData(TOUCH_MOVE, 7, 800, 400)).encode())  # tell the tweak to move our finger "7" to (800, 400)

进行润色

s.send(("1"+formatSocketData(TOUCH_UP, 7, 800, 400)).encode())  # tell the tweak to touch up our finger "7" at (800, 400)

结合它们

s.send(("1"+formatSocketData(TOUCH_DOWN, 7, 300, 400)).encode())
time.sleep(1)
s.send(("1"+formatSocketData(TOUCH_MOVE, 7, 800, 400)).encode())
time.sleep(1)
s.send(("1"+formatSocketData(TOUCH_UP, 7, 800, 400)).encode())

首先手指触摸 (300, 400),然后移动到 (800, 400),然后“离开”屏幕。所有的触摸事件都在没有延迟的情况下执行。

用法

  1. 安装后,tweak 将开始监听端口 6000。
  2. 使用套接字将触摸数据字段发送到调整

数据字段应始终为十进制数字,如下所示 事件数据 img

注意:未来可能会更新使用情况。我会更新这篇文章,但请在 github 上关注 Usage_iOS13-SimulateTouch

Event Count(1 位):指定单个事件的计数。如果您有多个事件要同时发送,只需增加事件计数并将事件附加到数据中即可。

在单个事件中

Type(1 位):指定单个事件的类型。

支持的事件类型:

  1. 事件:触摸。标志:0。说明:指定事件为修饰事件
  2. 事件:触地。标志:1.说明:指定事件为触地事件
  3. 事件:触摸移动。标志:2.说明:指定事件为触摸移动事件(移动手指)
  4. 事件:设置大小。Flag: 9. Description: 设置屏幕大小(必填!!下面会解释)

Touch Index(2 位数):Apple 支持多点触控,因此您必须在发布触摸事件时指定手指索引。手指索引的范围是 1-20(0 保留,不要使用 0 作为手指索引)。

x Coordinate(5位):您要触摸的地方的x坐标。前 4 位为整数部分,最后一位为小数部分。例如,如果要在屏幕上触摸 (123.4, 2432.1),则应为此填写“01234”。

y Coordinate(5位):你想触摸的地方的y坐标。前 4 位为整数部分,最后一位为小数部分。例如,如果要在屏幕上触摸 (123.4, 2432.1),则应为此填写“24321”。

而且

因此,如果您想用手指“3”在屏幕上触摸(123.4、1032.1),只需使用套接字连接到调整并发送“11030123410321”。

数字 0:“1”表示只有一个事件要执行。

数字 1:“1”表示事件类型:TOUCH_DOWN(标志为 1)。

数字 2-3:“03”表示该事件由手指“3”执行。

4-8位:“01234”表示x坐标123.4。

数字 9-13:“10321”表示 y 坐标 1032.1。

重要的提示

触摸坐标不取决于设备的方向。请参阅下图以获取更多信息。无论您如何放置设备,屏幕上的点击点都不会改变。 坐标注img

于 2020-07-22T03:10:49.000 回答