{"id":28790949,"url":"https://github.com/giosali/hypoinput","last_synced_at":"2026-04-16T15:33:19.229Z","repository":{"id":45056379,"uuid":"513299049","full_name":"giosali/hypoinput","owner":"giosali","description":"A lightweight text expansion application for Windows","archived":false,"fork":false,"pushed_at":"2022-07-31T17:40:34.000Z","size":353,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-17T23:38:06.803Z","etag":null,"topics":["application","text-expander","text-expansion","windows","windows-10","windows-11"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giosali.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-12T21:36:28.000Z","updated_at":"2024-10-12T07:14:05.000Z","dependencies_parsed_at":"2022-07-15T10:30:38.331Z","dependency_job_id":null,"html_url":"https://github.com/giosali/hypoinput","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/giosali/hypoinput","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2Fhypoinput","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2Fhypoinput/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2Fhypoinput/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2Fhypoinput/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giosali","download_url":"https://codeload.github.com/giosali/hypoinput/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giosali%2Fhypoinput/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281742374,"owners_count":26553656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application","text-expander","text-expansion","windows","windows-10","windows-11"],"created_at":"2025-06-17T23:31:04.052Z","updated_at":"2025-10-30T03:56:48.329Z","avatar_url":"https://github.com/giosali.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eHypoinput\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/logo.png\" alt=\"Logo\" width=\"175\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/giosali/hypoinput/releases\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/v/release/giosali/hypoinput\" alt=\"Version\"\u003e\n\t\u003c/a\u003e\n    \u003ca href=\"https://github.com/giosali/hypoinput/releases\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/Windows 10-0078D6?style=flat\u0026logo=windows\u0026logoColor=white\" alt=\"Windows 10\"\u003e\n\t\u003c/a\u003e\n    \u003ca href=\"https://github.com/giosali/hypoinput/releases\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/-Windows%2011-1976D2.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAEs2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjI1NiIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjI1NiIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICB0aWZmOkltYWdlV2lkdGg9IjI1NiIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjU2IgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI3Mi4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI3Mi4wIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTEzVDIzOjE1OjMzLTA2OjAwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTEzVDIzOjE1OjMzLTA2OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5IFBob3RvIDEuOC41IgogICAgICBzdEV2dDp3aGVuPSIyMDIxLTExLTEzVDIzOjE1OjMzLTA2OjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz5nSMBlAAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz/zEDGMYmFhMQmrIT9qYmMx8quwmBllsHnz5peaH6/3ZtJkq2wVJTZ+LfgL2CprpYiU7JQ1sUHPeTNTM8mc27nnc7/3ntO954ISTGops3YAUums4Z/yuRdDS+76F5pooQ4FRdVMfS4wGaSqfd7jsONtn12r+rl/rSkSNTVwNAiPabqRFZ4Wnl3L6jbvCLdrCTUifCbsMeSCwne2Hi7yq83xIn/bbAT946C0CrvjFRyuYC1hpITl5XSnkjmtdB/7Jc5oeiEgsUu8ExM/U/hwM8ME43gZZFRmL30M0S8rquQPFPLnyUiuJrNOHoNV4iTI4hE1J9WjEmOiR2Ukydv9/9tXMzY8VKzu9EHds2W990D9NvxsWdbXkWX9HEPNE1ymy/mZQxj5EH2rrHUfgGsDzq/KWngXLjah41FXDbUg1YgrsRi8nUJzCNpuoHG52LPSPicPEFyXr7qGvX3olfOulV/c12en8R36twAAAAlwSFlzAAALEwAACxMBAJqcGAAAAzhJREFUeJzt27FRxDAQQFGLoTAKoBso464bCrjOloQYAnk8x/z3YnlnA+tnOg4AAAAAAAAAAAAAAAAAAADg2azdATMzZyzCJe5rrc/fDszM7TiOj4v2YdNaa+sOv5y1CPD/CACECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCECQCEvZ4w437CDK7xOOkMAAAAAAAAAABPZu0OmJnbGYtwicda6+u3AzPzfhzH2zXrsGut9bn1/e4CMzO7M7jM/a8f5ifoHxftw6a11tYd9hYAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAwgQAAAAAAAAAAAAAAAAAAAAAAJ7IN8OVHr2liargAAAAAElFTkSuQmCC\" alt=\"Windows 11\"\u003e\n\t\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/top/giosali/hypoinput?label=%20\u0026logo=c%2B%2B\" alt=\"C++\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/giosali/hypoinput/actions/workflows/build.yml\"\u003e\n        \u003cimg src=\"https://github.com/giosali/hypoinput/actions/workflows/build.yml/badge.svg\" alt=\"Build workflow\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/giosali/hypoinput/actions/workflows/tests.yml\"\u003e\n        \u003cimg src=\"https://github.com/giosali/hypoinput/actions/workflows/tests.yml/badge.svg\" alt=\"Tests workflow\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cb\u003eHypoinput\u003c/b\u003e is a lightweight text expansion application for Windows\n\u003c/p\u003e\n\n## Table of Contents\n\n- [❓ What Are Text Expansions?](#-what-are-text-expansions)\n- [🎛️ Features](#-features)\n  * [UTF-8](#utf-8)\n  * [Unique Triggers](#unique-triggers)\n  * [Cursor Position](#cursor-position)\n- [🎁 Installation](#-installation)\n- [🔧 Usage](#-usage)\n  * [GUI Editor](#gui-editor)\n    + [Adding a Text Expansion](#adding-a-text-expansion)\n    + [Editing or Deleting a Text Expansion](#editing-or-deleting-a-text-expansion)\n  * [Manually Creating, Editing, or Deleting a Text Expansion](#manually-creating-editing-or-deleting-a-text-expansion)\n  * [Disabling Hypoinput](#disabling-hypoinput)\n\n## ❓ What Are Text Expansions?\n\nA text expansion is text that is automatically printed after typing some other specific text. The text that is automatically printed is known as the `replacement` while the specific text is known as the `trigger`. These two texts are what form a text expansion.\n\nText expansions can be fairly simple:\n\n```mermaid\ngraph LR\n    a(\":hi\") --\u003e b(\"Hello, world!\")\n```\n\nIn this example, when you type `:hi`, that text you typed will be erased and replaced by `Hello, world!`. It's simple, but these quick and short text expansions can save you *a lot* of time.\n\nOn the other hand, text expansions can also be complex:\n\n```mermaid\ngraph LR\n    a(\"$bphtml\") --\u003e b(\"#60;!DOCTYPE html\u003e\u003cbr/\u003e#60;html lang='en'\u003e\u003cbr/\u003e#160;#160;#60;head\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;meta charset='UTF-8'\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;meta name='viewport' content='width=device-width, initial-scale=1.0'\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;meta http-equiv='X-UA-Compatible' content='ie=edge'\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;title\u003eMy Website#60;/title\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;link rel='stylesheet' href='./style.css'\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;link rel='icon' href='./favicon.ico' type='image/x-icon'\u003e\u003cbr/\u003e#160;#160;#60;/head\u003e\u003cbr/\u003e#160;#160;#60;body\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;main\u003e\u003cbr/\u003e#160;#160;#160;#160;#160;#160;#160;#160;#60;h1\u003eWelcome to My Website#60;/h1\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;/main\u003e\u003cbr/\u003e#160;#160;#160;#160;#60;script src='index.js'\u003e#60;/script#62;\u003cbr/\u003e#160;#160;#60;/body\u003e\u003cbr/\u003e#60;/html\u003e\")\n    style b text-align:left\n```\n\nAs you can see, typing `$bphtml` produces some typical boilerplate HTML. Instead of memorizing a long piece of text or having to always look something up, you can simply keep it stored as a text expansion.\n\n## 🎛️ Features\n\n**Hypoinput** comes with many practical and handy features that you'd expect from a text expansion application.\n\n### UTF-8\n\n**Hypoinput** supports Unicode characters which means there's a wide range of characters that can be printed through text expansions, including but not limited to:\n\n- Emojis (😀😊😉😍)\n- Accented letters (à, è, ì, ò, ù, À, È, Ì, Ò, Ù)\n- Chinese (漢字)\n\n### Unique Triggers\n\nYour input for getting a text expansion to trigger isn't limited to lowercase characters. With **Hypoinput**, your triggers can consist of both uppercase letters and special characters.\n\nA couple valid triggers:\n\n- `:_hello`\n- `$GOODbye`\n- `{bracket/trigger}`\n\nIf you can type it, you can use it!\n\n### Cursor Position\n\nIf you've ever wished you could have a text expander application move or adjust the cursor position for you after triggering a text expansion, then this is the application for you.\n\n**Hypoinput** has some keywords that you can use in your text replacements. A few of these keywords move the cursor position:\n\n\u003cdiv align=\"center\"\u003e\n\n|          Keyword         |                   Use                               |                         Example                       |\n| :----------------------: | :-------------------------------------------------- | :---------------------------------------------------- |\n|     {{\\_\\_CURSOR\\_\\_}}   | Moves cursor position to this location              | \"Hello {{\\_\\_CURSOR\\_\\_}}, how are you?\"              |\n| {{\\_\\_CURSOR_PASTE\\_\\_}} | Moves cursor position and pastes clipboard contents | \"python_program {{\\_\\_CURSOR_PASTE\\_\\_}} --foo --bar\" |\n\n\u003c/div\u003e\n\n**Hypoinput** can only process one of these in each text replacement. In other words, if you have multiple `{{__CURSOR__}}`'s or multiple `{{__CURSOR_PASTE__}}`'s, only the first one will be valid and all subsequent ones will be ignored.\n\n## 🎁 Installation\n\nYou can download and install **Hypoinput** by heading over to the [Releases](https://github.com/giosali/hypoinput/releases) section and downloading the most recent `.msi` file. Once you've downloaded the installer file, open it and follow the onscreen directions.\n\n## 🔧 Usage\n\nWhen you run **Hypoinput** for the first time, a `Settings.ini` file and a `TextExpansions.json` file will be created. The `Settings.ini` file contains information related to your general settings and the `TextExpansions.json` file is where your text expansions will be stored.\n\n\u003e ℹ️ If either file is missing, those files will be recreated each time the application starts\n\nThere's two ways you can add, edit, or delete a text expansion:\n\n- by using the built-in GUI editor that's powered by PowerShell scripts\n- by manually editing the `TextExpansions.json` file\n\nYou can find the option to do both of these things by right-clicking on the application's notification icon in the system tray.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/system-tray-icon.png\" alt=\"System tray icon\" width=\"75\"\u003e\n\u003c/p\u003e\n\n### GUI Editor\n\n**Hypoinput** features a way to easily add, edit, or delete a text expansion by using a GUI.\n\n#### Adding a Text Expansion\n\nThe easiest way to create a text expansion is by right-clicking on the application icon in the system tray and clicking on `Add text expansion`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/add-text-expansion.png\" alt=\"Add text expansion\" width=\"225\"\u003e\n\u003c/p\u003e\n\nThis will run a PowerShell script which will render a GUI for creating a new text expansion.\n\n\u003e ℹ️ Since a PowerShell script is being ran, you might see a terminal window appear alongside the GUI\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/add-text-expansion-gui.png\" alt=\"GUI for adding a text expansion\" width=\"400\"\u003e\n\u003c/p\u003e\n\n#### Editing or Deleting a Text Expansion\n\nSimilar to adding a text expansion, you can edit or delete a text expansion by right-clicking on the application icon in the system tray and clicking on `Edit text expansions`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/edit-text-expansions.png\" alt=\"Edit text expansions\" width=\"225\"\u003e\n\u003c/p\u003e\n\nThis will run a PowerShell script which will render a GUI for editing or deleting your text expansions.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/edit-text-expansions-gui.png\" alt=\"GUI for editing or deleting text expansions\" width=\"400\"\u003e\n\u003c/p\u003e\n\n### Manually Creating, Editing, or Deleting a Text Expansion\n\nYou can quickly access your `TextExpansions.json` file by right-clicking the application icon in the system tray and clicking on `Open file`. This will open the file in your default text editor application.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/open-file.png\" alt=\"Open file\" width=\"225\"\u003e\n\u003c/p\u003e\n\n\u003e ℹ️ The path to this file is `C:\\Users\\\u003cusername\u003e\\AppData\\Roaming\\Hypoinput\\TextExpansions.json`\n\nHere's a sample of what your `TextExpansions.json` file might look like:\n\n```json\n[\n    {\n        \"trigger\": \":hi\",\n        \"replacement\": \"Hello, world!\"\n    },\n    {\n        \"trigger\": \"$newline\",\n        \"replacement\": \"First line\\nSecond line\\nThird line\"\n    },\n    {\n        \"trigger\": \"\u0026cursor\",\n        \"replacement\": \"youtube-dl \\\"{{__CURSOR__}}\\\"\"\n    }\n]\n```\n\nA few important takeaways from this:\n\n- You *must* place your text expansions inside a **JSON array** `[]`\n- Fields are **case-sensitive**\n    - `trigger` *must* be spelled \"trigger\" and not \"TRIGGER\", \"tRiGgEr\", etc.\n    - `replacement` *must* be spelled \"replacement\" and not \"REPLACEMENT\", \"rEpLaCeMeNt\", etc.\n- You may have to escape certain characters:\n    - Quotation marks `\"`\n    - Backslashes `\\`\n- **Newlines** are indicated by `\\n`\n- **Tabs** are indicated by `\\t`\n- Make sure you save the file with `UTF-8` encoding (and not `UTF-8 with BOM` encoding)\n\n### Disabling Hypoinput\n\nYou can prevent text expansions from being triggered by right-clicking the application icon in the system tray and clicking on `Disable`. After disabling the application, you can then re-enable it by clicking on `Enable`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giosali/hypoinput/main/ext/disable.png\" alt=\"Disable\" width=\"225\"\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiosali%2Fhypoinput","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiosali%2Fhypoinput","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiosali%2Fhypoinput/lists"}