## 結論の理由
位置が遠い座標へポインタを移動するのが目的なら、マルチディスプレイに一発で目的座標を表示できる[[Scoot]]の方が理にかなっている。しかも無料。
## 経緯
[[Google Chrome]]以外のアプリケーションでも、[[Vimium]]のリンク移動機能と同等のことができる[[Homerow]]というツールを紹介してもらった。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://www.homerow.app/favicon.png" />
<span class="link-card-v2-site-name">www.homerow.app</span>
</div>
<div class="link-card-v2-title">
Homerow | Keyboard shortcuts for every button in macOS
</div>
<div class="link-card-v2-content">
Homerow lets you navigate macOS with more keyboard and less mouse.
</div>
<img class="link-card-v2-image" src="https://homerow.app/og-main.png" />
<a href="https://www.homerow.app/"></a>
</div>
[[Homerow]]は便利そうだが、調べていると、アプローチが少し異なるツールとして[[Mouseless]]というものがあることも分かった。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://mouseless.click/img/favicon.png" />
<span class="link-card-v2-site-name">mouseless.click</span>
</div>
<div class="link-card-v2-title">
mouseless
</div>
<a href="https://mouseless.click/"></a>
</div>
しかも、この[[Mouseless]]は少し前に[[Neovim]]プラグイン動画で[[👤linkarzu]]氏が使っていたものと同じものだった。(少し気になっていた)

[[Homerow]]は現在のフローに取り込んでも、プラスアルファの存在として有益なのは分かったが、[[Mouseless]]を取り入れるべきか、それは[[Homerow]]と両立するものなのか迷っているので方針を決めたい。
## 提案内容
[[Mouseless]]を取り入れる。([[Homerow]]を外すべきかは論点ではない)
[[Mouseless]]の設定については以下。
> [!code]- mouseless-config.yaml
> ```yaml
> app_version: 0.3.1
> behavior_configs:
> - base_wheel_speed: 16
> hide_cursor_on_click: false
> hide_location: bottom_left
> initial_overlay_monitor: with_keyboard_focus
> move_duration_ms: 100
> move_real_cursor_with_virtual: false
> multi_action_timeout_ms: 400
> name: main_behavior
> tap_threshold_ms: 200
> wheel_mode_auto_off_s: 10
> wheel_speed_multiplier: 4
> wheel_step_size: 100
> wheel_step_size_large: 500
> classname: AppConfig
> custom_monitor_assignments: []
> grid_configs:
> - always_show_subgrid: false
> grid_defn:
> - border_width: 0.0
> callback: build_cell_strings
> num_cells_x: 10
> num_cells_y: 1
> - border_width: 1.0
> callback: build_cell_strings
> num_cells_x: 1
> num_cells_y: 26
> - border_width: 0.0
> callback: apply_strings_and_subgrid_to_cells
> num_cells_x: 2
> num_cells_y: 1
> mouse_action_keys: ASDFG HJKL; QWERT YUIOP ZXCVB NM,./
> name: position_based
> strategy: subgrid
> subgrid_dims:
> - 10
> - 3
> subgrid_mouse_action_keys: QWERT YUIOP ASDFG HJKL; ZXCVB NM,./
> keymaps:
> - entries:
> back mouse button (w/o overlay): null
> close UI element: Escape
> cycle click count: null
> cycle mouse action type: null
> cycle mouse button: null
> decrease overlay opacity: ArrowDown
> edit config: Tab
> enter wheel mode: null
> execute mouse action: Enter
> execute mouse move: Option+F19
> exit wheel mode: Escape
> forward mouse button (w/o overlay): null
> hide overlay: Escape
> hold for back button: null
> hold for drag: null
> hold for forward button: null
> hold for middle button: null
> hold for move: null
> hold for right button: CommandRight
> hold for speed decrease: null
> hold for speed increase: CommandLeft
> increase overlay opacity: ArrowUp
> jump to bottom: null
> jump to left edge: null
> jump to right edge: null
> jump to top: null
> left mouse button (w/o overlay): null
> middle mouse button (w/o overlay): null
> release hold/drag: Escape
> repeat last mouse action: null
> right mouse button (w/o overlay): null
> show overlay: Option+F20
> switch monitor left: Option+F20
> switch monitor right: null
> toggle overlay: null
> toggle wheel mode: OptionLeft tap
> undo last key: Backspace
> wheel down: K
> wheel down fast: null
> wheel left: L
> wheel left fast: null
> wheel right: ;
> wheel right fast: null
> wheel step down: null
> wheel step down large: null
> wheel step left: null
> wheel step left large: null
> wheel step right: null
> wheel step right large: null
> wheel step up: null
> wheel step up large: null
> wheel up: J
> wheel up fast: null
> name: mac
> monitor_assignment_mode: auto
> name: ''
> style_configs:
> - always_on_subgrid_rgba:
> - 1.0
> - 1.0
> - 1.0
> - 0.2
> background_rgba:
> - 0.0
> - 0.0
> - 0.0
> - 0.35
> char_spacing_cell_width_ratio: 0.5
> char_spacing_font_size_ratio: 0.5
> char_spacing_strategy: font_size_relative
> cursor_drag_rgba:
> - 0.0
> - 0.5
> - 1.0
> - 0.7
> cursor_move_rgba:
> - 0.75
> - 0.41
> - 0.92
> - 0.7
> cursor_other_rgba:
> - 1.0
> - 1.0
> - 1.0
> - 0.7
> cursor_rgba:
> - 1.0
> - 0.54
> - 0.0
> - 0.7
> cursor_right_button_rgba:
> - 0.92
> - 0.32
> - 0.32
> - 0.7
> cursor_size: 7
> font_size_multiplier: 0.4
> grid_line_style: lines
> grid_rgba:
> - 0.00392156862745098
> - 1
> - 0.7803921568627451
> - 0.5
> highlight_rgba:
> - 0.00392156862745098
> - 1
> - 0.7058823529411765
> - 0.25
> name: default
> show_initial_highlight: false
> subgrid_font_size_multiplier: 0.75
> subgrid_rgba:
> - 1.0
> - 1.0
> - 1.0
> - 0.5
> subgrid_text_rgba:
> - 1.0
> - 1.0
> - 1.0
> - 0.5
> text_rgba:
> - 0.00392156862745098
> - 1
> - 0.9058823529411765
> - 1
> text_shadow_blur_radius: 2.0
> text_shadow_offset:
> - 1.0
> - 1.0
> text_shadow_rgba:
> - 0.0
> - 0.0
> - 0.0
> - 1.0
> window_opacity: 0.9
> ```
## 結論に至るまでの過程
### 前提条件
現在の環境について。
#### [[ポインティングデバイス]]
- [[MacBook Pro M4 Pro]]のトラックパッド
- ガッツリ操作するときはこっち
- [[HHKB Studio]]の[[ポインティングスティック]] ([[HHKB Studio]]はPCの上でブリッジ)
- キーボード操作メインでフォーカスや近くのボタン押したいだけのときはこっち
- [[SlimBlade Pro Trackball]]
- 気が向いた時や画面移動が大きいとき。最近は使わなくなった
### ポインタ移動手段
- [[AltTab]]
- [[フォーカスしたウィンドウの中央にカーソルを移動 (AltTab)|フォーカスしたウィンドウの中央にカーソルを移動]]するように設定している
### 両ツールのメリデメ
#### 比較表
| 項目 | [[Homerow]] | [[Mouseless]] |
| ----------------- | --------------------- | -------------- |
| 利用難易度 | ✅**優しい** | やや難しい |
| アクションまでのキー数(同一画面) | ✅**3キー** | 4キー |
| ラベルの先読み | 難しい | ✅**(慣れれば)可能** |
| 対象スコープ | 同一ウィンドウのみ | ✅**すべてのスクリーン** |
| 無料制限 | ✅**50アクションごとにポップアップ** | 14日過ぎると基本機能のみ |
| 価格(買い切り) | $49.99 | ✅**$19.99** |
#### [[Homerow]]
- 強み
- 操作が簡単で、[[Mouseless]]よりも動作完了までの時間が短い
- [[Mouseless]]に慣れた場合はそこまで変わらなくなるかもしれない
- 懸念点
- 現在のウィンドウしか有効に鳴らないということの制約
- 価格が高め
- 一方で無料のままでも機能自体は使える
#### [[Mouseless]]
- 強み
- よほど細かい操作を除けば対応できない状況はない
- 懸念点
- アクションを実行するまでに必要なキーが4キーと多い
- 決定的ではあるので慣れれば慣れるほど操作時間は短くなる
- 購入しないと実質利用できない
- 個人はいいとして会社で利用できるかどうかというリスク
### ユースケースごとの比較
[[Homerow]]や[[Mouseless]]を取り入れる際に最も期待することは **既存機能ではできないことで価値あることをできるようになること** である。
#### 現在のウィンドウにポインタを移動する
[[AltTab]]の方が速いが、慣れればポインタの位置をコントロールできるので[[Mouseless]]の方がいいかも?
- 現状
- [[AltTab]]を2連続で起動する (2キー)
- 一度フォーカスを外して戻すことにより、[[AltTab]]の機能でウィンドウ中央に移動する
- [[Mouseless]]
- 起動して任意の場所 (4キー)
#### 少しだけポインタを移動してクリック
慣れれば[[Mouseless]]の方が速そう。
- 現状
- [[ポインティングスティック]]で移動する
- [[Mouseless]]
- 起動して任意の場所 (4キー)
#### 異なるウィンドウのコントロールをクリック
慣れても[[Mouseless]]を使わないほうが速い気がする。特に最後のクリックが。
- 現状
- [[ポインティングスティック]]やトラックパッドで対象ウィンドウの対象箇所に移動し、2回クリック
- 1回目はフォーカス
- 2回目はクリック
- [[Mouseless]]
- 起動してスクリーン選定(2~3キー)
- 任意の場所に移動 (4キー)
- フォーカスとポインタ移動
- [[HHKB Studio]]で左クリック (1キー)
- クリック
#### ガッツリ操作
キーボードではなく[[ポインティングデバイス]]が主体となる操作。これはトラックパッドの方が圧倒的に有利なので気にしなくていい。
- 現状
- トラックパッドで操作
- [[Mouseless]]
- 起動して任意の場所 (4キー) を繰り返す
#### ターミナル操作
主にコマンドと[[Neovim]]。どちらもキーボードショートカットで完結するので、[[Mouseless]]を利用するメリットはほとんどないと思う。
### [[Scoot]]という選択肢
[[Mouseless]]も[[Homerow]]も決め手に欠けると思っていたところ、[[Scoot]]というアプリを見つけた。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" />
<span class="link-card-v2-site-name">GitHub</span>
</div>
<div class="link-card-v2-title">
GitHub - mjrusso/scoot: Keyboard-driven MacOS cursor actuator
</div>
<div class="link-card-v2-content">
Keyboard-driven MacOS cursor actuator. Contribute to mjrusso/scoot development by creating an account on GitHub.
</div>
<img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/360176893/2dd81e80-ab4a-11eb-847e-bd51bae42fdd" />
<a href="https://github.com/mjrusso/scoot"></a>
</div>
スターは400ちょいでそこまでメジャーというわけではなさそうだし、2年半更新されていないのでメンテ状況も怪しいかもしれない。しかし、それを補うメリットが[[Scoot]]にはありそう。
今のユースケースには[[Scoot]]の方があってそうだったので、一旦[[Mouseless]]の利用は取りやめることにした。詳細は以下。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
💿PRO-0007 マウスカーソルの瞬間移動にScootを使う
</div>
<div class="link-card-v2-content">マルチディスプレイやGrid-Based Navigation、無料ツール、ホットキー操作に対応したScootを使うことで、遠い位置へのマウスカーソル移動を効率化した。Mouselessにはない機能や安定性が理由となった。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/pro-adr2.webp" />
<a data-href="💿PRO-0007 マウスカーソルの瞬間移動にScootを使う" class="internal-link"></a>
</div>
%%[[💿PRO-0007 マウスカーソルの瞬間移動にScootを使う]]%%