相关链接
购买Hasu USB to USB Controller Converter:https://www.1upkeyboards.com/shop/controllers/usb-to-usb-converter/
TMK按键编辑器:http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb
TMK固件:https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usb
刷写方法:https://github.com/tmk/tmk_keyboard/wiki#flash-firmware
论坛中的介绍:https://geekhack.org/index.php?topic=69169.0

步骤

  1. 推荐使用在线生成工具,跳转到第7步。如果希望自己编译请继续。下载固件源码,准备编译。
    自己编译的固件可以修改编译的参数,从而使用键盘上的绝大多数按键。具体参见https://github.com/tmk/tmk_core/blob/master/doc/keymap.md
    笔者没有研究具体交换按键的方法,但测试了在Ubuntu下的依赖关系,确保可以编译通过。
  2. 这里使用Ubuntu 16.04.3 LTS
  3. 安装依赖sudo apt install gcc-avr dfu-programmer gcc-arm-non-eabi avr-libc
  4. 克隆源码git clone https://github.com/tmk/tmk_keyboard.git; cd tmk_keyboard
  5. 克隆Git submodulegit submodule init; git submodule update
  6. 编译源码cd converter/usb_usb; make -f Makefile.unimap。跳转到第8步。
  7. 访问TMK按键编辑器修改自己需要的按键序列,并下载固件
  8. 你就会得到一个.hex的文件,这个就是固件准备刷入。
  9. 下载刷写工具https://www.microchip.com/developmenttools/ProductDetails/flip不清楚为什么没有Mac版的,也只能识别为键盘驱动,无法挂载到虚拟机。推荐使用Windows系统进行刷写。
  10. 打开刷写工具flip,点击Device - Select选择你芯片上的型号,我这里是ATmega32U4
  11. 选择Settings - Communication - USB,再点击控制器上的按钮。如果这里提示AtLibUsbDfu.dll找不到,请查看https://imgur.com/a/bnwzy
  12. 选择File - Load HEX File,并选择刚才的.hex文件。
  13. 勾选Erase Blank Check Program Verify并点击Run按钮。
  14. 重新插拔USB设备,或点击Start Application按钮。以使用新固件。

如何使用Hasu USB to USB Controller Converter刷写tmk固件交换Caps和Ctrl的更多相关文章

  1. USB device & USB controller & USB passthrough

    目录 USB device USB controller Linux 相关命令 Python 相关库 Libvirt USB passthrough 参考资料 近期往 openstack 里倒腾 US ...

  2. 转:USB主机控制器(Host Controller)--深入理解

    1. 主机控制器(Host Controller) • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1)      • ...

  3. android的USB MTP && USB CDC/USBnet(ECM, NCM, ACM) && USB gardget

    MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议.早在智能手机普及前,数码相机和MP3播放器等都使用了MTP的前身PTP(Pictu ...

  4. USB协议-USB的描述符及其之间的关系

    USB只是一个总线,只提供一个数据通路而已.USB总线驱动程序并不知道一个设备具体如何操作,有哪些行为.具体的一个设备实现什么功能,要由设备自己来决定.那么,USB主机是如何知道一个设备的功能以及行为 ...

  5. USB协议-USB设备的枚举过程

    USB主机在检测到USB设备插入后,就要对设备进行枚举了.为什么要枚举?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等. ...

  6. USB协议-USB的包结构及包的分类

    USB是串行总线,所以数据是一位一位地在数据线上传送的.既然是一位一位地传送,就存在着一个数据位先后的问题.USB使用的是LSB在前的方式,即先出来的是最低位数据,接下来是次低位,最后是最高位(MSB ...

  7. [USB] Windows USB/DVD Download Tool

    此工具为微软官方U盘启动盘制作工具 Windows USB/DVD Download Tool 说明:https://www.microsoft.com/en-us/download/windows- ...

  8. USB:USB通信中的端点(endpoint)和四种传输模式

    USB的传输模式有4种,分别是控制传输(Control Transfer).中断传输(Interrupt Transfer).批量传输或叫块传输(Bulk Transfer).实时传输或叫同步传输(I ...

  9. Using a USB host controller security extension for controlling changes in and auditing USB topology

    Protecting computer systems from attacks that attempt to change USB topology and for ensuring that t ...

随机推荐

  1. SQL SERVER 字符串函数 REPLACE()

    定义: REPLACE()返回用另一个字符串值替换原字符串中出现的所有指定字符串值之后的字符串. 语法: REPLACE ( string_expression , string_pattern , ...

  2. mysql数据库基础-2019-9-10(随堂笔记)

    mysql数据库基础 在cmd情况下启动mysql数据库:(配置path环境变量后可忽略) 运行mysql1. 进入mysql路径2. 执行:mysql -uroot -p,安装时的密码 1.数据库& ...

  3. Scrapy setup.py 各参数详解

    实际上Scrapyd的打包工具用到了setuptools,而打包参数主要是在setuptools里面的setup函数中设置. ************************************* ...

  4. Python基础学习路径

    1. Python数据结构 1. 基本数据类型(整数.小数.字符) 1.基本数据类型有5种:int bool float complex long 2.每一种数据类型该如何定义 3.数据类型之间可以强 ...

  5. SqlServer学习之存储过程

    前言:对于存储过程一直有一种抵触的心理,因为毕业至今所在的公司开发组都不是很规范,对于开发的一些注意事项并没有很多的规定,只是在知乎上查找相关知识的时候,看到很多人对于在程序里使用存储过程的不好之处都 ...

  6. upxmake --- upx source compilation

    upxmake --- upx source compilation 1. 下载upx所依赖的组件源码 zlib-1.2 http://www.zlib.net/zlib-1.2.11.tar.gz ...

  7. Linux更新程序脚本

    DATE=$(date +%Y%m%d_%H%M%S) cd /opt/anystreaming/transcoder/ mv dll/libmonitor_service.so "dll/ ...

  8. ES6模块化及优点,简单案例让你秒懂

    模块化:模块是一个文件     好处:         1.减少命名冲突         2.避免引入时的层层依赖         3.可以提升执行效率     **第一种方法************ ...

  9. Activiti使用总结

    工作流在我们日常的工作中用得可谓相当普及,尤其在企业内部管理系统,如考勤.财务.合同等系统中更是离不开它.在我们金融科技领域,工作流主要用于贷款审批.风控审核等环节.早期工作流在企业信息化发挥着很重要 ...

  10. github 提交和更新代码

    …or create a new repository on the command line   echo "# flutterPluginsWorks" >> RE ...