一直想做个音游手台来着,所以正巧最近树莓派学的不错,便尝试实现这一功能,具体手台制作出来后会写一个新的文章,现在就是简单来实现一下树莓派4B模拟键盘输入。
准备材料:
- 树莓派4B或者树莓派zero w一个
- 树莓派4B:Usb-C to Usb-A线
- 树莓派Zero W:Micro-USB to Usb-A线
- 16g sd卡一个
- 树莓派OS
- 条件允许上个T型拓展+面包板也行,方便一点.jpg
系统准备:
树莓派常规下系统然后烧录至sd卡即可
系统下载:Operating system images – Raspberry Pi
直接下
GPIO以及各种库都是全的很舒服。
连接树莓派
直接用线连电脑,A端连pc,c端连树莓派
安装Key Mime Pi
这玩意牛逼,免去自己去写驱动了,原本我还写驱动写的挺蛋疼的,这样直接利用直接可以安装驱动
安装方式:
git clone https://github.com/mtlynch/key-mime-pi.git
cd key-mime-pi
sudo ./enable-usb-hid
sudo reboot
重启后可以发现
右下角提示新设备,键盘新增HID键盘,这样就距离成功很接近了
最后进行启动web页面
cd key-mime-pi
python3 -m venv venv
. venv/bin/activate
pip install --requirement requirements.txt
PORT=8000 ./app/main.py
树莓派访问127.0.0.1:8000,即可进入key mime pi页面
实现按键自定义
首先还是接线,此处我进行了面包板的方式进行接线,按钮暂采用轻触开关按键模块,后续等机械键盘单个轴到了单独研究一下
按照相应接线即可,SIG接面包板G17口(此处对应GPIO0引脚
VCC接正极,GND接地
写代码就行了(按键定义请查看参考文章的键值定义表
#!/usr/bin/python
import RPi.GPIO as GPIO
import signal
import time
KEY_LIST = (
(11, "\x09"), #F
)
keycode_tmp = "\x00" * 2
def signal_handler(signal, frame):
f = open("/dev/hidg0", "w")
f.write("\x00" * 8)
f.close()
GPIO.cleanup()
exit()
signal.signal(signal.SIGINT, signal_handler)
GPIO.setmode(GPIO.BOARD)
for P in range(len(KEY_LIST)):
GPIO.setup(KEY_LIST[P][0], GPIO.IN, pull_up_down=GPIO.PUD_UP)
while 1:
ks = "\x00" * 2
for K in range(len(KEY_LIST)):
if GPIO.input(KEY_LIST[K][0]) is GPIO.LOW:
ks += KEY_LIST[K][1]
if keycode_tmp != ks:
keycode_tmp = ks
keycode = ks + "\x00" * (8 - len(ks))
f = open("/dev/hidg0", "w")
f.write(keycode[0:8])
f.close()
time.sleep(0.01)
保存任意py文件,直接运行就可以尝试了
最终结果:
视频:
参考文章:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
- 最新
- 最热
只看作者