{"id":50788016,"url":"https://github.com/rokobuljan/kioboard","last_synced_at":"2026-06-12T09:30:36.313Z","repository":{"id":246770053,"uuid":"822143308","full_name":"rokobuljan/kioboard","owner":"rokobuljan","description":"Virtual keyboard for digital signage kiosk touch screens","archived":false,"fork":false,"pushed_at":"2026-03-02T10:52:18.000Z","size":834,"stargazers_count":3,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-02T13:20:19.666Z","etag":null,"topics":["javascript","keyboard","kiosk","kiosk-software","on-screen-keyboard","osk","touch-screen","touch-screen-kiosk","virtual-keyboard"],"latest_commit_sha":null,"homepage":"https://rokobuljan.github.io/kioboard/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rokobuljan.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-06-30T11:55:27.000Z","updated_at":"2026-03-02T10:51:32.000Z","dependencies_parsed_at":"2024-08-09T01:31:14.695Z","dependency_job_id":null,"html_url":"https://github.com/rokobuljan/kioboard","commit_stats":null,"previous_names":["rokobuljan/kioboard"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/rokobuljan/kioboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokobuljan%2Fkioboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokobuljan%2Fkioboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokobuljan%2Fkioboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokobuljan%2Fkioboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rokobuljan","download_url":"https://codeload.github.com/rokobuljan/kioboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokobuljan%2Fkioboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34238710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"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":["javascript","keyboard","kiosk","kiosk-software","on-screen-keyboard","osk","touch-screen","touch-screen-kiosk","virtual-keyboard"],"created_at":"2026-06-12T09:30:35.699Z","updated_at":"2026-06-12T09:30:36.306Z","avatar_url":"https://github.com/rokobuljan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"src/page/kioboard-logo-dark.svg\"\u003e\u003cimg alt=\"Kioboard - Virtual touch keyboard\" src=\"src/page/kioboard-logo.svg\"\u003e\u003c/picture\u003e\r\n\r\nJavaScript **virtual on-screen keyboard** for digital signage kiosk touchscreens\r\n\r\n- [**Kioboard homepage \u0026rarr;**](https://rokobuljan.github.io/kioboard/)  \r\n- **[Quick Tutorial \u0026rarr;](tutorial.md)**  \r\n- **[API docs \u0026rarr;](api.md)**  \r\n\r\n![Kioboard](src/page/wallpaper.png)\r\n\r\n## Features\r\n\r\n- [x] Fully customizable layouts and layers\r\n- [x] Fully customizable buttons actions\r\n- [x] Fully customizable buttons icons (Unicode, SVG)\r\n- [x] Themes: default, flat, glass. In light and dark mode\r\n- [x] Language presets (contribute to the project!)\r\n- [x] Shift + Caps-Lock\r\n- [x] Close Kioboard button\r\n- [x] Toggle or set initial visibility\r\n- [x] Drag/move Kioboard handler\r\n- [x] Different layouts per input groups\r\n- [x] Long key press - repeat input\r\n\r\n## Usage\r\n\r\nInstall package\r\n\r\n```bash\r\nnpm i @rbuljan/kioboard\r\n```\r\n\r\nImport and instantiate\r\n\r\n```js\r\nimport \"@rbuljan/kioboard/dist/kioboard.css\";\r\nimport en from \"@rbuljan/kioboard/dist/layouts/en.js\";\r\nimport Kioboard from \"@rbuljan/kioboard\";\r\n\r\nconst kio = new Kioboard({\r\n    layout: en,\r\n    theme: \"default-dark\",\r\n});\r\n```\r\n\r\nHTML\r\n\r\n```html\r\n\u003cinput data-kioboard name=\"example\"\u003e\r\n```\r\n\r\n## Options\r\n\r\nCustomization options example:\r\n\r\n```js\r\nconst kio = new Kioboard({\r\n    parent: \"body\", // selector|Element\r\n    inputs: \"[data-kioboard]\", // selector|Element|Element[]|NodeList\r\n    input: null, // The curently active input Element\r\n    theme: \"default\", // \"default|flat|glass\"-\"light|dark\"\r\n    layout: {}, // Layout Object, or import en|de|es|fr|hr|it // Contribute for more!\r\n    layerName: \"default\", // Initial layer\r\n    shiftState: 0, // 0=off 1=on 2=capsLock // Necessary if showing the \"shift\" layer\r\n    isEnterSubmit: true, // submit form (\u003cinput\u003e only)\r\n    isVisible: false, // Initial visibility\r\n    isPermanent: false, // Always visible\r\n    isScroll: true, // should input scrolIntoView()\r\n    isOSK: false, // show also default OS's on-screen keyboard\r\n    scrollOptions: { behavior: \"smooth\", block: \"start\", inline: \"nearest\" },\r\n    onInit() { /*initialized*/ },\r\n    onLoad() { /*layout loaded*/ },\r\n    onBeforeShow() { /*before show*/ },\r\n    onShow() { /*after show*/ },\r\n    onBeforeHide() { /*before hide*/ },\r\n    onHide() { /*after hide*/ },\r\n    onKeyDown(keyName) { /*after key press*/ },\r\n    onKeyUp(keyName) { /*after key release*/ },\r\n});\r\n```\r\n\r\n## Methods\r\n\r\nHaving a Kioboard instance (like i.e: `kio`), you can then use its [methods](api.md)\r\n\r\n```js\r\nkio.load(layout, callback) // Load Layout object or .js layout file\r\nkio.setLayout(layout) // Read layout data, attach keys actions, set default layer\r\nkio.shift(state) // 0=off 1=on 2=caps-lock. Needed when using .show(\"shift\") or .changeLayer(\"shift\")\r\nkio.show() // Show Kioboard\r\nkio.show(layerName) // .changeLayer(layerName) and show Kioboard \r\nkio.hide() // Kide Kioboard\r\nkio.setActions(actions) // Set key actions for current layout. See: .on()\r\nkio.setStyle(CSSVars) // Sets CSS Vars from object\r\nkio.on(keys, callback) // Attach action callbacks to keys\r\nkio.off(keys, callback) // Detach action callbacks from keys\r\nkio.emit(keys) // Emit programmatically registered keys actions\r\nkio.sequence(keys, speed, callback) // =\u003e fn() to stop sequencer\r\nkio.clearKioboard() // Clear children elements (rows and buttons)\r\nkio.draw() // Draw rows and buttons\r\nkio.changeLayer(layerName) // Draw a specific layout's layer\r\nkio.setTheme(themeName) // Change theme\r\nkio.hasSelection() // true if input has selection\r\nkio.insert(value, from, to) // insert a value at caret position of from-to index\r\nkio.drag() // Attaches drag listeners to Kioboard element until pointerup\r\nkio.init() // Initialize element and event listeners\r\nkio.destroy() // Destroy element and listeners\r\n```\r\n\r\nFind out more about each method (with examples!) in the [API Docs](api.md)\r\n\r\n## Feature requests / issues\r\n\r\nMissing a feature? Have a suggestion? Found a bug?\r\n\r\n[GitHub: rokobuljan/kioboard/issues \u0026rarr;](https://github.com/rokobuljan/kioboard/issues)\r\n\r\n## Licence\r\n\r\nMIT\r\n\r\n___\r\n\r\n\u0026copy; 2024-present — Roko C. Buljan\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frokobuljan%2Fkioboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frokobuljan%2Fkioboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frokobuljan%2Fkioboard/lists"}