2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

左手デバイスって何?なぜシフターなのか?

左手デバイスとは

「左手デバイス」 とは、キーボードの左側に置いて使う専用の入力補助装置のことです。ボタンやダイヤルに好きなショートカットや操作を割り当てることで、作業効率を劇的に向上させます。

主な用途:

  • 動画編集: カット、再生、音量調整などをワンタッチで操作
  • イラスト制作: ブラシ切り替え、「戻る」、キャンバスの拡大縮小を素早く
  • プログラミング: よく使うコマンドや定型コードを瞬時に入力
  • 配信: シーン切り替え、マイクミュートなどを即座に実行

代表的な製品:

  • Stream Deck(Elgato社): 液晶ボタンが並んだ定番デバイス(1.5万〜3万円)
  • TourBox: ダイヤルとボタンの複合型でクリエイターに人気(2.5万円前後)

「便利そうだけど、高いな……」
そう思いながら部屋を見渡すと、埃を被った数万円の 「レーシングゲーム用シフター」 が目に入りました。

レーシングシフターとは

PlayStationやPC用のレーシングゲーム(Gran Turismo、Assetto Corsaなど)で使用する、車のギアチェンジを再現した周辺機器です。

本記事で使用したシフター:

  • Logicool G29: ハンコン(ハンドルコントローラー)セット付属のシフター(6速+R)

Thrustmaster TH8S: 高級シフター単体(金属製、約2万円)

これらはUSB接続でPCに認識されるため、 「これをキーボード代わりにできるのでは?」 と閃きました。

「これしかない!」

そう思って遊び半分で構築し始めたはずが、いつの間にか本気になってしまい、最終的にPCデスクが某戦隊ロボのコックピットのようになっていました。
気に入り過ぎて、貯めたお小遣いでTH8A(高級シフター)まで買い足す始末。当初の 「金がないから代用する」 という理由はどこかへ行きました。

しかし、この 「よくわからないシステム」 を大学の総合型選抜でアピールした結果、第一志望に合格できてしまったのです。


完成したもの

Hyprland(Linuxのタイル型ウィンドウマネージャー)のワークスペース(仮想デスクトップ)を、車のシフトチェンジのようにガチャンと切り替えるシステムです!

デモ動画

ワークスペースとは?

WindowsやMacにおける 「仮想デスクトップ」 と同じ概念です。
通常は Super+1Super+8 などのショートカットキーで切り替えますが、数が増えるとキーが足りなくなったり、指が届かなくなったりします。

そこで、シフターを使って 「物理的なギアの位置」 で画面を直感的に切り替えるシステムを構築しました。

システムの主な特徴

  • 直感的な操作: レーシングシフターをガチャンと入れるだけで画面が切り替わる。
  • 圧倒的な拡張性: 「レイヤー」機能の実装により、5つのレイヤー × 8つのギア = 合計40ワークスペースを管理可能。
  • 視覚フィードバック: Waybar(ステータスバー)に現在のギアとレイヤー状態をリアルタイム表示。

半年使ってみた感想

この奇抜なシステムを半年以上使い続けての正直な感想です。

良い点

  • 意外と実用的: すぐに飽きて捨てる予定でしたが、キーボードショートカットを探すよりも 「身体で覚える(手続き記憶)」 ため、慣れると爆速で操作できます。
  • アイデンティティになった: いつの間にか周囲から 「シフターでタブ切り替えてる変人」 として定着しました。名刺代わりになります。
  • ロマンの塊: これ以上のロマンは存在しないと言えるほど、最高の作業環境を手に入れました。

欠点

  • うるさい: 操作のたびにガチャン、ガチャンという音が響きます。でも、それも含めてロマンです。

結果

自分にとってのデメリットはなく、ロマン重視に見えて実は効率も良いシステムが完成しました。

そして、大学の総合型選抜の面接時。シフトレバーを持参し、アイスブレイクで 「こういうよくわからないものも作っています」 と紹介したところ、面接官全員が大爆笑。場の空気が一気に和み、その後の質疑応答もリラックスして臨めました。
その結果、無事に合格。今ではこのシフトノブに手を合わせて拝んでいます。マジで神。


【技術編】実装の要点

ここからは技術的な解説です。ソースコードの全文や詳細なセットアップ方法はGitHubリポジトリを参照してください。
https://github.com/kurimogo/SisterBoard

システム全体の構成

大枠の仕組みは以下の通りです。Rustでデバイス入力を監視して仮想キーボードとして振る舞わせ、Hyprlandのスクリプトを叩きます。

G29/TH8A(物理デバイス)
    ↓ (Linux Input Event)
Rustアプリケーション(デバイス監視・非同期処理)
    ↓ (uinputで仮想キーボード化)
Hyprland + Bashスクリプト群(レイヤー計算)
    ↓
40ワークスペース(5レイヤー × 8)へ切り替え
    ↓
Waybar(状態表示)

1. Rustアプリケーション(入力処理)

最初はPythonで作っていましたが、「コンパイル言語の方が速いのでは?」という安直な理由で、触ったことのないRustを採用しました。…

技術スタック:

  • Rust & tokio: async/awaitによる非同期処理で、複数のデバイス(G29とTH8Aなど)を同時に低遅延で監視。
  • uinput (Linuxカーネル機能): ユーザー空間から仮想入力デバイスを作成。Rustからキーボードショートカット(例: Win+Shift+F1)を発行します。
  • serde: JSON設定ファイルで「どのギアに入れたらどのキーを押すか」を柔軟に定義。

工夫した点:

  • チャタリング防止: アナログ軸(シフターの位置)の値を監視し、閾値を超えた瞬間だけイベントを発火させる「エッジ検出」を実装。
  • 自動検出: /dev/input/eventX を手動で指定せず、デバイス名から自動的に対象を特定するロジックを実装。

2. Hyprlandのレイヤー管理システム

Hyprland標準ではキーバインドが足りないため、「レイヤー」という概念を自作スクリプトで導入しました。

レイヤーの仕組み:
車のギア(1速〜8速)は物理的に8つしかありませんが、「レイヤー」を切り替えることで機能を拡張します。大型トラックの多段シフトのような仕組みです。

ワークスペースIDの計算式(Bashスクリプト):
シフターからの入力は単なる数字(1〜8)ですが、スクリプト内で以下の計算を行い、実際のワークスペース(ID: 1〜40)に振り分けます。

# ワークスペースID = レイヤー番号(0-4) × 8 + ギア番号(1-8)
ws=$((layer * 8 + number))
hyprctl dispatch workspace "$ws"

これにより、同じ「1速」に入れても、現在が「Midレイヤー」なら「ワークスペース17」に移動する、といった挙動を実現しています。

3. Waybarとの連携

現在のレイヤー状態が分からないと迷子になるため、レイヤー名をファイルに書き出し、Waybarのカスタムモジュールでリアルタイム表示させています(signal機能を使用して即座に更新)。


まとめ

「高い左手デバイスが買えないから、もっと高いシフターを使った」 という本末転倒な話でしたが、結果的に非常に満足度の高いシステムになり、おまけに大学合格まで付いてきて幸せになれました。
「普通じゃない作業環境を作りたい」 という方に、ぜひおすすめです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?