之前想要实现在几公尺外遥控 mac book,於是就在虾皮上找到了这个蓝牙摇杆,虽然怀疑产品能不能正常使用,不过看在价格99元的份上,还是买来尝试看看
根据google结果,尝试使用过 tkinter, pygame, pynput,最终只有 pynput 有得到一些反馈
from pynput.keyboard import Listener
def on_press(key):
print(key)
if __name__ == '__main__':
while True:
with Listener(on_press = on_press) as listener:
listener.join()
print 出的结果
# 操控杆向上,print出的结果
Key.media_previous
Key.media_play_pause
# 操控杆向下,print出的结果
Key.media_next
Key.media_play_pause
# 操控杆向左、向右、前方2个按键、下方四个按键,print出的结果
Key.media_play_pause
由於 pynput 只能读取 2种蓝牙摇杆的讯号,所以如果假设要执行 5种任务的话,就需要至少移动 3次摇杆(2^3=8),以下是实现的方式:
from pynput.keyboard import Key, Listener, Controller
import time
keyboard = Controller()
last_time = time.time()
lst = []
def on_press(key):
global lst, last_time
now = time.time()
if now - last_time > 1: # 设定 2个按键间隔超过 1秒 就将之前的lst清空,避免输入错误
lst = []
last_time = now # 更新最後按键时间
if key == Key.media_previous: # 摇杆向上
lst.append(0)
elif key == Key.media_next: # 摇杆向下
lst.append(1)
if lst == [0,0,0]:
keyboard.press(Key.right) # 模拟键盘按向右键
lst = []
elif lst == [0,0,1]:
keyboard.press(Key.left) # 模拟键盘按向左键
lst = []
elif lst == [0,1,0]:
keyboard.press(Key.up) # 模拟键盘按向上键
lst = []
elif lst == [0,1,1]:
keyboard.press(Key.down) # 模拟键盘按向下键
lst = []
elif lst == [1,0,0]:
keyboard.press(Key.space) # 模拟键盘按空白键
lst = []
if __name__ == '__main__':
while True:
with Listener(on_press = on_press) as listener:
listener.join()
虽然有点麻烦,不过习惯了之後倒也还好。事情的转机是有一次跟好友聊天,对方说应该可以用读取key code
的方式来读取蓝牙摇杆的讯号,当天晚上也研究网路上一些key code的程序码,不过最终没有什麽结果。但同时我也开始想研究 pynput 的程序码,结果意外出现转机……
续看,请参考:第二篇
>>: MacOS读取蓝牙摇杆讯号,利用python修改pynput程序码实现 - 2.研究 pynput
之後玩完漏洞平台之後,就可以练在玩线上靶机罗~ 这次要推荐的是 Hack the Box:https...
大家好我是乌木白,今天要和大家介绍的是 AJAX,AJAX 是我在学习 JavaScript 这门...
经历了前两天的基础介绍,今天我们终於要到创建物件的环节了,而这个标题我想已经说明了一切,没错,这篇是...
以我的电脑来做例子啊: 13寸 2020 处理器 2 GHz 四核心Intel Core i5 记忆...
缘由: 这应该也算是我没学好的项目之一,tableview也算是开发实务里很常见的元件,举凡要连续套...