claw44でマウス操作をできるようにした

公開:2021/01/01
更新:2021/01/03
4 min読了の目安(約4300字TECH技術記事 1

背景

claw44 のセパレートキーボードを利用しているのですが、マウス操作をする度にキーボードからトラックパッドに手を移動するのが面倒な時があるので、キーボード上でマウス操作をできるようにしたいと思いました。

前提

違うキーボードですが下記の記事を参考に claw44 のキーボードの設定変更を行いました。

上記の記事には qmk のセットアップ方法から記載されているので、セットアップがまだの方は初めに閲覧しておくことをおすすめします。
今回の私の記事では qmk セットアップ済みであり自分用のキーマップ設定フォルダ(qmk_firmware/keybords/claw/keymaps/***/)が、作成済みの前提でコードの修正箇所を記載しています。

コード編集

keymap.c

custom_keycodes に新しいマウス操作用のレイヤー名を追加します。

qmk_firmware/keybords/claw/keymaps/***/keymap.c
enum custom_keycodes {
  QWERTY = SAFE_RANGE,
  LOWER,
  RAISE,
  MOUSE  //追加
};

マウス操作レイヤーに切り替わるようキーマップに設定します。
今回は Tab ボタン長押しでマウス操作レイヤーに切り替わるようにしたいと思います。
※Entar で Raise に変換している箇所を参考にすると修正しやすいと思います。

qmk_firmware/keybords/claw/keymaps/***/keymap.c
#define KC_L_SPC LT(_LOWER, KC_SPC)
#define KC_R_ENT LT(_RAISE, KC_ENT)
#define KC_M_TAB LT(_MOUSE, KC_TAB)  //追加
.
.
.
  [_QWERTY] = LAYOUT( \
  //,---------+...
     KC_ESC,   ...
  //|---------+...
     KC_M_TAB, ...  // KC_TAB → KC_M_TAB に変更
  //|---------+...
     KC_LSFT,  ...
  //`---------+...

マウス操作レイヤーのキーマップを新しく作成します。
私は、左手の人差し指のホームポジションでクリック、右手の人差し指・中指・薬指のホームポジションあたりでカーソル操作、右手の小指のホームポジションあたりでホイール操作するようにしています。
カーソル操作とホイール操作の配置の形は、マックキーボードの上下左右キーの配置を参考にしています。

マウス操作の範囲

上記の写真のようにマウス操作レイヤーのキーマップを新たに作成しました。

qmk_firmware/keybords/claw/keymaps/***/keymap.c
  [_MOUSE] = LAYOUT( \
  //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
     _______, _______, _______, _______, _______, _______,     _______, _______, KC_MS_U, _______, KC_WH_D, _______,
  //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
     _______, _______, _______, _______, KC_BTN1, _______,     _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, KC_WH_L,
  //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
     _______, _______, _______, _______, _______, _______,     _______, _______, _______, KC_WH_R, _______, _______,
  //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
                       RESET  , _______, _______, _______,     _______, _______, _______, _______
  //                  `--------+--------+--------+--------'   `--------+--------+--------+--------'
  ),

マウス操作のキー・操作感度の情報は下記の公式サイトページに載っております。

個人的にホイール操作のキーは上下左右反転させたほうがしっくり来る動作だったので、カーソル操作のキーとは反転しています。

layer_state_reader.c

switch 文にマウス操作レイヤーのケースを追加します。

qmk_firmware/keybords/claw/lib/layer_state_reader.c
#define L_LOWER (1<<_LOWER)
#define L_RAISE (1<<_RAISE)
#define L_MOUSE (1<<_MOUSE)  //追加
.
.
.
  case L_MOUSE:  //case追加
    snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Mouse");
    break;

rev1.h

layer_number にマウス操作レイヤーを追加します。

qmk_firmware/keybords/claw/rev1/rev1.h
enum layer_number {
  _QWERTY = 0,
  _LOWER,
  _RAISE,
  _MOUSE,  //追加
  _ADJUST,
};

rules.mk

MOUSEKEY_ENABLE を yes にして、マウスキーを有効化させます。

qmk_firmware/keybords/claw/rev1/rules.mk
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = yes  #no → yes に変更

config.h

マウス操作の感度設定を追加します。
私は下記を追加し設定しました。

qmk_firmware/keybords/claw/keymaps/***/config.h
.
.
.
// カーソルキー入力から反応までの遅延
#undef  MOUSEKEY_DELAY
#define MOUSEKEY_DELAY 50

// カーソルキー押しっぱなしの時の反応までのインターバル
#undef  MOUSEKEY_INTERVAL
#define MOUSEKEY_INTERVAL 0

// カーソルの移動スピード
#undef  MOUSEKEY_MAX_SPEED
#define MOUSEKEY_MAX_SPEED 2

// カーソル操作がトップスピードになるまでの時間
#undef  MOUSEKEY_TIME_TO_MAX
#define MOUSEKEY_TIME_TO_MAX 100

// ホイールキー入力から反応までの遅延
#undef  MOUSEKEY_WHEEL_DELAY
#define MOUSEKEY_WHEEL_DELAY 50

// ホイールキー押しっぱなしの時の反応までのインターバル
#undef  MOUSEKEY_WHEEL_INTERVAL
#define MOUSEKEY_WHEEL_INTERVAL 80

// ホイールの移動スピード
#undef  MOUSEKEY_WHEEL_MAX_SPEED
#define MOUSEKEY_WHEEL_MAX_SPEED 2

// ホイール操作がトップスピードになるまでの時間
#undef  MOUSEKEY_WHEEL_TIME_TO_MAX
#define MOUSEKEY_WHEEL_TIME_TO_MAX 100

反映

ビルドして反映させれば設定完了です。

$ make claw44:***
$ make claw44:***:avrdude

最後に

手をキーボードからトラックパッドに都度移動したくないときには助かる設定になりました。
ただ、細かいマウス操作が必要な際にはトラックパッド上で操作をすることが多いです。笑
どうしてもキーボードから手を離したくないタイミングがある方は、ぜひ設定してみてください。