{"id":15651520,"url":"https://github.com/danburzo/input-methods","last_synced_at":"2025-08-18T12:05:18.391Z","repository":{"id":66884583,"uuid":"100810773","full_name":"danburzo/input-methods","owner":"danburzo","description":"Documenting the various input methods / IMEs and the events they trigger.","archived":false,"fork":false,"pushed_at":"2023-02-20T12:41:56.000Z","size":3817,"stargazers_count":33,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-30T19:50:36.763Z","etag":null,"topics":["as-we-learn","composition","dom","events","input-method","javasript","keyboard","keyboard-event-viewer","react","reference","tool","writing"],"latest_commit_sha":null,"homepage":"https://danburzo.github.io/input-methods/","language":"JavaScript","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/danburzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-19T17:35:38.000Z","updated_at":"2025-02-16T16:10:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"d2086bc5-bc66-4dd9-b3c7-f32b06c7ee1e","html_url":"https://github.com/danburzo/input-methods","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danburzo/input-methods","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danburzo%2Finput-methods","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danburzo%2Finput-methods/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danburzo%2Finput-methods/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danburzo%2Finput-methods/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danburzo","download_url":"https://codeload.github.com/danburzo/input-methods/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danburzo%2Finput-methods/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270989156,"owners_count":24680688,"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-18T02:00:08.743Z","response_time":89,"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":["as-we-learn","composition","dom","events","input-method","javasript","keyboard","keyboard-event-viewer","react","reference","tool","writing"],"created_at":"2024-10-03T12:38:52.255Z","updated_at":"2025-08-18T12:05:18.324Z","avatar_url":"https://github.com/danburzo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UI Events Viewer / Input methods\n\n**Note:** This project is in maintenance mode and will not be receiving further updates.\n\nPlease refer to the updated resources:\n\n-   The catalog of input methods is being maintained at [**danburzo.ro/input-methods/**](https://danburzo.ro/input-methods/).\n-   UI Events Viewer has been rewritten in vanilla JavaScript here: [**danburzo.ro/ui-events-viewer/**](https://danburzo.ro/ui-events-viewer/). Source code is inlined in the HTML.\n\n---\n\n## Introduction\n\nThe purpose of this repository is to document various input methods / IMEs, how to install them, and the UI Events they trigger in the browser.\n\n**UI Events Viewer**, available here:\n\nhttps://danburzo.github.io/input-methods/index.html\n\nCan be used to inspect the various keyboard / input / composition events that get triggered on a contenteditable element, using either the native DOM APIs or the React.js-polyfilled ones. It takes a cue from the excellent [Keyboard Event Viewer](https://w3c.github.io/uievents/tools/key-event-viewer.html).\n\n## Input methods\n\nThe [danburzo.ro/input-methods/](https://danburzo.ro/input-methods/) project organizes input methods by operating system.\n\n## Specifications\n\n-   [Input Events Level 2](https://w3c.github.io/input-events/index.html)\n-   [UI Events](https://w3c.github.io/uievents/)\n-   [Static Range](https://w3c.github.io/staticrange/)\n\n## Browser support and known limitations\n\n### `beforeinput`\n\n| Firefox                                                                                          | Chrome                                                                              | Safari                                                                                                                                      |\n| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |\n| Does not fire `beforeinput` — [issue here](https://bugzilla.mozilla.org/show_bug.cgi?id=1219192) | Added support in [Chrome 60](https://www.chromestatus.com/feature/5656380006465536) | Added support in [Safari 10.1](https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_1.html) |\n\n## Differences between native DOM and React\n\n-   React will send `beforeinput` as a `SyntheticInputEvent` of type `compositionend` when finishing a composition in Firefox; Chrome gets an event of type `textInput`.\n-   `input` events are `SyntheticEvent`s instead of `SyntheticInputEvent`s for some reason\n-   `SyntheticKeyboardEvent`s don't have the `code` property.\n\n## Other resources\n\n-   [IME Test](https://github.com/Microsoft/vscode/wiki/IME-Test) from the VSCode Github repository.\n-   [Keyboard Event Viewer](https://w3c.github.io/uievents/tools/key-event-viewer.html)\n\n## Contributing\n\nSee [`Contributing.md`](./Contributing.md) for ways to contribute — much appreciated!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanburzo%2Finput-methods","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanburzo%2Finput-methods","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanburzo%2Finput-methods/lists"}