可以使用ios jailbroken上的外部键盘模拟触摸事件吗?

时间:2013-06-21 13:57:51

标签: ios events keyboard touch external

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

我会用这个用脚按下应用程序(振幅)中的按钮,我想用键盘作为脚踏开关。

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

2 个答案:

答案 0 :(得分:2)

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

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

查看源代码

IOS13-SimulateTouch

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

需要越狱设备

Description

使用此库,您只需一行代码即可在iOS 11.0-13.6上模拟触摸事件!所有源代码都将在以后发布。

Features

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

Installation

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

Code Example

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),然后“离开”屏幕。所有触摸事件均无延迟地执行。

Usage

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

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

注意:将来可能会更新用法。我将更新这篇文章,但请在Usage_iOS13-SimulateTouch

的github上跟踪

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

在单个事件内

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

支持的事件类型:

  1. 事件:触摸向上。标记:0。说明:将事件指定为修饰事件
  2. 事件:按下。标志:1.描述:将事件指定为触地事件
  3. 事件:触摸移动。标志:2.描述:将事件指定为触摸移动事件(移动手指)
  4. 事件:设置大小。标志:9。描述:设置屏幕尺寸(必填!将在下面说明)

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。

Important Note

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

答案 1 :(得分:0)

本网站有关于如何使用私有API来模拟触摸的清晰,更新的指南。既然你已经说过这不是为了分发,那应该就是你正在寻找的东西。

在越狱设备上,我相信有用于拦截蓝牙键盘事件的BTStack库,可以与下面链接中的代码链接。

http://www.cocoawithlove.com/2008/10/synthesizing-touch-event-on-iphone.html