Metadata-Version: 2.4
Name: typeout
Version: 0.1.0
Summary: Simulate keystrokes to type text into remote desktops, VMs, or paste-blocked inputs.
Keywords: autotype,keystroke,pynput,vm,remote-desktop,clipboard
Author: Prasanna Reddy
Author-email: Prasanna Reddy <prasannareddy_ch@outlook.com>
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Utilities
Requires-Dist: pynput>=1.7.7
Requires-Dist: pyperclip>=1.8.2
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# ⌨️ typeout

> **Simulate keystrokes to type text into remote desktops, VMs, or paste-blocked inputs.**

[![PyPI version](https://img.shields.io/pypi/v/typeout.svg)](https://pypi.org/project/typeout/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

Ever had to input a 30-character random password into a **VirtualBox console**, **VMware ESXi web terminal**, **Citrix / VNC / RDP session**, or a banking portal that blocks `Ctrl+V`?

`typeout` bypasses paste restrictions by acting as a virtual keyboard. It countdowns so you can switch windows, then simulates hardware keystrokes directly into the active field.

---

## 🚀 Installation

Install using [`uv`](https://docs.astral.sh/uv/), [`pipx`](https://pypa.github.io/pipx/), or standard `pip`:

```bash
# With uv (recommended)
uv tool install typeout

# With pipx
pipx install typeout

# With pip
pip install typeout
```

---

## ⚡ Quick Start

```bash
# Type text after 3 seconds:
typeout "my-password" -w 3

# Secure hidden prompt (keeps passwords out of your shell history!):
typeout -s -w 5

# Type whatever is in your clipboard, then press Enter:
typeout -c -w 3 --enter

# Type a public key or script into an air-gapped terminal:
typeout -f ~/.ssh/id_ed25519.pub -w 5

# Pipe text directly from stdin:
echo "export TOKEN=xyz" | typeout -w 2
```

---

## 🛠️ Options & Flags

| Flag | Description |
| :--- | :--- |
| `[text]` | Positional argument: text to type out. |
| `-s`, `--secure` | Prompts for secret input via `getpass` (won't leak into terminal history). |
| `-c`, `--clipboard` | Reads input directly from system clipboard. |
| `--clear-clipboard` | Wipes the clipboard immediately after reading it for security. |
| `-f`, `--file <path>` | Reads text from a local file. |
| `-w`, `--wait <sec>` | Countdown in seconds before typing starts (default: `3`). |
| `-r`, `--repeat <n>` | Repeat typing sequence `n` times (default: `1`). |
| `--enter` | Automatically presses the `Enter` key after typing finishes. |
| `--human` | Natural typing cadence preset with subtle randomized jitter. |
| `--delay <sec>` | Base delay between characters in seconds (default: `0.012`). |
| `--jitter <sec>` | Maximum random extra delay added per character. |
| `-q`, `--quiet` | Suppresses countdown timer output. |
| `-v`, `--version` | Show program version. |

---

## 💡 Common Use Cases

### 1. Pasting Passwords without Leaving Them in Bash History
Using `typeout "MySecret"` saves the password to `~/.bash_history`. Instead, use `-s`:
```bash
typeout -s -w 4
# Enter secure text to typeout: [hidden]
# [typeout] Switch to target window now... Typing in 4s...
```

### 2. Typing from Clipboard into VMware / VirtualBox / RDP
Copy the text in your host OS, then run:
```bash
typeout -c -w 3 --enter
```
Switch to the VM window. 3 seconds later, it types out the clipboard contents and presses Enter.

### 3. Typing into Laggy or Packet-Loss Prone Consoles
If a slow remote connection is dropping letters, slow down the typing rate:
```bash
typeout "long_command_to_run" --delay 0.05
```

---

## 🧪 Development

`typeout` uses [`uv`](https://docs.astral.sh/uv/) for high-speed dependency management and development:

```bash
# Clone and setup
git clone https://github.com/prasannareddych/typeout.git
cd typeout

# Run tests
uv run pytest

# Run linter and formatter
uv run ruff check .
uv run ruff format .
```

---

## 📄 License

MIT License © Prasanna Reddy
