定制一个Python开源键盘,一键放连招不在话下

这是一个内部运行 Python 的开源键盘,可根据个人需求定制键盘映射。

从此以后,“穷苦玩家”也能在 MOBA 游戏里一键放连招了,不知这样算不算硬件外挂?

file

近日,一位中国开发者在 GitHub 上开源了一个带有 USB 和蓝牙的手工「焊」接 Python 键盘的代码。

该项目使用了 AdaFruit 的人员开发的 CircuitPython(衍生自 MicroPython)的特定实现,该实现可以在容纳 256K 的代码空间和 16K 的 RAM 的虚拟机上运行。

这一 Python 键盘可以让用户轻松地使用 Python 编写控制板。

项目地址:https://github.com/makerdiary/python-keyboard

下面我们就来看下这个 Python 键盘的具体操作和实现细节。

操作步骤

在 GitHub 上,作者详细描述了制作这个 Python 键盘的操作步骤,总结起来包括:

1、手工「焊」接键盘

下面这些图展示了作者对这些键盘内部结构的改造。

file

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

file

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

file

2、编程 Pitaya Go

第二步是对上图中红色设备的编程。

作者在 Github 中编写了详细的指南,对 Pitaya Go 进行编程并烧写到 Flash CircuitPython 固件上。

3、下载 CircuitPython 库

接下来,下载两个 CircuitPython 库:adafruit-ble 和 adafruit-hid,并将它们放入名为 CIRCUITPY 的 USB 驱动器里的 lib 目录中,如下图所示。

file

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 用作导航。

file

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

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

file

另外还支持同时按住两个键(间隔小于 25 毫秒)激活替代功能模式,以及按住「;」键作为 Ctrl。

为什么要用 Python 写?

这个项目在 hackernews 和 twitter 上都引来了不少人围观。多数人认为这是一个非常有创意的想法,之前没见过这种操作。

file

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

file

既然用 Python 速度慢,那为什么不用 C 语言写呢?也没有多复杂啊。

作者表示,「项目中的硬件包含一个 QSPI 闪存,它是一个 USB 存储,用来保存 Python 源代码,你可以直接改 Python 代码。而且,使用 Python 为快速验证硬件产品的创意提供了一个新的方式。」

file

除此之外,也有人帮作者补充了使用 Python 的好处。

ta 指出,这个项目用到的 CircuitPython 实现使用一个非常不同的 VM 运行,虽然不能指望它接近 C 的性能,但相比 Cpython 要轻量化得多。整个开发过程也会简单得多。

file

文源网络,仅供学习之用,侵删。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,800+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!
https://shimo.im/docs/JWCghr8prjCVCxxK/ 《Python学习资料》

关注公众号【Python圈子】,优质文章每日送达。

file

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,这是一份生成多个Excel文档的代码: ``` import openpyxl def generate_excel(file_name_prefix, sheet_name, data, num_files): for i in range(num_files): file_name = f"{file_name_prefix}_{i+1}.xlsx" workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = sheet_name for row_data in data: sheet.append(row_data) workbook.save(filename=file_name) print(f"成功生成了{num_files}个Excel文件!") # 示例数据 data = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] # 调用函数生成3个Excel文件 generate_excel("test", "Sheet1", data, 3) ``` 这段代码使用了 `openpyxl` 库,它可以帮助你读写Excel文件。该代码定义了一个 `generate_excel` 函数,该函数接受文件名前缀,sheet名称,数据和文件数量等参数,并生成指定数量的Excel文件。 希望这能帮到你! ### 回答2: Python可以使用openpyxl库来操作Excel文档,我们可以利用这个库来写一个一生成多个Excel文档的代码。 首先,需要安装openpyxl库,可以使用以下命令来安装: ``` pip install openpyxl ``` 然后,我们可以按照以下步骤编写一生成多个Excel文档的代码: 1. 导入openpyxl库: ```python import openpyxl ``` 2. 定义一个函数来创建一个Excel文档: ```python def create_excel(filename): workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = "Sheet1" workbook.save(filename) ``` 3. 定义一个函数来批量生成Excel文档: ```python def generate_excel(num): for i in range(num): filename = "excel_" + str(i+1) + ".xlsx" create_excel(filename) ``` 4. 调用`generate_excel`函数来生成多个Excel文档: ```python generate_excel(5) ``` 上述代码将生成名为`excel_1.xlsx`、`excel_2.xlsx`、`excel_3.xlsx`、`excel_4.xlsx`和`excel_5.xlsx`的Excel文档,每个文档都包含一个名为"Sheet1"的工作表。 以上是使用Python写一个一生成多个Excel文档的代码,希望能帮到你! ### 回答3: 使用Python编写一个一生成多个Excel文档的代码非常简单。首先,我们需要安装python模块 openpyxl,它可以帮助我们操作Excel文件。 接下来,我们需要定义一个函数,该函数将接收2个参数:要生成的Excel文件的数量和每个文件的名称。代码如下: ```python from openpyxl import Workbook def generate_excel_files(num_files, file_name): for i in range(1, num_files+1): wb = Workbook() # 创建一个新的工作簿 sheet = wb.active # 获取活动工作表 # 向工作表中写入数据,这里仅作示例,可以根据需求修改 sheet['A1'] = '姓名' sheet['B1'] = '年龄' sheet['C1'] = '性别' # 将数据保存到指定文件名的Excel文档中 wb.save(file_name + str(i) + '.xlsx') # 调用函数生成10个Excel文件,文件名分别为file1.xlsx, file2.xlsx, ..., file10.xlsx generate_excel_files(10, 'file') ``` 上述代码将生成10个Excel文件,每个文件名分别为file1.xlsx, file2.xlsx, ..., file10.xlsx。每个文件中都包含一个默认的工作表,工作表中有3列数据:姓名、年龄和性别。 代码中使用的openpyxl模块提供了许多更高级的功能,例如插入数据、合并单元格等等。您可以根据自己的需求对生成的Excel文件进行进一步的操作和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值