Nano-ITXマザーボードenx-pnv-d510-a2rを、ヘッドレスサーバとして、
SCSI/SAS用に使用している。
SASボード SAS3442E-Rをこのボードで使用しているが、
BIOS起動時にCtrl+Cを押さないと、NVRANという画面で止まってしまうという
怪現象が発生している。
ヘッドレスサーバなので、一々キーボードを接続するのも面倒くさいので、
pro micro atmega32u4 を使って Ctrl +C を発生する 1キー キーボードを
以下の手順で作ってみた
なお、pro microのfirmwareに書き込むためのqmk firmwareの環境は、
rockpro64 の debian上に構築している。
(1) qmk firmwareの環境構築
$ git clone https://github.com/qmk/qmk_firmware.git
$ ./qmk_firmware/util/qmk_install.sh
$ cd qmk_firmware
$ make git-submodule
(2) pro microへのスイッチ取り付け
端子仕様は以下のサイトに記載されている。
https://cdn.sparkfun.com/assets/f/d/8/0/d/ProMicro16MHzv2.pdf
Reset SW用に 22pin(RST)と23pin(GND)をSWで結線。
Ctrl+C キー用に 5pin(D2)と6pin(D3)をSWで結線。
(3) firmwareの準備
$ qmk new-keyboard -u <github username>
→
Keyboard Name? onekey (キーボード名をonekeyとする)
→ Default Layout? 52 (none of the aboveの数字を入力)
→ MCU? 13(promicroの数字を入力)
でfirmwareの準備ができる。
(4) keymapの作成
$ cd qmk_firmware/keyboards/onekey (キーボード名のDirectoryの配下へ移動)
→ info.json を以下のように編集
{
"manufacturer": "****",
"keyboard_name": "onekey",
"maintainer": "ksumi",
"bootloader": "caterina",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["D0"],
"rows": ["D1"]
},
"processor": "atmega32u4",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"layouts": {
"LAYOUT_ortho_1x1": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
]
}
}
}
→ keymaps/default/keymap.c を以下のように編集
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┐
* │ c │
* └───┘
*/
[0] = LAYOUT_ortho_1x1(
LCTL(KC_C)
)
};
→ LCTLは「左cntrol keyを押しながら」の意味なので、
LCTL(KC_C)は「Ctrl+C」の意味になる。
key mapに対応するkey codeは以下に記載がある。
(5) firmwareのcompile
$
qmk compile -kb onekey -km default
(6) firmwareの書き込み
コンピュータとpro microをUSBケーブルで接続する。
firmwareの書き込みの前に、書き込みするユーザーを dialout groupに
追加しておく必要がある。
$ sudo usermod -aG dialout <user>
これをしておかないと、firmwareの書き込みの時、
「
Waiting for /dev/ttyACM0 to become writable.....」で処理が継続されなくなる。
( /dev/ttyACM0 の group が dialoutであるため )
書き込みは、以下のコマンドを実行。
$ qmk flash -kb onekey -km default
途中で、pro microのReset SWの押下が要求されるので、SWを押す。
すると、赤色LEDが何回かチカチカして書き込みが完了する。
これで、Ctrl+Cを発生するキーが完成した。