{"id":24963813,"url":"https://github.com/so1der/mesh_usb_keyboard","last_synced_at":"2026-04-17T04:32:41.723Z","repository":{"id":266844914,"uuid":"899521978","full_name":"so1der/mesh_usb_keyboard","owner":"so1der","description":"Using old USB keyboard to communicate with Meshtastic devices","archived":false,"fork":false,"pushed_at":"2024-12-06T13:56:28.000Z","size":674,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T06:05:05.965Z","etag":null,"topics":["arduino","keyboard","meshtastic"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/so1der.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":"2024-12-06T12:47:23.000Z","updated_at":"2025-04-12T23:38:44.000Z","dependencies_parsed_at":"2024-12-06T17:55:40.845Z","dependency_job_id":null,"html_url":"https://github.com/so1der/mesh_usb_keyboard","commit_stats":null,"previous_names":["so1der/mesh_usb_keyboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/so1der/mesh_usb_keyboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/so1der%2Fmesh_usb_keyboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/so1der%2Fmesh_usb_keyboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/so1der%2Fmesh_usb_keyboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/so1der%2Fmesh_usb_keyboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/so1der","download_url":"https://codeload.github.com/so1der/mesh_usb_keyboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/so1der%2Fmesh_usb_keyboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31915159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":["arduino","keyboard","meshtastic"],"created_at":"2025-02-03T09:58:48.362Z","updated_at":"2026-04-17T04:32:41.718Z","avatar_url":"https://github.com/so1der.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Using old USB keyboard to communicate with Meshtastic devices \n\nWith this project You can use simple membrane keyboard to input and send messages via Your Meshtastic Node! \n\nOld membrane keyboards can not only work via USB protocol, but also via PS/2 protocol. PS/2 protocol is very simple, thats why almost any microcontroller can work with them.\n\nFor this project You need:\n- Arduino Nano\n- Logic Level Shifter\n- x2 10 kOhm resistors\n- Old USB keyboard\n\nLogic level shifter needed because Arduino and keyboard use 5V, while ESP32 inside Meshtastic uses 3.3V. Resistors are needed to pull USB Data lines to +5V.\n\nConnect everything according to schematic. You can use the same pins that Node OLED screen uses, since its I2C, serial bus. Now - use PlatformIO to flash arduino (open folder `USB_Keyboard` as a PlatformIO project)\n\nAfter that - open Node settings, go to `Canned Message`, enable them, and type `cardkb`  into `Allow input source` field. \n\nThis particular method is relaying on existing keyboard implemented in Meshtastic - cardkb, so we dont need to modify Meshtastic Source Code.\n\n**While creating this project, I used next sources:**\n\n- [CardKB Source Code from M5Stack](https://github.com/m5stack/M5-ProductExampleCodes/blob/master/Unit/CARDKB/firmware_328p/CardKeyBoard/CardKeyBoard.ino)\n- [Article about using USB keyboard with Arduino, from Doctor Volt](https://www.hackster.io/michalin70/connect-a-usb-keyboard-with-an-arduino-50c077)\n\nCons of this method:\n- Cant use some keys (Shift, Caps Lock, etc)\n- Slow typing speed (Maybe related to the Meshtastic Source Code)\n\n![alt tag](https://raw.githubusercontent.com/so1der/mesh_usb_keyboard/refs/heads/main/images/settings.png \"Settings\")\n\n![alt tag](https://raw.githubusercontent.com/so1der/mesh_usb_keyboard/refs/heads/main/images/schematic.png \"Schematic\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fso1der%2Fmesh_usb_keyboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fso1der%2Fmesh_usb_keyboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fso1der%2Fmesh_usb_keyboard/lists"}