{"id":13594076,"url":"https://github.com/stjeong/rasp_vusb","last_synced_at":"2026-01-30T23:57:21.327Z","repository":{"id":44326700,"uuid":"112091291","full_name":"stjeong/rasp_vusb","owner":"stjeong","description":"This repo explains how to turn your Raspberry Pi Zero into USB Keyboard and Mouse. Also provides sample code and binaries to control them.","archived":false,"fork":false,"pushed_at":"2022-04-27T15:32:26.000Z","size":1326,"stargazers_count":108,"open_issues_count":0,"forks_count":28,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-09T05:33:59.903Z","etag":null,"topics":["keyboard","mouse","otg","raspberry-pi","raspberry-pi-zero-w","usb-hid","virtual-devices"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stjeong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-26T14:53:06.000Z","updated_at":"2024-12-22T22:15:57.000Z","dependencies_parsed_at":"2022-09-02T17:08:50.200Z","dependency_job_id":null,"html_url":"https://github.com/stjeong/rasp_vusb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stjeong/rasp_vusb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stjeong%2Frasp_vusb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stjeong%2Frasp_vusb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stjeong%2Frasp_vusb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stjeong%2Frasp_vusb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stjeong","download_url":"https://codeload.github.com/stjeong/rasp_vusb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stjeong%2Frasp_vusb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28923736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"ssl_error","status_checked_at":"2026-01-30T22:32:31.927Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["keyboard","mouse","otg","raspberry-pi","raspberry-pi-zero-w","usb-hid","virtual-devices"],"created_at":"2024-08-01T16:01:28.418Z","updated_at":"2026-01-30T23:57:21.293Z","avatar_url":"https://github.com/stjeong.png","language":"C#","funding_links":[],"categories":["C#","C\\#"],"sub_categories":[],"readme":"What is it?\n================================\nThis repo explains how to turn your Raspberry Pi Zero into USB Keyboard and Mouse. Also provides sample code and binaries to control them.\n\nSteps - Installation\n================================\n\n1. Flash your SD card with NOOBS (download: https://www.raspberrypi.org/downloads/noobs/) or use your installed Raspbian.\n\n2. Make /share directory on your raspberry pi.\n    ```\n    $ sudo mkdir -m 1777 /share\n    ```\n\n3. Run /script/deploy_with_pscp.bat on your PC to deploy files to Raspberry PI Zero. (download pscp.exe from https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)\n    ```\n    c:\\...\\script\u003e deploy_with_pscp.bat [your_raspberrypi_ip]\n\n    For example, if the address of your raspberry pi is 192.168.0.100\n\n    c:\\...\\script\u003e deploy_with_pscp.bat 192.168.0.100\n    ```\n\n4. On your raspberry pi, make /share/install_usb.sh and /share/rasp_vusb_server.out runnable.\n    ```\n    $ sudo chmod +x /share/install_usb.sh\n    $ sudo chmod +x /share/rasp_vusb_server.out\n    ```\n\n5. Run install_usb.sh\n    ```\n    $ sudo /share/install_usb.sh\n    ```\n\n6. That's all, all of the changes will be applied after reboot.\n    ```\n    $ sudo reboot\n    ```\n\n7. Finally, connect your Raspberry PI zero to your Computer. Go to your \"Control panel\" / \"Device Manager\", you can find 3 new devices.\n    ```\n    Human Interface Devices\n        * USB Input Device\n\n    Keyboards\n        * HID Keyboard Device\n\n    Mice and other pointing devices\n        * HID-compliant mouse  (Absolute position + buttons)\n        * HID-compliant mouse  (Relative position + wheel)\n    ```\n\n    You can get the report descriptors at /report_descriptors.txt\n\nHow to Test\n================================\nNow, you can run \"InputController.exe (from /bin/v1_0_0_2/InputController.zip)\" on your Windows PC. As soon as run, it will find \"usb_server\" program which is run in Raspberry PI and connect it automatically.\n\nAt first, InputController parse input as mouse data. So you can move to specific position as whatever you want but need to calculate for your circumstances. If you move to x = 50, y = 100 and your monitor's resolution is 1920 * 1080, your input has to be like this,\n\n```\nx = 50 * 32767 / 1920 = 853\ny = 100 * 32767 / 1080 = 3033\n```\n\nthen type it,\n\n```\n853 3033\n```\n\nyou can find your mouse position is moved to (50, 100) on windows.\n\nAlso, you can move your mouse relatively. For this, type '+' or '-' prefix to number.\n\n```\n+50 -10\n```\n\nAnd control wheel on the mouse with 'w' prefix to offset value.\n\n```\nw10\n```\n\nIt acts as scrolling down, or type \"w-50\" to scroll up with offset 50.\n\nFor testing input as keyboard, change the mode by typing \"--mode\" command,\n\n```\n--mode\n```\n(If you type \"--mode\" again, it will change to mouse input mode)\n\nNow you can type any text and just hit ENTER,\n\n```\ntest is good\n```\n\nthen, your PC will accept \"test is good\" key inputs. Of course, you can send any special inputs of these,\n\n```\nLeft Window key: \u003cwindow\u003e\nIME toggle key: \u003cime\u003e\nEnter Key: \u003creturn\u003e\nControl Down: \u003cctrl_down\u003e\nControl Up: \u003cctrl_up\u003e\nShift Down: \u003cshift_down\u003e\nShift Up: \u003cshift_up\u003e\nAlt Down: \u003calt_down\u003e\nAlt Up: \u003calt_up\u003e\nCapsLock: \u003ccapslock\u003e\nESC: \u003cesc\u003e\nBackspace: \u003cbackspace\u003e\nTab: \u003ctab\u003e\nInsert: \u003cinsert\u003e\nHome: \u003chome\u003e\nPage Up: \u003cpageup\u003e\nPage Down: \u003cpagedown\u003e\nDelete: \u003cdel\u003e\nEnd: \u003cend\u003e\nLeft Arrow key: \u003cleft\u003e\nRight Arrow key: \u003cright\u003e\nUp Arrow key: \u003cup\u003e\nDown Arrow Key: \u003cdown\u003e\nF1 ~ F12: \u003cf1\u003e ~ \u003cf12\u003e\n```\n\nIf you type like this,\n\n```\ntest is good\u003cbackspace\u003ed \u003cshift_down\u003ewow\u003cshift_up\u003e\n```\n\nyou will see this text input,\n\n```\ntest is good WOW\n```\n\n\nSteps - Uninstallation\n================================\n1. Just run uninstall_usb.sh.\n\n```\n$ sudo /share/uninstall_usb.sh\n``` \n\n2. Reboot.\n```\n$ sudo reboot\n``` \n\n\nChange Log\n================================\n1.0.0.2 - Dec 20, 2017\n\n* apply ssl socket\n\n\n1.0.0.1 - Oct 13, 2017\n\n* Add \"--shutdown\" command to shutdown raspberry pi.\n\n\n1.0.0.0 - Oct 12, 2017\n\n* Initial checked-in\n\n\nHow to build\n================================\nIf you want to modify InputController.exe and rasp_vusb_server.out, just load rasp_usb.sln in Visual Studio 2017, and build it.\n\nIt needs connection info to Raspberry Pi for compiling C++ source codes to ARM machine codes.\n\nRequests or Contributing to Repository\n================================\nAny help and advices for this repo are welcome.\n\nLicense\n================================\nApache License V2.0\n(Refer to LICENSE.txt)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstjeong%2Frasp_vusb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstjeong%2Frasp_vusb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstjeong%2Frasp_vusb/lists"}