{"id":13600981,"url":"https://github.com/tj/go-terminput","last_synced_at":"2025-08-16T10:45:15.558Z","repository":{"id":55652951,"uuid":"211864953","full_name":"tj/go-terminput","owner":"tj","description":"Package terminput provides terminal keyboard input for interactive command-line tools.","archived":false,"fork":false,"pushed_at":"2020-12-15T05:50:13.000Z","size":7,"stargazers_count":116,"open_issues_count":1,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-24T13:13:03.852Z","etag":null,"topics":["command-line","go","golang","input","keyboard","terminal"],"latest_commit_sha":null,"homepage":"","language":"Go","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/tj.png","metadata":{"files":{"readme":"Readme.md","changelog":"History.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"tj"}},"created_at":"2019-09-30T13:21:51.000Z","updated_at":"2025-02-11T21:34:45.000Z","dependencies_parsed_at":"2022-08-15T05:40:16.558Z","dependency_job_id":null,"html_url":"https://github.com/tj/go-terminput","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tj/go-terminput","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fgo-terminput","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fgo-terminput/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fgo-terminput/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fgo-terminput/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tj","download_url":"https://codeload.github.com/tj/go-terminput/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fgo-terminput/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270702471,"owners_count":24630873,"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-08-16T02:00:11.002Z","response_time":91,"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":["command-line","go","golang","input","keyboard","terminal"],"created_at":"2024-08-01T18:00:51.832Z","updated_at":"2025-08-16T10:45:15.491Z","avatar_url":"https://github.com/tj.png","language":"Go","funding_links":["https://github.com/sponsors/tj"],"categories":["Go"],"sub_categories":[],"readme":"# Go Terminput\n\nPackage terminput provides terminal keyboard input for interactive command-line tools.\n\n## Example\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/pkg/term\"\n\t\"github.com/tj/go-terminput\"\n)\n\nfunc main() {\n\tt, err := term.Open(\"/dev/tty\")\n\tif err != nil {\n\t\tlog.Fatalf(\"error: %s\\n\", err)\n\t}\n\n\tt.SetRaw()\n\tdefer t.Restore()\n\n\tfmt.Printf(\"Type something, use 'q' to exit.\\r\\n\")\n\n\tfor {\n\t\te, err := terminput.Read(t)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"error: %s\\n\", err)\n\t\t}\n\n\t\tif e.Key() == terminput.KeyEscape || e.Rune() == 'q' {\n\t\t\tbreak\n\t\t}\n\n\t\tfmt.Printf(\"%s — shift=%v ctrl=%v alt=%v meta=%v\\r\\n\", e.String(), e.Shift(), e.Ctrl(), e.Alt(), e.Meta())\n\t}\n}\n```\n\n---\n\n[![GoDoc](https://godoc.org/github.com/tj/go-terminput?status.svg)](https://godoc.org/github.com/tj/go-terminput)\n![](https://img.shields.io/badge/license-MIT-blue.svg)\n![](https://img.shields.io/badge/status-stable-green.svg)\n\n## Sponsors\n\nThis project is sponsored by [CTO.ai](https://cto.ai/), making it easy for development teams to create and share workflow automations without leaving the command line.\n\n[![](https://apex-software.imgix.net/github/sponsors/cto.png)](https://cto.ai/)\n\nAnd my [GitHub sponsors](https://github.com/sponsors/tj):\n\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/0\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/0)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/1\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/1)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/2\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/2)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/3\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/3)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/4\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/4)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/5\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/5)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/6\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/6)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/7\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/7)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/8\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/8)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/9\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/9)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/10\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/10)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/11\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/11)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/12\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/12)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/13\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/13)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/14\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/14)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/15\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/15)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/16\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/16)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/17\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/17)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/18\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/18)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/19\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/19)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/20\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/20)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/21\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/21)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/22\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/22)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/23\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/23)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/24\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/24)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/25\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/25)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/26\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/26)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/27\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/27)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/28\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/28)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/29\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/29)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/30\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/30)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/31\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/31)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/32\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/32)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/33\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/33)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/34\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/34)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/35\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/35)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/36\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/36)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/37\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/37)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/38\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/38)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/39\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/39)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/40\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/40)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/41\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/41)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/42\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/42)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/43\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/43)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/44\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/44)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/45\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/45)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/46\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/46)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/47\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/47)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/48\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/48)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/49\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/49)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/50\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/50)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/51\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/51)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/52\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/52)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/53\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/53)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/54\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/54)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/55\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/55)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/56\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/56)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/57\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/57)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/58\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/58)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/59\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/59)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/60\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/60)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/61\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/61)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/62\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/62)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/63\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/63)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/64\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/64)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/65\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/65)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/66\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/66)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/67\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/67)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/68\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/68)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftj%2Fgo-terminput","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftj%2Fgo-terminput","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftj%2Fgo-terminput/lists"}