Keychron V10 初期設定

VIAを用いたKey remappingとキーボードマクロの設定

公開日: 2024-04-08
更新日: 2024-04-09

  Table of Contents

想定環境

  • Browser: Google Chrome
  • OS: Ubuntu 22.04.4 LTS
1
2
3
4
5
6
% lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

設定内容はキーボードに直接保存されるのでどのOSを用いていても, 実行手順は大きく異なりません. ただし, Browser上のVIA経由でKey remappingを実行する際に/dev/hidraw デバイスの権限設定を行う必要があり, この箇所のみUbuntu特有の流れとなります.

ショートカット対象

スクリーンレコーディング用ソフトのKazam Screen Recorderのショートカットキーをマクロキーとして今回設定しております.

1
2
3
4
5
6
7
8
9
% apt-cache policy kazam             
kazam:
  Installed: 1.4.5-5
  Candidate: 1.4.5-5
  Version table:
 *** 1.4.5-5 500
        500 http://jp.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        500 http://jp.archive.ubuntu.com/ubuntu jammy/universe i386 Packages
        100 /var/lib/dpkg/status

Kazamではレコーディング時にスピーカーやマイクなどの入力デバイスから音声をキャッチするオプションがある, また以下のようなショートカットキーがあります. 今回は以下のショートカットキーをMacro Keyにアサインしています.

ショートカット 動作
Super + CTRL + R Start recording
Super + CTRL + F Finish recording
Super + CTRL + Q Quite recording

Key remappingのための前準備

環境準備

  1. the V10 Max Knob Ansi(US) keymap JSON Fileをダウンロードする
  2. sudo chown $USER:$USER /dev/hidraw1を実行し, WebHID APIを実行できるようにする

V10 Max Knob Ansi(US) keymapの準備

2024-04-08時点では, V10 MaxのVIAコードはまだ自動的に認識されません. V10 MaxのキーマップをVIAで動作させるには以下の手順を実行します:

  1. the V10 Max Knob Ansi(US) keymap JSON Fileをダウンロード
  2. VIAを開いて,「Setting」タブで「Show Degin tab」をオン
  3. 上記JSON fileを「Design」タブへドラッグ

/dev/hidraw デバイスの権限設定

VIAでキーボードを認識させる際に以下のようなエラーに遭遇する場合があります.

1
2
3
4
5
6
7
8
9
10
21:16:46.347
    Failed to open the device.
    Device: Keychron Keychron V10 Max
    Vid: 0x0568
    Pid: 0x2119
21:16:46.357
    Received invalid protocol version from device
    Device: Keychron Keychron V10 Max
    Vid: 0x0568
    Pid: 0x2119

このときchromeでchrome://device-log/をアドレスバーに入力すると, 以下のようなログが見ることができます.

1
2
chrome://device-log/
    [21:16:46] Failed to open '/dev/hidraw1': FILE_ERROR_ACCESS_DENIED

キーボード設定のため, /dev/hidraw1を開こうとしたら権限がなくて開けませんというエラーになります. 権限を確認してみると, rootユーザーしか開けないことが以下で分かります.

1
2
% ls -l /dev/hidraw1 
crw-------  1 root root    240,     1 Apr 22 20:28 hidraw1

そのため, 一時的に権限を自分に以下のコマンドで付与します

1
% sudo chown $USER:$USER /dev/hidraw1

上記実行後, VIAでキーボード設定が可能となります.

警告 !

本来的にはrootユーザーしか権限がないファイルなので, キーボード設定後は権限を修復するという観点で以下コマンドを実行してください:

1
% sudo chown root:root /dev/hidraw1 

Key remapping

設定内容一覧

Windows Modeについて以下の項目を設定

  • InsertEnd へ変更
  • Knobをzoom-in, zoom-out, zoom-resetへ変更
  • Macro KeyにKazamのショートカットキーをアサイン
    • アプリ立ち上げ, Start Recording, Stop Recording, Quit the Kazam

最終的には以下のような配置へ変更しました.

V10-keymap

LAYER LEVEL 2での設定

今回はWindows Modeの配列を変更するので, LAYER LEVEL 2での設定となります.

  • LAYER LEVEL 0: Mac Mode
  • LAYER LEVEL 1: Mac Mode fn mode
  • LAYER LEVEL 2: Windows Mode
  • LAYER LEVEL 3: Windows Mode fn mode

Keyの位置を変更する場合は, Layoutの変更対象キーをダブルクリックすると点滅するので, 点滅確認後に変更先キーをkey listの中から選択することで実現できます.

Macro設定

Basic Keycodesを参考にマクロにアサインする組み合わせを設定します.

Macro action Key setting Ubuntu側でのショートカットキー
Kazam立ち上げ {KC_LGUI,KC_6} super + 6
Kazam Start Recording {KC_LCTL,KC_LGUI,KC_R} ctrl + super + R
Kazam Stop Recording {KC_LCTL,KC_LGUI,KC_R} ctrl + super + F
Quit Kazam {KC_LCTL,KC_LGUI,KC_Q} ctrl + super + Q
zoom in {KC_LCTL,KC_EQL} ctrl + +
zoom out {KC_LCTL,KC_MINS} ctrl + -
zoom reset {KC_LCTL,KC_0} ctrl + 0

Appendix: /dev/hidraw デバイス

HIDRAW - Raw Access to USB and Bluetooth Human Interface Devices

  • HID ( Human Interface Device ) とは, 人間から入力を受けたり, 人間に出力を提供したりする装置のこと
  • HIDRAWは USBやBluetooth HID用のドライバーのこと

特に, インストールや設定手順を簡略化するために設計された, ホストとデバイス間の双方向通信のための標準規格のことをとくにHIDプロトコルと呼びます. HID プロトコルはもともと USB デバイス用に開発されたものですが, その後 Bluetooth をはじめとする多くのプロトコルで実装されたという流れがあり, 「HIDRAWは USBやBluetooth HID用のドライバー」という現在に至っております.

ホストとデバイスの通信にあたって, HIDリポートを介して情報のやり取りを行います.

項目 説明
HID レポート ホストとデバイス間で通信されるバイナリデータパケットのこと. 入力レポートはデバイスからホストに送信され, 出力レポートはホストからデバイスに送信されます. HID レポートのフォーマットはデバイス固有のもの
HID レポート記述子 デバイスの列挙中にホストから要求することができます. レポート記述子は, デバイスがサポートするレポートのバイナリ形式を記述します. 記述子のフォーマットは HID 仕様で定義されています
HID usage 標準化された入力または出力を参照する数値. Usage の値を使用することで, デバイスはレポートの各フィールドの目的と同様に, デバイス自体の意図された使用法を記述することができます.

HIDRAWはキャラクタデバイス

1
2
% ls -l /dev/hidraw1 
crw-------  1 root root    240,     1 Apr 22 20:28 hidraw1

/devディレクトリ以下にはデバイスファイルが格納されていますが, /dev/hidrawは上記コマンドで一列目にcという文字があることから, /devにキャラクタデバイスとして格納されていることがわかります.

キャラクタデバイスとは, データの入出力をバイト(1文字)単位で扱うデバイスです. キャラクタデバイスファイルを介して, アプリケーションはバッファリングなしで直接デバイスとデータを交換できるため, 逐次的でリアルタイムなデータ処理が可能となります. キーボードやマウスがキャラクターデバイスの代表例です.

References



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)