{"id":38602370,"url":"https://github.com/alix-tz/virtual-kabbage","last_synced_at":"2026-01-17T08:34:49.977Z","repository":{"id":148415915,"uuid":"597238848","full_name":"alix-tz/virtual-kabbage","owner":"alix-tz","description":"A virtual-keyboard generator for eScriptorium 🥬","archived":false,"fork":false,"pushed_at":"2024-03-06T14:36:23.000Z","size":21,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-09T04:05:33.704Z","etag":null,"topics":["csv2json","escriptorium","utils"],"latest_commit_sha":null,"homepage":"","language":"Python","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/alix-tz.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-04T00:04:08.000Z","updated_at":"2024-05-14T05:52:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"f84b7afb-9874-4017-95e9-4a3c15fb8f5a","html_url":"https://github.com/alix-tz/virtual-kabbage","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alix-tz/virtual-kabbage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alix-tz%2Fvirtual-kabbage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alix-tz%2Fvirtual-kabbage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alix-tz%2Fvirtual-kabbage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alix-tz%2Fvirtual-kabbage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alix-tz","download_url":"https://codeload.github.com/alix-tz/virtual-kabbage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alix-tz%2Fvirtual-kabbage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["csv2json","escriptorium","utils"],"created_at":"2026-01-17T08:34:49.851Z","updated_at":"2026-01-17T08:34:49.964Z","avatar_url":"https://github.com/alix-tz.png","language":"Python","readme":"# Virtual Kabbage :leafy_green: - A virtual-keyboard generator for eScriptorium\n\n## Usage\n\nInstall dependencies in a virtual environment with pip (`pip install -r requirements.txt`) and run `cook.py` providing up to three arguments:\n\n- `-i` : (required) path to CSV file used to generate the virtual keyboard (sep must be `,`!).\n- `-auth` : (opt) allows you to add a value to the \"author\" field in the final JSON file.\n- `-k` : (opt) allows you to specify a value for the \"name\" field in the final JSON file.\n\n## Examples\n\n``` sh\n$ python cook.py -i test/test.csv\n\u003e\u003e\u003e ...\n    \"version\": \"0.1\",\n    \"name\": \"test\",\n    \"author\": \"Virtual Kabbage\",\n    \"characters\": [\n    ...\n```\n\n```sh\n$ python cook.py -i test/test.csv -auth \"Jane Doe \u003cjane.doe@example.com\u003e\"\n\n\u003e\u003e\u003e ...\n    \"version\": \"0.1\",\n    \"name\": \"test\",\n    \"author\": \"Virtual Kabbage \u0026 Jane Doe \u003cjane.doe@example.com\u003e\",\n    \"characters\": [\n    ...\n```\n\n```sh\n$ python cook.py -i test/test.csv -auth \"Jane Doe \u003cjane.doe@example.com\u003e\" -k \"my nice keyboard\"\n\n\u003e\u003e\u003e ...\n    \"version\": \"0.1\",\n    \"name\": \"my nice keyboard\",\n    \"author\": \"Virtual Kabbage \u0026 Jane Doe \u003cjane.doe@example.com\u003e\",\n    \"characters\": [\n    ...\n```\n\n\n\n\n\n## Expected mapping\n\nInput: `my_kbd.csv`\n\n``` csv\na,b,c\nd,,\n```\n\nOutput: `my_kbd.json`\n\n``` json\n{\n    \"version\": \"0.1\",\n    \"name\": \"my_kbd\",\n    \"author\": \"Virtual Kabbage\",\n    \"characters\": [\n        {\n            \"row\": 0,\n            \"column\": 0,\n            \"character\": \"a\",\n            \"keyboard_code\": null\n        },\n        {\n            \"row\": 0,\n            \"column\": 1,\n            \"character\": \"b\",\n            \"keyboard_code\": null\n        },\n        {\n            \"row\": 0,\n            \"column\": 3,\n            \"character\": \"c\",\n            \"keyboard_code\": null\n        },\n        {\n            \"row\": 1,\n            \"column\": 0,\n            \"character\": \"d\",\n            \"keyboard_code\": null\n        }\n    ]\n}\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falix-tz%2Fvirtual-kabbage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falix-tz%2Fvirtual-kabbage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falix-tz%2Fvirtual-kabbage/lists"}