Code Monkey home page Code Monkey logo

ios13-simulatetouch's Introduction

IOS13-SimulateTouch V0.0.6

A system wide touch event simulation library for iOS 11.0 - 14.

Jailbroken device required. Application wide touch simulation library: PTFakeTouch. Choose as you like:)

Discord: https://discord.gg/acSXfyz

Please give me a star!

Read this in other languages(send email to me if you want to help to translate this page): 简体中文版说明文档

Description

This library enables you to simulate touch events on iOS 11.0 - 14 with just one line of code! Currently, the repository is mainly for programmers. In the future, I will make it suitable for people who do not understand how to code.

Notice

I am a Computer Science student in University of Pittsburgh, and my spring 2021 term has started. My workload for this semester is pretty heavy. Although this semester is extremely boring because I didn't enroll in any of the CS courses this semester, I still have to focus on studying. So, I have to reduce the amount of time spending on updating ZXTouch. But I will still update it when I am free.

Features

  1. Touch Simulation
    • Multitouch supported (no other library you can find supports multi touching).
    • Programmable. Control scripts can be programmed with all the programming languages you desire.
    • Instant controlling supported. The ios device can be controlled with no latency from other devices/computers.
    • System-level touch simulation (will not inject to any process).
    • Touch recording. Record your touch event and play back.
  2. GUI Application
  3. Others
    • Application running.
    • System wide alert box displaying.
    • Shell accessing.
    • Color picker. Get the color of a specified pixel.
    • Image matching.
    • Device information
    • Battery information
    • Toast
    • Activator support
    • OCR
    • Touch indicator

Upcoming Feature Updates

Submit suggestions on discord!

Installation

Through Cydia:

  1. Open Cydia - Sources - Edit - Add - https://zxtouch.net (backup server: http://47.114.83.227 ("http" instead of "https"!!! Please double check this.))
  2. Install "ZXTouch" tweak
  3. Done

Through Github:

  1. Download com.zjx.ioscontrol_0.0.6_iphoneos-arm.deb from release
  2. Copy the deb file to your iOS device
  3. SSH to your iOS device and install the deb file by typing "dpkg -i /PATH/TO/om.zjx.pccontrol_0.0.2_iphoneos-arm.deb"

Demo Usage

Remote Controlling: You can control your iOS device from local scripts, computers, or even other iOS devices! Watch the video

Instant Controlling: Here is a demo of PUBG Mobile. Watch the video

Recording & Playback: Record touch events and playback Watch the video

Demo #4: Activator Support

Demo #5: OCR

Demo #6: Touch Indicator

Demo #7: Text Input

Demo #8: Color Picker

Usage

See python version of documentation below. But you can also use ANY language to control your iOS device as long as the language supports socket. Here is how it works:

  1. After installation, the tweak starts listening at port 6000.

  2. To control your device, send data in certain format to port 6000 on your device. I will not list the detail format of data here, but you can read my python module source code to figure it out.

Documentation (Python)

Installation

  1. On Your iOS Device: ZXTouch python module will be automatically installed on your iOS device.

  2. On Computers: If you want to install ZXTouch python module on your computer for remote controlling, download the source code from github and copy the zxtouch folder to your "site-packages" folder of your python on your computer.

Create A ZXTouch Instance

To create a instance, use zxtouch(ip) where ip is the ip address of your device. If you want to run the script locally on your iOS device, just input "127.0.0.1".

from zxtouch.client import zxtouch # import module
device = zxtouch("127.0.0.1") # create instance

Instance Methods

Touch

Bring Application to Foreground

Show Alert Box

Run Shell Command As Root

Image Matching

Toast

Color Picker (RGB Value From A Point on Screen)

Accurate Sleep

Hide Keyboard

Show Keyboard

Text Input

Move Cursor

Play A Script

Force Stop Script Playing

Get Screen Size

Get Screen Orientation

Get Screen Scale

Get Device Information

Get Battery Information

Start Touch Recording

Stop Touch Recording

OCR

Touch:

There are two methods you can use to send touch events.

For a single touch event:

def touch(type, finger_index, x, y):
	"""Perform a touch event
	
	Args:
		type: touch event type. For touch event types, please insert "from zxtouch.touchtypes import *" at top of your script.
		finger_index: the finger index of the touch event. The range should be 1-19
		x: x coordinate of the screen
		y: y coordinate of the screen
	
	Returns: 
		None
	"""

For sending multiple touch events at the same time:

def touch_with_list(self, touch_list: list):
    """Perform touch events with a list of events
    touch list should be type of list. Inside the list, there must be dictionaries with the following format

    Args:
    	touch_list: format example: [{"type": ?, "finger_index": ?, "x": ?, "y": ?}]
    	
    Returns: 
    	None
    """

Code Example

# code example
from zxtouch.client import zxtouch
from zxtouch.touchtypes import *
import time

device = zxtouch("127.0.0.1") # create instance

# finger "5" touch (400, 400)
device.touch(TOUCH_DOWN, 5, 400, 400) # TOUCH_DOWN is imported from zxtouch.touchtypes
time.sleep(1)
# move to (400, 600)
device.touch(TOUCH_MOVE, 5, 400, 600) # TOUCH_MOVE is imported from zxtouch.touchtypes
time.sleep(1)
# touch up
device.touch(TOUCH_UP, 5, 400, 600) # TOUCH_UP is imported from zxtouch.touchtypes
time.sleep(1)

# multitouch point (300, 300) and (500, 500) at the same time
device.touch_with_list([{"type": TOUCH_DOWN, "finger_index": 1, "x": 300, "y": 300}, {"type": TOUCH_DOWN, "finger_index": 2, "x": 500, "y": 500}])
time.sleep(1)
device.touch_with_list([{"type": TOUCH_UP, "finger_index": 1, "x": 300, "y": 300}, {"type": TOUCH_UP, "finger_index": 2, "x": 500, "y": 500}])

device.disconnect()

Bring Application to Foreground

def switch_to_app(bundle_identifier):
	"""Bring an application to foreground
	
	Args:
		bundle_identifier: the bundle identifier of the application
	
	Returns: 
		Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
	"""

Code Example

from zxtouch.client import zxtouch

device = zxtouch("127.0.0.1") # create instance
device.switch_to_app("com.apple.springboard") # return to home screen

device.disconnect()

Show Alert Box

def show_alert_box(title, content, duration):
    """Show alert box on device

    Args:
        title: title of the alert box
        content: content of the alert box
        duration: the time the alert box shows before disappear

    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Code Example

from zxtouch.client import zxtouch

device = zxtouch("127.0.0.1") # create instance
device.show_alert_box("Alert", "This is a system-wide alert box that lasts for 3 seconds", 3)

device.disconnect()

Run Shell Command As Root

def run_shell_command(command):
    """Run shell command on device as root
		
	Args:
    	command: command to run
        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Image Matching

Match screen with a template image.

def image_match(template_path, acceptable_value=0.8, max_try_times=4, scaleRation=0.8):
    """Match screen with a template image
		
	Args:
    	template_path: absolute path of the template image on your iOS device.
    	acceptable_value: for a success match, what is the similarity of the template and parts you want to match on the screen.
    	scaleRation: if match failed due to the size difference between template image and image on screen, what should the size of the template image be for the next try.
    	max_try_times: how many times to try.
        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise a dictionary containing x, y, width, height of the template on screen. (see code example below)
		
		NOTICE: result_tuple[0] == True does not mean a success match, it only means no error happens while matching. To check whether it is a success match, check the width and height of the returned dictionary. If both width and height == 0, then it means match failed.
    """

Code Example

from zxtouch.client import zxtouch

device = zxtouch("127.0.0.1") # create instance
result_tuple = device.image_match("/var/mobile/Library/ZXTouch/scripts/examples/Image Matching.bdl/examples_folder.jpg", 0.8, 5, 0.85) # try 5 times with acceptable value 0.8. Each time  make template image size*1.5 AND size/1.5 then match again.

if not result_tuple[0]:
	print("Error happens while matching template image. Error info: " + result_tuple[1])
else:
	result_dict = result_tuple[1]
	if float(result_dict["width"]) != 0 and float(result_dict["height"]) != 0:
		print("Match success! X: " + result_dict["x"] + ". Y: " + result_dict["y"] + ". Width: " + result_dict["width"] + ". Height: " + result_dict["height"])
	else:
		print("Match failed. Cannot find template image on screen.")
		
device.disconnect()

Toast

def show_toast(toast_type, content, duration, position=0, fontSize=0):
	"""show a toast
	
	Args:
        type: type of the toast. Please import zxtouch.toasttypes for the constant.
        content: content of the toast
        duration: how long the toast will appear before disappearing
        position: position of the toast. Please import zxtouch.toasttypes for the constant.
        
        For more information about the constants, please see code example below
	
	Returns: 
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""	"""

Code Example

from zxtouch.client import zxtouch
from zxtouch.toasttypes import *
import time

device = zxtouch("127.0.0.1") # create instance
device.show_toast(TOAST_SUCCESS, "This is an success message toast", 1.5)
time.sleep(1.5)

device.show_toast(TOAST_ERROR, "This is an error message toast", 1.5)
time.sleep(1.5)

device.show_toast(TOAST_WARNING, "This is an warning message toast", 1.5)
time.sleep(1.5)

device.show_toast(TOAST_MESSAGE, "This is an normal message toast", 1.5)
time.sleep(1.5)

device.show_toast(TOAST_ERROR, "Toast can also be shown at bottom", 3, TOAST_BUTTOM)


device.disconnect()

Color Picker (RGB Value From A Point on Screen)

def pick_color(x, y):
    """Get the rgb value from the screen.
		
	Args:
   		x: x coordinate of the point on the screen
   		y: y coordinate of the point on the screen

    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise a dictionary containing red, green, blue of the point on screen.  
    """

Code Example

from zxtouch.client import zxtouch
import time

device = zxtouch("127.0.0.1")
print("Picking color from 100, 100 after 1.5 seconds...")
time.sleep(1.5)
result_tuple = device.pick_color(100, 100)
if not result_tuple[0]:
    print("Error while getting color. Error info: " + result_tuple[1])
else:
    result_dict = result_tuple[1]
    print("Red: " + result_dict["red"] + ". Green: " + result_dict["green"] + ". Blue: " + result_dict["blue"])
		
device.disconnect()

Accurate Sleep

I don't know the why, but if you call time.sleep in python, the sleep time will not be accurate. However you can use accurate_sleep method in zxtouch to sleep for an accurate time.

def accurate_usleep(microseconds):
    """Sleep for an accurate time
		
	Args:
    	microseconds: microseconds to sleep
        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Hide Keyboard

If the keyboard is showing, hide the keyboard

def hide_keyboard():
    """Hide the keyboard
    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Show Keyboard

If the keyboard is hiding, show the keyboard

def show_keyboard():
    """Show the keyboard
    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Text Input

Insert text to the current text field. If you want to delete characters, please call this method like this: device.insert_text("\b")

def insert_text(text):
    """Insert text to the textfield
    
    Args:
    	text: text to insert (\b for deleting characters)
    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Move Cursor

Move the text cursor on textfield

def move_cursor(offset):
    """Move the cursor
		
	Args:
		offset: the related position you want to move. To move left, offset should be negative. For moving right, it should be positive
		    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Play A Script

Play a zxtouch script on iOS device.

def play_script(script_absolute_path):
    """Play a zxtouch script on iOS device.
		
	Args:
    	script_absolute_path: absolute path of the script
    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Force Stop Script Playing

Force the device to stop playing current script

def force_stop_script_play():
    """Force stop playing a script
		
	Args:
		None
				    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Get Screen Size

def get_screen_size():
    """Get screen size in pixels
		
	Args:
		None
				    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise a dictionary containing width and height of the screen.
							format of the dicionary: {"width": ?, "height": ?}
    """

Get Screen Orientation

def get_screen_orientation():
    """Get orientation of the screen
		
	Args:
		None
				    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise the orientation of the screen. An int value in str format indicating the orientation.
    """

Get Screen Scale

def get_screen_scale():
    """Get scale of the screen
		
	Args:
		None
				    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise the scale of the screen. An int value in str format indicating the scale.
    """

Get Device Information

def get_device_info():
    """Get information of the device
		
	Args:
		None
				    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise a dictionary containing name, system_name, system_version, model, identifier_for_vendor.
							format of the dicionary: {"name": ?, "system_name": ?, "system_version": ?, "model": ?, "identifier_for_vendor": ?}
    """

Get Battery Information

def get_battery_info():
    """Get information of the battery
		
	Args:
		None
				    	        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise a dictionary containing battery_state, battery_level, battery_state_string.
							format of the dicionary: {"battery_state": ?, "battery_level": ?, "battery_state_string": ?}
    """

Start Touch Recording

def start_touch_recording():
    """Start recording touch events. If success, there will be a red indicator at the top of your screen.
		
	Args:
    	None
        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

Stop Touch Recording

def stop_touch_recording():
    """Stop recording touch events. You can also double click volumn down button to stop recording
		
	Args:
    	None
        
    Returns:
       Result tuple
		
		The format of the result tuple:
		result_tuple[0]: True if no error happens when executing the command on your device. False otherwise
		result_tuple[1]: error info if result_tuple[0] == False. Otherwise ""
    """

OCR

def ocr(self, region, custom_words=[], minimum_height="", recognition_level=0, languages=[], auto_correct=0, debug_image_path=""):
    """Get text from a region

    Args:
        region: a tuple containing start_x, start_y, width, height of the region to ocr. Format: (x, y, width, height)
        custom_words: an array of strings to supplement the recognized languages at the word recognition stage.
        minimum_height: the minimum height of the text expected to be recognized, relative to the image height. The default value is 1/32
        recognition_level: a value that determines whether the request prioritizes accuracy or speed in text recognition. 0 means accurate. 1 means faster.
        languages: an array of languages to detect, in priority order.  Default: english. Use get_supported_ocr_languages() to get the language list.
        auto_correct: whether ocr engine applies language correction during the recognition process. 0 means no, 1 means yes
        debug_image_path: debug image path. If you DONT want the ocr engine to output the debug image, leave it blank

    Returns:
        Result tuple: (success?, error_message/return value)

        if the operation successes, the return value will be an array of texts in the region.
    """
def get_supported_ocr_languages(self, recognition_level):
    """Get languages that can be recognized by ocr

    Args:
        recognition_level: a value that determines whether the request prioritizes accuracy or speed in text recognition. 0 means accurate. 1 means faster.

    Returns:
        Result tuple: (success?, error_message/return value)

        if the operation successes, the return value will be an array of available languages .
    """

Contact

Mail: [email protected]

Discord: https://discord.gg/acSXfyz

ios13-simulatetouch's People

Contributors

bravecowardp avatar teelekkung avatar xuan32546 avatar xuan32546-pitt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios13-simulatetouch's Issues

Cannot install on iPad Pro, 14.2 Taurine

Hi, I added your repo and tried to install ZXTouch but I get a dpkg error, saying that .../tmp.ci/preinst gives a file not found error (error code 2). Would you know how to fix it? I also tried to download the .deb in the releases page and run dpkg -i manually. Same error.

ZXTOUCH

Whenever I install ZXTOUCH, it keeps on saying "zxtouch Needs to Be Updated. The developer of this app needs to update it to work with IOS 13.6.1"

Tweak does not run on iPhone X 14.2

After installation I couldn't connect to the tweak. Tried running LSOF on a device that the tweak works on (iPhone X 14.4) and I can see SpringBoard listening on port 6000, but when running LSOF on the first device (iPhone X 14.2) I do not see any process listening on that port.

Any ideas?

Error while running

Hello.

Im running this example in my iphone 6s iOS 13.7

#welcome to script editer
#when you finish, click done

import socket

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

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))
#write your code here (see example code on github or discord)

But im getting this error:

python3: can't open file '/var/mobile/Containers/Data/Application/B45C8B19-3053-4E7D-8AB8-620898B817DB/Documents/local/scripts/useradd110120-63955': [Errno 2] No such file or directory

Any idea?

not work

pls help , s.send("11com.apple.Preferences".encode()). can`t work?

How to integrate this lib to obj c project?

Hello,
Because of the hid-support library is not support on ios 13-14 anymore! so I was trying with this great IOS13-SimulateTouch library, But I don't know how to integrate or call it in the obj c. Can you help me? Thank in advance.

Version Outdated Error

The following error

Version Outdated
this version of ZJXSimulateTouch library is too old and cannot work anymore,Please update it on Cydia.

When I tried to update, the source(http://47.114.83.227/) was no longer accessible.

please help ,thanks.

物理按键模拟

可否增加电源键、音量键的模拟,以及他们的组合键,比如截图

Crash on iOS 13.6.1

iPhone XR
iOS 13.6.1
JB with Odyssey, all unnecessary tweaks are disabled.
Work with 0.0.4 previously, but keep springboard crashing after upgraded to 0.0.6u4. Would it be possible to provide 0.0.4 deb binary again?

Always crashed if both "iOS Mouse-Keyboard Controller Debug" and "pccontrol.dylib" are enabled.

Two crash dump for reference:
1.txt
2.txt

淘宝被下单

安装插件之后,无缘无故就自动在淘宝店<<亿阁祺舰店>>给我下单了一笔,还直接支付了。。

Still crash on iOS 13.6.1

Similar issue of #25
No problem on 0.0.6 but has problem since 0.0.6u1

Using 0.0.7u2 still crash.

Dump is attached at the bottom of #25

请问如何实现点击的效果

你好,我按文档上的示例操作发送点击事件以后,发现没啥反应,请问这是正常的吗,我想实现的是打开我的软件,然后点击一下我写的按钮;
谢谢

help,make出错!

Tweak.xm:13:9: fatal error: 'IOKit/hid/IOHIDService.h' file not found
#import <IOKit/hid/IOHIDService.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~
Tweak.xm:13:9: note: did not find header 'hid/IOHIDService.h' in framework 'IOKit' (loaded from
'/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/Frameworks')
1 warning and 1 error generated.
make[4]: *** [/Users/zxx/Downloads/IOS13-SimulateTouch-master/.theos/obj/debug/arm64/Tweak.xm.73a28ae7.o] Error 1
rm /Users/zxx/Downloads/IOS13-SimulateTouch-master/.theos/obj/debug/arm64/Tweak.xm.mm
make[3]: *** [/Users/zxx/Downloads/IOS13-SimulateTouch-master/.theos/obj/debug/arm64/pccontrol.dylib] Error 2
make[2]: *** [internal-library-all_] Error 2
make[1]: *** [pccontrol.all.tweak.variables] Error 2
make: *** [internal-all] Error 2

Why zxtouch removing python on ios?

Hi! Awesome tweak, (dumb ios is now a few steps closer to android's freedom) however :
Can python and zxtouch coexist somehow on my uncover jb iPadOS 13.5's device?

Odyssey越狱下无反应

iPhone 8P 13.3

uname -a
Darwin Phone 19.2.0 Darwin Kernel Version 19.2.0: Mon Nov 4 17:47:00 PST 2019; root:xnu-6153.60.66~39/RELEASE_ARM64_T8015 iPhone10,2 arm64 D21AP Darwin

dpkg -s com.zjx.pccontrol
Package: com.zjx.pccontrol
Status: install ok installed
Section: Tweaks
Installed-Size: 160
Maintainer: Jason Z
Architecture: iphoneos-arm
Version: 0.0.1-233+debug
Depends: mobilesubstrate, firmware (>= 12.0)
Description: iOS touch simulation library
Name: pccontrol
Author: Jason Z

照文档安装驱动包,但运行代码后无反应,也无任何报错。
推测是Odyssey 基础包被换成了libhooker,不兼容原MobileSubstrate.
望能适配,谢谢.

Couldn't create file and folder

When I try to create a new file or folder, I get a permission error (same as this link).
I have tried reinstalling and granting root permissions to the /var/mobile/library/ZXTouch folder, but those did not work.
I tried other versions, and it worked fine up to 0.0.7-6, but from 0.0.7-9 onwards, the permission error occurred.

I hope these help improve the situation! (I'm translating this at DeepL, sorry if it's hard to convey...)
env: iOS 14.1/iPad Pro 12.9 2020/Taurine 1.0.1

Play button not working

Play button in the newest zxtouch version(0.0.7-3) does not work. Neither does it work when using run/stop script events. (Iphone 11 pro, IOS 13.5)

Tweak seems to be deprecated on the repo

Adding the Repository from the README.md, the only available Package is ZJXTouchSimulation-old.
Since this appears to be a deprecated version, I was wondering whether one could already get an updated one.
No pressure though, if you don't have time to work on it right now and this is intentional. ^_^

中文乱码

设备8p
当弹出栏的内容是中文时就会乱码,在encode添加utf-8也不行,请问需要怎么解决?

希望开发者添加界面布局检测功能

因为实现自动化只靠颜色识别效果不是很好,比如有些动图或者变化页面都会导致点击失效;
所以希望开发者能做出根据软件布局名称或者id而达到点击目的,有点像Appium的功能,希望你能采纳我的建议,谢谢!

点击和抬起动作无效

准备模拟点击的效果,使用10事件,参照performTouch方法写了一个对同一个点按下和抬起操作的方法,测试后要么只能长按,要么就是没反应。IOS版本是12.4.8 iphone6

OCR has mem leaks

After use the ORC about 10-25 times on iPhoneX, SpringBoard crash:

Mar 27 15:38:50 iPhoneX kernel[0] <Notice>: EXC_RESOURCE -> SpringBoard[5661] exceeded mem limit: ActiveSoft 332 MB (non-fatal)

Running from remote socket the operation times out

I tried running the Python script remotely.

Trying to connect using

s = socket.socket()
s.connect("remoteip", 6000)

does connect, but the moment I pass in data to perform action or get device details. The action times out. I am using proper format as defined in format_socket_data but still, when I'm trying to receive a response s.recv(1024) the socket times out.

Checked with all the examples and command, it seems if you run from localhost and connect to socket it works, but if you run from outside it doesn't work.

Update notification alert terrorizing user if not last version - can I disable it?

Can I disable that annoying blocking everything randomly appearing alert in some plist file? As I fed up of alerts popping up in random places to frequently and having no option to answer like - No, I do not want to upgrade. I had found most stable version and I kept it. The last one is not displaying touches on 13.5 - so why user should be terrorized so much by this upgrades like it is the most important thing for him in the world now? Lets allow to all apps and tweaks to block our screens with system alerts made in such intrusive way ... Besides that, the as tweak is acting as root - I highly alarmed with HOW the tweak received info about new version without my permission to go in internet...?! Uninstall? Private project/rootkit?

[Feature Request] Functionality similar to Ankulua's Record and Play

Hi there!

I really appreciate the work you're putting into this! This might be asking for much, but I'm just wondering how hard it would be to add functionality similar to Ankulua's Snap and Play? I believe you have something close with the upcoming OCR support and pixel color picker.

What Ankulua's Snap and Play does, if you aren't familiar with it, is records where the user taps and sets a search boundary around that area so if a specific button comes up, the script will just tap the button (as opposed to just repeating predefined touches over and over again).

If something like this is already in the works, if this isn't going to be implemented, or if I'm just dumb and am missing something that already exists, please feel free to just close this issue.

Thanks again for all the work on this!

运行失效

运行示例代码,在iPhone X 13.6上alert弹出后点击了ok,不会杀死设置进程,不会跳到桌面滑动。还有为什么每个代码都需要写time.sleep呢

脚本无法启动

s.connect("127.0.0.1",6000)
ConnectionRefusedError:[Errno 61] Connection

编译环境

您好,我是一个新手,想自己在上边做一些拓展性的功能,但是我在xcode上编译生成的应用跟您发布的不一样,想请问下要安装啥工具才能编译生成应用。万分感激🙏。

Works great — Keyboard support?

This works great, especially with a lot of existing code/libraries being well outdated, this is a welcome surprise. Do you see any chance to support keyboard simulation? Just sending characters would be enough. Thanks!

Is zxtouchb binary in usr/bin intended for scripts launching?

Hi, Is zxtouchb intended for scripts launching? If yes - what is it's correct syntax then? It outputs only some unapplicable for building guesses by any member of the human race string "zxtouchb[13059:285633] com.zjx.zxtouchb: usage: zxtouchd [parameter] [...]" like help or a suggestion ... Come on!!! That helps not much! What the hell is the mentioned zxtouchD [parameter] then? :) There is no such binary file! Only the zxtouchB exists. Can you provide any working exemple of how to launch zxtouch's script from CLI please? As Steevie's dream's phone system provides no launch shortcuts... Hand-face ... Tge Activator's triggers will not allow to even touch a screen if will be used too many of them (because that all stpd swipes over already occupied by stpd iOS's swipes instead of the compact hotspots usagefor instance). Thats why i asking of the corect syntax of CLI launch script command.
Rgrds!

精准滑动

能否更精准地滑动?即不带惯性的滑动

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.