0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个带有USB和蓝牙的手工「焊」接Python键盘的代码

strongerHuang 来源:机器之心 2020-09-07 17:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这是一个内部运行 Python 的开源键盘,可根据个人需求定制键盘映射。从此以后,「穷苦玩家」也能在 MOBA 游戏里一键放连招了,不知这样算不算硬件外挂?「氪金玩家」请出门右转购买宏编程键盘。

近日,一位中国开发者在 GitHub 上开源了一个带有 USB蓝牙的手工「焊」接 Python 键盘的代码。该项目使用了 AdaFruit 的人员开发的 CircuitPython(衍生自 MicroPython)的特定实现,该实现可以在容纳 256K 的代码空间和 16K 的 RAM 的虚拟机上运行。

这一 Python 键盘可以让用户轻松地使用 Python 编写控制板。 项目地址:https://github.com/makerdiary/python-keyboard 下面我们就来看下这个 Python 键盘的具体操作和实现细节。 操作步骤 在 GitHub 上,作者详细描述了制作这个 Python 键盘的操作步骤,总结起来包括: 1. 手工「焊」接键盘 下面这些图展示了作者对这些键盘内部结构的改造。

去掉键盘帽扣,作者用焊丝把关联按键连接起来,达到下图这样的效果。

最后,作者把一个能够运行 Python 的开源控制板连接到键盘上。最终图示如下。

2. 编程 Pitaya Go 第二步是对上图中红色设备的编程。作者在 Github 中编写了详细的指南,对 Pitaya Go 进行编程并烧写到 Flash CircuitPython 固件上。 3. 下载 CircuitPython 库 接下来,下载两个 CircuitPython 库:adafruit-ble 和 adafruit-hid,并将它们放入名为 CIRCUITPY 的 USB 驱动器里的 lib 目录中,如下图所示。

4. 复制代码 最后一步是将 Python 的代码复制到 code.py。重新加载 code.py 后,我们就可以获得一个带有 USB 以及蓝牙的键盘了。 完整代码作者也开源到 Github 项目中。 生产力升级 60%(61 键)的键盘缺少 F1~F12、方向键、PgUp、PgDn 等键位。该项目加入了 tmk_keyboard 项目中的键位映射功能,同时参考了 Toward a more useful keyboard 项目对于键位设置上的优化理念,使得小键盘更具生产力「折腾才有乐趣,就是不买全键盘」!

tmk_keyboard 项目地址:https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/doc/keymap.md

Toward a more useful keyboard 项目地址:https://github.com/jasonrudolph/keyboard

由于使用了 Python 编写键位映射,我们可以很方便地对键位进行个性化定制「以后谁还需要宏编程键盘,大雾」。该项目自带 Tap-key 功能,即按住一个键不放可激活替代功能模式,在 60% 键盘上扩展出更多键位。我们只需将 keyboard.py 与 keycodes.py 复制到 CIRCUITPY 目录下,之后修改 code.py 导入新键盘,即可将按键 D 用作导航。

当仅想要输出 D 时快速敲击即可,而按住 D 不放则激活导航功能,变化后的键位如下图所示。

此时 H、J、K、L 键分别被映射为上下左右方向键,而 U 与 N 则被映射为 PgUp 和 PgDn。

另外还支持同时按住两个键(间隔小于 25 毫秒)激活替代功能模式,以及按住「;」键作为 Ctrl。 为什么要用 Python 写? 这个项目在 hackernews 和 twitter 上都引来了不少人围观。多数人认为这是一个非常有创意的想法,之前没见过这种操作。

但鉴于作者在项目中用的语言是 Python,大家不免担心起速度问题。对此,作者回复称,「确实有点慢,现在扫描一次矩阵需要 4 毫秒,但优化之后速度会有提升。」

既然用 Python 速度慢,那为什么不用 C 语言写呢?也没有多复杂啊。作者表示,「项目中的硬件包含一个 QSPI 闪存,它是一个 USB 存储,用来保存 Python 源代码,你可以直接改 Python 代码。而且,使用 Python 为快速验证硬件产品的创意提供了一个新的方式。」

除此之外,也有人帮作者补充了使用 Python 的好处。ta 指出,这个项目用到的 CircuitPython 实现使用一个非常不同的 VM 运行,虽然不能指望它接近 C 的性能,但相比 Cpython 要轻量化得多。整个开发过程也会简单得多。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4344

    浏览量

    46441
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74373
  • python
    +关注

    关注

    58

    文章

    4885

    浏览量

    90301

原文标题:自己「焊」键盘:使用Python编写

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    低功耗BLE应用三模键盘模块方案

    在无线外设市场,键盘产品正加速向多模化、低功耗方向演进。针对厂商对低功耗BLE应用的迫切需求,基于CH592芯片的三模键盘模块方案提供了USB/BLE/2.4G体化解决思路。三模
    的头像 发表于 04-14 17:20 380次阅读
    低功耗BLE应用三模<b class='flag-5'>键盘</b>模块方案

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    使用代码编辑器Visual Studio Code(VS Code),因为它提供了用户友好的安装工作流程*。当然,如果需要,也可以使用其他Python编辑器。 对于使用VS Cod
    发表于 03-31 09:39

    如何在 VisionFive 上使用 Python 包?

    VisionFive Fedora 下的本地目录,请在源代码目录下执行以下命令: 提示:源代码可从以下位置下载:愿景五.gpio. sudo yum install python
    发表于 03-30 08:28

    如何让蓝牙 USB 加密狗正常工作?

    我想让蓝牙 (bluez) 运行。所以我需要 USB 蓝牙加密狗。 有人成功让蓝牙
    发表于 03-19 07:18

    文读懂 SMT 贴片与手工焊接的区别

    Technology)贴片技术是种自动化电子组装工艺,通过贴片机将表面贴装元件精确放置在 PCB 板上,再通过回流完成焊接。这种工艺具有高精度、高效率、高可靠性的特点,特别适合大批量生产。SMT 技术可以处理微小
    发表于 03-16 09:21

    BLE蓝牙水表蓝牙芯片方案

    代码与多平台APP工具,助力开发者快速完成产品落地。蓝牙芯片方案桥芯片搭载自研虚拟化串口技术,让蓝牙功能集成像操作串口样简单。部分型号无
    的头像 发表于 03-10 16:03 196次阅读

    探析手工贴片打样的优势

    手工贴片打样技术是种传统的电子制造技术,它是制造小批量电路板的理想解决方案,通过手工贴片的方式,可以快速有效地验证原型电路板设计的准确性,从而降低制造成本和减少设计中的错误。本文将会针对手工
    的头像 发表于 01-08 12:48 266次阅读
    探析<b class='flag-5'>手工</b>贴片打样的优势

    手工到自动:球剪切测试的技术演进与科学原理

    在现代微电子制造领域,引线键合的质量检测经历了从手工操作到自动测试的重要演进。早期,技术人员仅使用镊子等简单工具进行球剪切测试,这种手工方法虽然直观,但存在操作致性差、测试精度低等
    发表于 12-31 09:12

    DA14535 USB开发套件硬件解析:开启低功耗蓝牙开发新征程

    USB开发套件(型号610 - 12 - A),为开发者提供了低成本且功能丰富的开发平台,助力蓝牙相关项目的快速落地。今天,我们就来深入剖析这个开发套件的硬件设计与特性。 文件下
    的头像 发表于 12-29 11:00 1103次阅读

    Termux中调试圣诞树Python代码

    在Termux中调试Python代码(以圣诞树立例)非常简单,核心分为环境准备、代码编写、运行调试三步骤,下面步步教你操作:
    发表于 12-09 09:02

    Python调用API教程

    不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 、用Requests库发送HTTP请求 使用Python调用API的第
    的头像 发表于 11-03 09:15 1176次阅读

    通孔焊接还用手工?选择性波峰才是降本增效的智慧之选!

    、为什么通孔焊接需要选择性波峰? 传统波峰(整板浸锡)的痛点: 浪费锡料:仅 10% 通孔需要焊接,其余 90% 盘被冗余覆盖 热损伤风险:电容、晶振等热敏元件耐温<260℃,
    的头像 发表于 08-27 17:03 1001次阅读

    【HZ-T536开发板免费体验】4、使用蓝牙模块读取小米温湿度计的数据

    虽然设备上没有蓝牙模块,我们依旧可以通过USB的星闪模组实现蓝牙ble相关的功能,例如读取小米温湿度计的数据。 首先需要加载对应的模块,这些模块在前面
    发表于 08-25 22:16

    【正点原子STM32MP257开发板试用】2.USB摄像头使用

    ) (usb-482f0000.usb-1.3): /dev/video7 /dev/video8 /dev/media2 最后(UVC Camera)就是设备,要记下是video多少,后期opencv-
    发表于 06-16 19:16

    带有USB C的便携式设备可以通过USB C转USB A电缆连接到计算机的USB A吗?

    我有问题:我们有带有 USB B 和 FTDI FT232RNL 和(8 位 MCU)的便携式设备,由适配器供电。 多亏了欧盟,我们
    发表于 05-27 06:29