Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Gadgetoid/pi400kb
Raw HID keyboard forwarder to turn the Pi 400 into a USB keyboard
https://github.com/Gadgetoid/pi400kb
hid keyboard otg pi400 usb
Last synced: 8 days ago
JSON representation
Raw HID keyboard forwarder to turn the Pi 400 into a USB keyboard
- Host: GitHub
- URL: https://github.com/Gadgetoid/pi400kb
- Owner: Gadgetoid
- License: mit
- Created: 2021-10-13T09:03:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-06T10:40:03.000Z (over 1 year ago)
- Last Synced: 2025-01-07T05:14:00.003Z (13 days ago)
- Topics: hid, keyboard, otg, pi400, usb
- Language: C
- Homepage:
- Size: 684 KB
- Stars: 287
- Watchers: 13
- Forks: 38
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Raspberry Pi 400 as a USB HID Keyboard & Mouse
Hook your Pi 400 up to your PC somehow, using a USB Type-C cable into the *power* port.
Anker make good ones- I used a 3m white one for my tests.Our USB-C to USB-A is great if you're using a USB-A port (but make sure it's a *high power* one): https://shop.pimoroni.com/products/usb-c-to-usb-a-cable-1m-black
A Raspberry Pi Mouse is also supported if plugged in, eg: https://shop.pimoroni.com/products/raspberry-pi-mouse?variant=29390982119507
This project started out life as a gist - https://gist.github.com/Gadgetoid/5a8ceb714de8e630059d30612503653f
Thank you to all the people who dropped by with kind words, suggestions and improvements.
- [Quickstart (Ish)](#quickstart-ish)
- [Mouse Support](#mouse-support)
- [Building & Contributing](#building--contributing)
- [Building](#building)
- [Custom Mouse/Keyboard Devices](#custom-mousekeyboard-devices)## Quickstart (Ish)
Add `dtoverlay=dwc2` to `/boot/config.txt`
Reboot!
`sudo modprobe libcomposite`
Grab the latest pi400kb for your system from releases: https://github.com/Gadgetoid/pi400kb/releases
`chmod +x pi400kb`
`sudo ./pi400kb`
:sparkles: YOUR PI 400 IS NOW A FREAKING KEYBOARD & MOUSE FOR YOUR PC WHAAAAT!? :sparkles:
Your keyboard input will be detached from your Pi while it's forwarded to your host computer.
Press `Ctrl + Raspberry` to grab/release your keyboard and mouse, switching between local use and USB.
Press `Ctrl + Shift + Raspberry` (on the grabbed keyboard) to exit.
### Mouse Support
Pi 400 KB supports the official Raspberry Pi Mouse VID:PID = 093a:2510 by default, but other mice should work.
### Autostart
```
sudo cp pi400kb /usr/sbin/pi400kb
sudo systemctl edit --force --full pi400kb.service
```Add the contents of the `pi400kb.service` file.
Start the service and check its status:
```
sudo systemctl start pi400kb.service
sudo systemctl status pi400kb.service
```Enable start on boot if it's okay:
```
sudo systemctl enable pi400kb.service
```## Building & Contributing
### Building
```
sudo apt install libconfig-dev git cmake
git clone https://github.com/Gadgetoid/pi400kb
cd pi400kb
git submodule update --init
mkdir build
cd build
cmake ..
make
```### Custom Mouse/Keyboard Devices
CMake accepts the following build arguments to customise the VID/PID and device path for the mouse/keyboard:
* `KEYBOARD_VID` - Keyboard Vendor ID, default: 0x04d9
* `KEYBOARD_PID` - Keyboard Product ID, default: 0x0007
* `KEYBOARD_DEV` - Keyboard device path, default: /dev/input/by-id/usb-_Raspberry_Pi_Internal_Keyboard-event-kbd
* `MOUSE_VID` - Mouse Vendor ID, default: 0x093a
* `MOUSE_PID` - Mouse Product ID, default: 0x2510
* `MOUSE_DEV` - Mouse device path, default: /dev/input/by-id/usb-PixArt_USB_Optical_Mouse-event-mouseSupply these arguments when configuring with CMake, eg:
```
cmake .. -DMOUSE_DEV="/dev/input/by-id/usb-EndGameGear_XM1_Gaming_Mouse_0000000000000000-event-mouse" -DMOUSE_VID=0x3367 -DMOUSE_PID=0x1903
```