HHKB魔改

概述

HHKB作为日常开发用键盘挺好的,但是有两点不足:

  1. 使用mini usb借口,长期使用必定造成接口松动
  2. hhkb蓝牙版使用的蓝牙3.0模块据说连接不够稳定

基于以上两个问题,采用第三方主控-YDKB,完善HHKB的问题.
YDKB的主控支持蓝牙/USB双模,针对需求还可以把默认的Mini USB借口改成Type-C借口,主控使用蓝牙4.0传输模块,可以提高蓝牙连接稳定性.
另外主办支持分层键位部署,使用更灵活。

蓝牙连接

蓝牙连接问题实际上就是USB蓝牙适配器驱动和ydkb主控的问题。在linux上对适配器驱动的支持需要编译内核,然后配对蓝牙设置。
对于linux系统来说,配置蓝牙最好安装usb的相关软件包usbutils,其中的lsusb命令可以用来查看当前连接的usb设备信息。
以下配置信息以gentoo发行版为例:

# lsusb
Bus 001 Device 002: ID 8087:8000 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
Bus 008 Device 002: ID 0a5c:217f Broadcom Corp. Bluetooth Controller (HCI mode)

其中的Bluetooth就是蓝牙设备的信息了,其中后边的HCI mode还告诉了设备的驱动方式,真是暖心,下面就可以配置内核了。

编译内核

#make nconfig
[*] Networking support --->
      <*>   Bluetooth subsystem support --->
              [*]   Bluetooth Classic (BR/EDR) features
              <*>     RFCOMM protocol support
              [ ]       RFCOMM TTY support
              < >     BNEP protocol support
              [ ]       Multicast filter support
              [ ]       Protocol filter support
              <*>     HIDP protocol support
              [*]     Bluetooth High Speed (HS) features
              [*]   Bluetooth Low Energy (LE) features
                    Bluetooth device drivers --->
                      <*> HCI USB driver
                      <*> HCI UART driver
      <*>   RF switch subsystem support --->
    Device Drivers --->
          HID support --->
            <*>   User-space I/O driver support for HID subsystem

其中设备驱动部分,可以根据实际的设备进行勾选。

更新系统

vim /etc/portage/make.conf
USE="bluetooth"

vim /etc/portage/package.use/util-linux
net-wireless/bluez deprecated

全局启用蓝牙支持,portage会自动根据需求安装bluez软件包,bluez作为蓝牙协议的实现,后续的配对操作就需要这个软件包了。不过一定要注意启用deprecatedUSE,否则没有hciconfig命令。

启用蓝牙服务

systemctl enable bluetooth
systemctl start bluetooth

验证蓝牙设备

hciconfig -a
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:02:72:2F:A9:33  ACL MTU: 1021:8  SCO MTU: 64:1
        UP RUNNING PSCAN 
        RX bytes:1166 acl:0 sco:0 events:43 errors:0
        TX bytes:960 acl:0 sco:0 commands:43 errors:0
        Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH SNIFF 
        Link mode: SLAVE ACCEPT 
        Name: 'BlueZ 5.21'
        Class: 0x000104
        Service Classes: Unspecified
        Device Class: Computer, Desktop workstation
        HCI Version: 4.0 (0x6)  Revision: 0x1000
        LMP Version: 4.0 (0x6)  Subversion: 0x220e
        Manufacturer: Broadcom Corporation (15)

如果出现上述信息,尤其第三行UP RUNNING证明蓝牙适配器正确识别并且启用了。第三行是UP代表正在运行,DOWN代表已关闭。可以通过hciconfig hci0 up启用蓝牙适配器。

配对蓝牙设备

bluez软件包包含bluetoothctl命令,可以通过这个命令进行蓝牙配对。此前我以为这个命令是systemd全家桶的命令 :-)。bluetoothctl的常用命令如下:

命令 含义
devices 查看设备列表
scan on 扫描设备
scan off
remove 删除设备
connect 配对设备
  1. 先扫描设备
scan on
[NEW] Device 72:3B:E1:81:4E:4F HHKB BLE
scan off

开始扫描,随后适配器指示灯会不停闪烁,命令会输出发现的设备。需要使用scan off停止扫描设备。
2. 连接设备

connect 72:3B:E1:81:4E:4F
[CHG] Device 72:3B:E1:81:4E:4F Connected: yes
Connection successful

这样就可以正常使用设备了。

YDKB主控相关操作

键盘方面需要先启用主控上的硬件开关,这个开关是电池的供电开关,并不是蓝牙功能的开关。如果要开/关蓝牙功能,需要使用快捷键。

按键 功能说明
LShift+RShift+W 切换蓝牙功能开关
LShift+RShift+R 清除键盘端蓝牙配对信息
LShift+RShift+U 蓝牙或USB模式切换
LShift+RShift+I 设置蓝牙为可发现
LShift+RShift+O 设置蓝牙为不可发现
LShift+RShift+P 切换蓝牙节能模式开关
LShift+RShift+S 显示蓝牙连接状态指示
LShift+RShift+B 重启键盘

相关连接

主控成品店铺
店铺链接仅供参考,并非本人开设!

主控板更换步骤

ydkb官方介绍

ydkb固件配置

gentoo蓝牙支持
gentoo 蓝牙配置 中文

bluetoothctl介绍
ydkb心得

hcitool介绍