はじめに
こんにちは、てすとです!
今回は、数年前に勢いで作ったホットキー送信ツールを、もう一度要件から考えて作り直していこうと思います。
第1回目では、開発のきっかけや要件をまとめて整理してみました。
背景と課題
きっかけは、当時なんとなく他のOSも触ってみたいなーと思ってインストールしたLinux環境で、初めてVimを触ったときでした。
キーボードだけで、ホームポジションを崩さずにカーソル操作できる便利さを知って、「普段の作業にも取り入れたいな」と思ったのが始まりです。
最初は自分のパソコンでフリーソフト(ほにゃららHotkey)を使ってホットキーを組んで使ってたんですが、そのうち職場でも使いたくなってきました。
しかし、外部ツールのインストールには申請が必要で結構めんどくさい+クローズド環境。
それなら、勉強がてら自分で作ってみるか! と思って作り始めました。
(※当時はPowerShellもC#も触ったことありません。完全に勢いです。)
今回は、当時作った PowerShell × C# 版のツールの発想をベースに、もう少し実用的に改修していきます。
要件
機能要件
- 複数キー押下(最大3キー)に対応して、任意のホットキーが送信できること
- ホットキーの設定は、プログラムを修正せずに外部ファイル(json)で柔軟に変更できること
非機能要件
- タスクトレイに常駐し、邪魔にならないこと
- 追加インストールなしで、Windows 10環境でそのまま動作すること
※ 動作環境については以下参照
動作環境
今回はクローズド環境での使用を想定しており、
Windows 10 22H2(64bit)の初期インストール状態を基準としています。
手持ちの環境で確認したところ、初期インストール時点での構成は以下の通りです。
- OS:Windows 10 22H2(64bit)
※ まもなくサポート終了予定ですね - PowerShell:5.1
- .NET Framework:4.8
※ PowerShell 5.1は .NET Framework に依存しているため、合わせて記載しています
技術選定
- PowerShell × C# 構成
Windows標準環境だけで動かしたかったため、インストール不要な組み合わせを選びました。
仮想キー送信のような細かい操作は、C#(+Win32API)を使って対応することにしました。
構成と処理の流れ
ツールの処理の流れを、ざっくりまとめてみます。

- ユーザがホットキーを入力
- ツール(PowerShell,C#)がその入力を検知
- 外部ファイル(json)の設定に従って、対応するキー送信を実行
vimライクなカーソル移動のホットキー設定だと以下のようなイメージです。
【無変換】+【H】 => 【←】
【無変換】+【J】 => 【↓】
【無変換】+【K】 => 【↑】
【無変換】+【L】 => 【→】
まとめ
当時はなんとなくの勢いで作っていましたが、こうして要件を整理しながら進めてみると、めんどくさい難しいものですね。
昔はAIもなかったので、色々調べながら手探りで実装していたのを思い出しました。
今は便利になりましたね。(※AIは活用していきたい派です)
次回は「設計&実装編」になります!
それではまた!
コメント