Amiga 1200 键盘 USB 转换固件:QMK A1200 Converter 的硬件适配、矩阵映射与刷写指南
2026/9/20 2:42:23 网站建设 项目流程
  • 嵌入式
  • 固件
  • 驱动开发
  • 硬件开发

【免费下载链接】qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families

项目地址:https://gitcode.com/GitHub_Trending/qm/qmk_firmware
点击查看免费下载

导读

本文围绕 QMK 固件仓库中 keyboards/converter/a1200 的转换器项目展开,讲解如何将经典 Amiga 1200 原装薄膜键盘(并兼容 Amiga 500/600)改装为 USB 输入设备,可同时用于台式 PC 与装入 Amiga 机箱内的 R-Pi/FPGA 主控方案。读完本文,你将掌握:三种目标单片机(Teensy 2.0++、MiSS-1200、MiSTress-1200)的引脚接线、矩阵方向与指示灯配置、默认键位与 Help 键临时层的设计、编译与刷写(含 HELP+R 快捷键重刷)的完整操作,以及 键盘布局定义 与 默认键位 的源码级对应关系。

项目背景与工作原理

A1200 Converter 是 QMK 键盘转换器(converter)家族的一员,其技术血缘来自 Model-M 101 薄膜适配器(文档中记为 converter/modelm101):该项目将其适配逻辑整体移植到 Amiga 1200 键盘矩阵上。转换器的核心价值在于把旧键盘的矩阵扫描转换为标准 USB HID 键盘协议,从而让 30 年前的键盘在现代操作系统上即插即用。

从 QMK 的 docs/feature_converters.md 可以看到,converter 目录下汇集了 adb_usb、sun_usb、xt_usb、ibm_terminal、usb_usb 等大量历史键盘转接方案,A1200 是其中面向 Amiga 平台的一员。其基本工作方式是:固件按行列扫描薄膜键盘的按键矩阵,将行/列坐标映射为键码,再经 USB 上报给主机。

支持的三款硬件方案

原文档明确列出 A1200 Converter 适配三种微控制器,仓库中对应三个独立的目标目录,每个目录以 keyboard.json 声明各自的处理器、引脚与启动方式:

目标单片机硬件载体仓库目录
teensy2ppAT90USB1286PJRC Teensy 2.0++ 板teensy2pp/keyboard.json
miss1200ATmega32u48bits4ever MiSS-1200 FPGA 板miss1200/keyboard.json
mistress1200ATmega16u4MiSTress-1200 改装套件mistress1200/keyboard.json

硬件连接方式因载体而异:

  • Teensy 2.0++需要一块小型 PCB 适配板将键盘薄膜排线转接到 Teensy 引脚(作者提供了简单的示例适配板设计,见文档所述 A1200-Keyboard-Adapter 项目)。
  • MiSS-1200 与 MiSTress-1200板卡上直接集成了 Amiga 1200 薄膜键盘专用连接器,无需额外转接板。

三者的 USB 描述符均为0xFEED:0x0000(teensy2pp)或0xFFFF:0x0000(两款 FPGA 板),设备名分别为 "Amiga-1200"、"MiSS-1200"、"MiSTress1200"。

矩阵引脚分配:两套接线方案

薄膜键盘的矩阵固定为16 列 × 8 行,但两套板卡的 MCU 引脚资源不同,接线因此分为两套方案。原文档给出的默认接线如下。

Teensy 2.0++(AT90USB1286)

Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Pins: D2 D3 D4 D5 D6 D7 E0 E1 C0 C1 C2 C3 C4 C5 C6 C7 -------------------------------------------------------- Rows: 1 2 3 4 5 6 7 8 Pins: F0 F1 F2 F3 F4 F5 F6 F7 -------------------------------------------------------- Status LEDs: CapsLock +5V Pins: B6 5V

与 teensy2pp/keyboard.json 中matrix_pins声明完全一致:列引脚依次为D2 D3 D4 D5 D6 D7 E0 E1 C0 C1 C2 C3 C4 C5 C6 C7,行引脚为F0~F7

MiSS-1200(ATmega32u4)与 MiSTress-1200(ATmega16u4)

Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Pins: D0 D1 C7 D6 B7 B6 B5 B4 E6 D7 C6 D4 B2 D5 D3 D2 -------------------------------------------------------- Rows: 1 2 3 4 5 6 7 8 Pins: F7 F6 F5 F4 F1 F0 B1 B3 -------------------------------------------------------- Status LEDs: CapsLock +5V Pins: B0 5V

该方案对应 miss1200/keyboard.json 与 mistress1200/keyboard.json 中相同的matrix_pins配置。注意两款板虽然 MCU 型号不同(32u4 与 16u4),但矩阵与 LED 引脚布局完全一致,便于共用 PCB 设计。

二极管方向与指示灯极性

三个目标的keyboard.json均声明diode_direction: "ROW2COL",即二极管由行指向列,这与键盘薄膜走线方向相关,接线时必须严格遵循,否则矩阵扫描会失效。

指示灯差异值得留意:

  • teensy2ppcaps_lock: "B6",未声明on_state,采用默认的高电平点亮逻辑;
  • miss1200 / mistress1200caps_lock: "B0",且显式声明on_state: 0,即B0 低电平点亮,说明两款 FPGA 板的 LED 电路为灌电流接法,与 Teensy 方案相反。

布局定义与矩阵坐标

info.json 定义了名为LAYOUT的物理布局,它把 Amiga 键盘的每个物理键位映射为[row, col]矩阵坐标,并给出键帽在视觉上的x/y位置与宽度w、高度h。从坐标分布可以还原出 Amiga 键盘的特征结构:

  • 上排 F1~F10 共 10 个功能键(矩阵第 6 行),右侧为独立的数字键盘区;
  • 主键区为标准的 60%+ 配列,包含KC_GRV、字母区、方向键与右侧数字键盘;
  • 底部一行中,{"matrix": [5, 15], ..., "w": 2.75}是 2.75U 的空格键;
  • {"matrix": [0, 13], "h": 2}{"matrix": [3, 9], "h": 2}表示竖向 2U 高度的按键(回车/小键盘 + 键等)。

布局的坐标系布局与 QMK 可视化工具兼容,可用于在 QMK Configurator 中预览键位。

默认键位与 Help 键临时层

Amiga 键盘缺少 F11、F12 等标准 PC 键,因此 keymaps/default/keymap.c 实现了一个第二层(Layer 1),由键盘右上角的Help 键MO(1)(临时层,按住触发)方式切换,原文档明确标注这是"work in progress"(仍在演进中)。

主层(Layer 0)

主层把 Amiga 键位映射为 PC 布局:

  • 功能键区:KC_ESC+KC_F1~KC_F10
  • 主键区:KC_GRVKC_1~KC_0KC_MINSKC_EQLKC_BSLSKC_BSPC,以及字母、标点与KC_ENT
  • 修饰键:KC_LCTLKC_LSFTKC_LALTKC_LGUI与右侧KC_RGUIKC_RALTKC_RSFT
  • 方向键与编辑键:KC_UPKC_LEFTKC_DOWNKC_RGHTKC_DEL
  • 数字键盘区:KC_P7~KC_P9KC_P4~KC_P6KC_P1~KC_P3KC_P0KC_PDOTKC_PMNSKC_PPLSKC_PENTKC_PSLSKC_PAST
  • Help 键位置(主层中KC_DEL之后的MO(1))即触发第二层的入口。

第二层(Layer 1)

按住 Help 键进入的临时层补齐了缺失的按键:

  • KC_F11KC_F12(对应主层 F9/F10 位置上方);
  • KC_NUMKC_SCRLKC_PSCR(数字键盘区右侧);
  • QK_BOOT:放置在 Q 键位置,功能是复位进入 bootloader,配合"HELP+R"刷写流程使用;
  • 其余位置均为_______(透传)或KC_NO,保证按键在两层间行为清晰可控。

这种"临时层补键"的手法是 QMK 层机制的典型应用,参考 docs/feature_layers.md 可了解MO()与透传_______的语义。

特性配置差异

三个目标在 keyboard.json 等文件的features段中声明了功能差异,这直接影响固件体积与可用行为:

特性teensy2ppmiss1200mistress1200
bootmagictruetruetrue
extrakeytruetruefalse
mousekeyfalsefalsefalse
nkrofalsetruefalse
magicfalse
space_cadetfalse
grave_escfalse
LTO 链接未启用未启用true(build.lto
tapping.toggle默认默认3

mistress1200对特性做了最多的裁剪并启用 LTO,用于在 ATmega16u4(比 32u4 更小的闪存/内存)上压缩固件体积;其 mistress1200/config.h 还定义了LAYER_STATE_8BIT,用 8 位变量记录层状态以节省 RAM。这些配置是 AVR 平台"内存与功能权衡"的直观案例,可参考 docs/squeezing_avr.md。

编译与刷写

构建命令

在完成 开发环境搭建 后,按目标板选择对应命令:

make converter/a1200/teensy2pp:default

make converter/a1200/miss1200:default

make converter/a1200/mistress1200:default

三个命令分别编译对应子目录的默认键位(即上文 keymaps/default/keymap.c)。如需烧录,可将make换成qmk flash或使用make ...:default:flash的旧式语法。

进入 bootloader 的两种方式

  • 首次刷写:使用板载复位按钮强制进入 bootloader 模式(teensy2pp 使用halfkay引导,两款 FPGA 板使用atmel-dfu,见各 keyboard.json 的bootloader字段);
  • 后续重刷:固件刷入后,无需拆机按复位键——在 Amiga 键盘上同时按下HELP + R即可触发第二层中的QK_BOOT键码复位进入刷写模式。这是本项目最具实用价值的日常操作:改装完成后键盘被装入机箱内,物理复位键难以触及,HELP+R 让重刷固件变得可及。

仓库结构速览

A1200 Converter 在仓库中的完整结构如下:

keyboards/converter/a1200/ ├── info.json # LAYOUT 布局与矩阵坐标定义 ├── readme.md # 项目说明、接线表与编译指引 ├── keymaps/ │ └── default/ │ └── keymap.c # 默认键位:主层 + Help 临时层 ├── miss1200/ │ └── keyboard.json # ATmega32u4 引脚与特性 ├── mistress1200/ │ ├── config.h # LAYER_STATE_8BIT 等编译期配置 │ └── keyboard.json # ATmega16u4 引脚与特性(含 LTO) └── teensy2pp/ └── keyboard.json # AT90USB1286 引脚与特性

修改键位时,只需编辑 keymap.c(如为第二层增加KC_MUTEKC_VOLU等多媒体键),或通过 docs/configurator_default_keymaps.md 描述的配置器流程可视化生成键位;调整接线则需同步修改对应 keyboard.json 中的matrix_pins声明,确保与物理接线一致。

总结

A1200 Converter 以最小的硬件改动(一块转接板或原生专用连接器)让 Amiga 1200 原装键盘在现代主机上重获新生,并借助 QMK 的层机制补齐了 PC 键盘缺失的按键。无论是改装情怀机、在 FPGA 主控内集成键盘,还是探索 AVR 平台下功能与体积的平衡艺术,keyboards/converter/a1200 都是一份完整、可复现的参考实现。

  • 嵌入式
  • 固件
  • 驱动开发
  • 硬件开发

【免费下载链接】qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families

项目地址:https://gitcode.com/GitHub_Trending/qm/qmk_firmware
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询