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

    文章

    3368

    浏览量

    42564
  • 代码
    +关注

    关注

    30

    文章

    4798

    浏览量

    68726
  • python
    +关注

    关注

    56

    文章

    4798

    浏览量

    84799

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

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

收藏 人收藏

    评论

    相关推荐

    使用Python进行串口通信的案例

    当然!以下是使用Python进行串口通信的简单示例。这个示例展示了如何配置串口、发送数据以及接收数据。我们将使用 pyserial 库,这是
    的头像 发表于 11-22 09:11 259次阅读

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 11-08 14:36

    使用Python进行图像处理

    下面是关于使用Python在几行代码中分析城市轮廓线的快速教程。
    的头像 发表于 11-07 10:14 249次阅读
    使用<b class='flag-5'>Python</b>进行图像处理

    如何使用TARGET3001!创建异形盘的封装

    大家在使用TARGET软件过程中,可能会对软件的些功能不尽熟知,比如在有些情况下,某些特定的元器件的封装带有异形盘,如果自带元器件库和对接的网络库都没有该元器件,这时候可能会需要我们手工
    的头像 发表于 10-16 17:05 198次阅读
    如何使用TARGET3001!创建异形<b class='flag-5'>焊</b>盘的封装

    使用和处理带有ENIG盘饰面的半导体封装

    电子发烧友网站提供《使用和处理带有ENIG盘饰面的半导体封装.pdf》资料免费下载
    发表于 10-16 09:46 0次下载
    使用和处理<b class='flag-5'>带有</b>ENIG<b class='flag-5'>焊</b>盘饰面的半导体封装

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 09-27 06:44

    【每天学点AI】例子带你了解Python装饰器到底在干嘛!

    进行“加料”呢?Python装饰器提供了更为优雅的方式来增强现有函数的行为,并且不需要修改现有的函数代码及调用方式。接下来通过
    的头像 发表于 09-20 16:54 566次阅读
    【每天学点AI】<b class='flag-5'>一</b><b class='flag-5'>个</b>例子带你了解<b class='flag-5'>Python</b>装饰器到底在干嘛!

    蓝牙遥控代码及使用

    蓝牙遥控代码及使用
    的头像 发表于 05-15 10:15 893次阅读

    USB鼠标键盘可用,U盘不能正常使用

    现自制飞凌A40i核心板底板,通过USB2514芯片将其中USB扩展4路,就是USB hub的形式,这4路USB
    发表于 05-13 20:02

    用STM32 的USB HOST键盘,要怎样才能读取键盘的按键字符并显示在屏幕上?

    用STM32 的USB HOST键盘,用官方例程可以完成键盘的枚举,接下来要怎样才能读取键盘的按键字符并显示在屏幕上? 小弟刚接触
    发表于 04-29 08:44

    如何用STM32的HIDUSB键盘

    有高手用STM32的HID接过USB键盘么,或者有什么例程、开发板或书籍有这方面的参考?
    发表于 04-28 08:39

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析

    OpenHarmony 4.0蓝牙代码结构简析前言 OpenHarmony 4.0上蓝牙仓和目录结构进行次较大整改,本文基于4.0以上版本对蓝牙
    的头像 发表于 02-26 16:08 1608次阅读
    【鸿蒙】OpenHarmony 4.0<b class='flag-5'>蓝牙</b><b class='flag-5'>代码</b>结构简析

    【外设移植】USB键盘+M61开发板

    这篇开始使用 M62 板子来实现 USB 的设备开发,首先从最简单的 USB HID 键盘开始。固件的 SDK 使用的是 CherryUSB 开源 USB 固件。CherryUSB 是
    的头像 发表于 02-26 11:31 1956次阅读
    【外设移植】<b class='flag-5'>USB</b><b class='flag-5'>键盘</b>+M61开发板

    接地和零是概念吗?接地和零的基本目的 工作接地与保护零的区别

    接地和零是概念吗?接地和零的基本目的 工作接地与保护零的区别 保护接地与保护零的区别
    的头像 发表于 02-04 15:45 1127次阅读

    Python智能家居系统代码介绍

    Python智能家居系统是种基于Python编程语言开发的智能家居控制系统,在现代家庭中得到了越来越广泛的应用。本文将详细介绍Python智能家居系统的
    的头像 发表于 01-25 09:46 1392次阅读