Skip to content
DorufocPublic

About

EasyInput 是一个面向 Windows 的自动文本输入工具,核心目的是在由于某些原因无法使用快捷键、粘贴操作或其他方式快速输入大批量文本时,依然能够将文本稳定地逐字符模拟输入到目标位置,因此具有很强的通用性。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

EasyInput

EasyInput 是一个面向 Windows 的自动文本输入工具,核心目的是在由于某些原因无法使用快捷键、粘贴操作或其他方式快速输入大批量文本时,依然能够将文本稳定地逐字符模拟输入到目标位置,因此具有很强的通用性。

当前仓库同时包含两套命令行实现:

  • Python 版本:位于仓库根目录,便于快速运行与调试
  • Rust 版本:位于 easyinput-rust/,使用 Windows 原生接口实现

本项目仅供交流学习使用,禁止二次贩卖或用于非法用途。


项目特性

文本来源支持

EasyInput 支持以下三种基础文本来源:

  1. 剪贴板模式
    • 从系统当前剪贴板读取文本
    • 在“功能键触发模式”下,每次触发都会重新读取当前最新剪贴板内容
  2. 预输入模式
    • 直接在程序中手动输入多行文本
    • 输入单独一行 END 表示结束录入
  3. 读文件模式
    • 从本地 .txt 文件中读取文本
    • 仅支持 .txt 文件

启动方式支持

  1. 倒计时模式
    • 默认倒计时:5 秒
    • 倒计时结束后自动开始输入
  2. 功能键触发模式
    • 按 Ctrl + Shift + F8 开始一轮自动输入
    • 每轮输入完成后,可再次按 Ctrl + Shift + F8 开始下一轮
    • 按 Ctrl + Shift + F9 结束等待或终止当前轮输入

输入行为

  • 使用 Windows 原生输入接口模拟键盘事件
  • 逐字符输出文本
  • 自动处理常见控制字符,例如:
    • 换行
    • Tab
    • Backspace
    • Escape
    • Delete
  • 默认节奏参数:
    • 普通字符间隔:0.03 秒
    • 换行额外延迟:0.06 秒
    • 功能键触发后开始前延迟:1.0 秒

适用场景

  • 在不方便直接粘贴文本的输入框中逐步输入内容
  • 演示“模拟人工输入”的交互流程
  • 测试桌面程序、网页输入框、聊天框等接受键盘事件的场景
  • 自动化辅助场景中的文本发送前端

目录结构

easyinput/
├─ README.md
├─ main.py                 # Python CLI 主界面
├─ keyboardsim.py          # Python 输入模拟后端
└─ easyinput-rust/
   ├─ Cargo.toml
   └─ src/
      ├─ main.rs           # Rust CLI 主界面
      └─ backend.rs        # Rust 输入模拟后端

运行环境

系统要求

  • Windows
  • 不支持 macOS / Linux

Python 版本

建议使用:

  • Python 3.9+

Python 版本当前不依赖第三方库,使用标准库即可运行。

Rust 版本

需要安装:

  • Rust / Cargo(建议使用较新稳定版)

Rust 版本依赖 windows-sys,首次构建时 Cargo 会自动下载依赖。


快速开始

1. 运行 Python 版本

在仓库根目录执行:

python main.py

进入主界面后:

  • 直接回车:进入默认模式
  • 输入 1:进入更多模式切换
  • 输入 0:退出程序

默认模式

默认模式为:

  • 剪贴板模式
  • 功能键触发模式

即启动后会等待你按:

Ctrl + Shift + F8

触发一次输入。


2. 运行 Rust 版本

在仓库根目录执行:

cargo run --manifest-path easyinput-rust/Cargo.toml

Rust 版本的界面交互与 Python 版本基本一致,默认也是:

  • 剪贴板模式
  • 功能键触发模式

使用流程

无论是 Python 版本还是 Rust 版本,整体流程基本一致:

  1. 启动程序
  2. 选择文本来源
    • 剪贴板
    • 预输入
    • txt 文件
  3. 选择启动方式
    • 倒计时模式
    • 功能键触发模式
  4. 手动点击目标输入框,确保焦点已经选中
  5. 等待倒计时结束,或按 Ctrl + Shift + F8
  6. 程序开始自动逐字符输入文本
  7. 若需终止,按 Ctrl + Shift + F9

快捷键说明

开始输入

Ctrl + Shift + F8

用于功能键触发模式下开始一轮自动输入。

终止输入 / 退出功能键模式

Ctrl + Shift + F9

作用包括:

  • 终止倒计时中的任务
  • 终止正在执行的一轮自动输入
  • 结束功能键触发模式的持续监听

文本来源说明

剪贴板模式

  • 从当前系统剪贴板读取 Unicode 文本
  • 若剪贴板为空或不是可用文本,会提示错误
  • 在“剪贴板 + 功能键触发模式”组合下,每一轮触发都会读取最新剪贴板内容

适合场景:

  • 需要频繁更换输入文本
  • 想要在不重启程序的前提下反复发送不同内容

预输入模式

  • 在程序中直接输入多行文本
  • 输入完成后,单独输入一行:
END

表示结束录入。

读文件模式

  • 仅支持读取 .txt 文件
  • 如果文件不存在、不是文件、或后缀不是 .txt,程序会提示错误

Python 后端命令行用法

除了运行 main.py 的交互式界面之外,也可以直接使用 keyboardsim.py。

直接输入指定文本

python keyboardsim.py "你好,这是一次自动输入测试"

从 txt 文件读取内容

python keyboardsim.py --file demo.txt

指定倒计时

python keyboardsim.py "测试内容" --delay 3

指定字符间隔与换行延迟

python keyboardsim.py "测试内容" --interval 0.05 --line-delay 0.1

使用功能键触发模式

python keyboardsim.py --hotkey

不传文本参数时,默认读取当前系统剪贴板文本。


默认参数

当前项目中的默认参数如下:

参数 默认值 说明
倒计时 5.0 秒 倒计时模式下开始前等待时间
字符间隔 0.03 秒 普通字符之间的输入延迟
换行延迟 0.06 秒 每次换行后的额外延迟
热键开始延迟 1.0 秒 检测到 Ctrl+Shift+F8 后,真正开始输入前的延迟
热键轮询间隔 0.05 秒 后台监听热键的轮询频率

实现说明

Python 版本

  • 主界面:main.py
  • 输入后端:keyboardsim.py
  • 使用 ctypes 调用 Windows API
  • 适合快速验证、调试与原型开发

Rust 版本

  • 主界面:easyinput-rust/src/main.rs
  • 输入后端:easyinput-rust/src/backend.rs
  • 使用 windows-sys 调用 Windows API
  • 结构更清晰,适合作为性能和可维护性更好的实现方向

注意事项

1. 必须先选中目标输入框焦点

这是最重要的一点。

程序只是模拟键盘输入,不会自动帮你点击目标窗口或输入框。因此在真正开始输入前,你必须:

  • 手动切换到目标窗口
  • 手动点击目标输入框
  • 确保光标已经在可输入位置

否则文本可能会被发送到错误的位置。

2. 仅支持 Windows

本项目依赖 Windows 键盘输入和剪贴板相关 API,不支持:

  • macOS
  • Linux

3. 文件模式只支持 txt

读文件模式当前只接受 .txt 文件。

4. 剪贴板模式依赖系统剪贴板内容

如果剪贴板为空,或当前格式不是可用文本,程序会报错。

5. 功能键模式不会自动退出

在功能键触发模式下,一轮输入完成后程序会继续等待下一次触发。
如需退出,请按:

Ctrl + Shift + F9

常见问题

Q1:为什么程序没有开始输入?

请按顺序检查:

  1. 是否处于 Windows 环境
  2. 是否已经选中目标输入框焦点
  3. 当前是否选择了功能键触发模式
  4. 如果是功能键触发模式,是否已按 Ctrl + Shift + F8
  5. 是否文本来源为空,例如剪贴板没有内容

Q2:为什么输入被中断了?

如果你按下了:

Ctrl + Shift + F9

程序会认为你主动终止了当前任务。

Q3:为什么文件读取失败?

请确认:

  • 文件存在
  • 路径正确
  • 文件后缀为 .txt

Q4:为什么功能键触发模式下一轮结束后程序还没退出?

这是设计行为。功能键触发模式支持连续多轮触发。
如需结束该模式,请按:

Ctrl + Shift + F9

开发说明

如果你希望继续扩展本项目,可以考虑的方向包括:

  • 增加 GUI 界面
  • 支持配置文件
  • 支持更多文本来源
  • 支持可视化热键设置
  • 增加日志记录
  • 增加更细粒度的输入速度配置
  • 在 Rust 版本中继续完善并逐步替代 Python 版本

许可证与声明

本项目当前已补充 MIT License,详见仓库根目录下的 LICENSE 文件。

作者在程序界面中已明确声明:

  • 项目开源在 GitHub
  • 仅供交流学习
  • 禁止二次贩卖
  • 禁止用于非法用途

About

EasyInput 是一个面向 Windows 的自动文本输入工具,核心目的是在由于某些原因无法使用快捷键、粘贴操作或其他方式快速输入大批量文本时,依然能够将文本稳定地逐字符模拟输入到目标位置,因此具有很强的通用性。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages