Macのcommand / optionと矢印キーのキーバインドをWindowsでも使えるようにするアプリを作った

自分は基本的に家ではデスクトップのWindows、外ではMacbook ProというPCの使い分けをしています。

趣味としても仕事としてもVSCodeなどのコードエディターを開いてプログラムを書く機会(=文字を書く機会)が多く、その中で「行頭に移動」「1行選択」などの動作をしたいことが多々あります。

これらの動作をする場合、WindowsだとHomeキーを押して「行頭に移動」することができ、そこからShiftEndを押すと「1行選択」することができます。

ただ、HomeとEndってホームポジションから離れてる位置にあるので、ご覧のように押しに行きにくいんですよね。

では、Macでこの動作をする場合は何のキーを使うかというと

Command左矢印で「行頭に移動」することができ、Commandは押したままShift右矢印で「1行選択」することができます。

つまり、MacのCommand左矢印HomeCommand右矢印Endのキーバインドとして最初から使えるようになっているわけです。

これだと、ホームポジションからの手の移動量も少ないので動作にかかるストレスを軽減することができます。このキーバインドは割と頻繁に使うので差は小さかれど結構重要です。

Windowsでも同じことが出来ないかと調べてみたのですが、それを実現できるアプリが全然見つからなかった(一応あるにはある)のと、久々に.NET FrameworkとC#でWindowsアプリ作りたいと思っていたので自作することにしました。

小6~中2ぐらいは.NET FrameworkとC#を使ってよくWindowsアプリ作ってたんですけどね。いつの間にか.NET Frameworkと.NET Coreが統合されて「.NET」っていう名称になってるし、「PCソフト」と呼ばれていたものが「PCアプリ」と呼ばれる時代になっていました。

少し話が逸れましたが、この記事では今回作ったソフト…じゃなくてアプリである「MacHomeDown」の使い方を説明します。

ロゴも作りました。

ダウンロード

GitHubのReleasesから最新バージョンのzipファイルをダウンロードします。

ダウンロードする時にこんな警告が出てしまうのですが、怪レいものは入れていないので「継続」をクリックしてダウンロードします。

このアプリはインストールする必要は無く、exeファイルを実行するとタスクトレイに常駐するようになります。

スタートアップ登録したい方はこの記事を参考にしてみてください。MacHomeEnd.exe.configなどのファイルは全て動作に必要なものなのでexeファイルと同じ場所に置くようにしてください。

使い方

MacHomeDownが起動している状態でCtrl矢印キーを押すと行頭や行末に移動するようになります。

MacのCommandがWindowsのCtrl相当なのでCtrlと矢印キーという組み合わせにしています。

また、Alt矢印キーを押すと単語の頭や単語の末尾に移動します。このキーバインドもMacに存在するもので、Macの場合optionキーと矢印キーで同じ動作をします。(WindowsでCtrlと矢印キーを押すとデフォルトではこの動作になる)

個人的にこのキーバインドはほとんど使わないのですが一応実装しておきました。

タスクトレイのアイコンを右クリックすると、それぞれのキーバインドを有効にするかどうか切り替えることができるコンテキストメニューが出現します。

余談

小6~中2にWindowsソフトを作っていたという話をしました。あれからはずっとWebを触ってきたので.NET FrameworkやC#とは無縁の生活を送っていたのですが、7年以上経った今でも普通に開発することができました。むしろ今のほうが綺麗なコードを書けていると思いますw

当時は、順次進行・条件分岐・繰り返しの3つの基本構造は自分で考えて、あとはそこにネットで調べたコピペのコードを流し込んでいくというよくある初心者のプログラミングをしていたのですが、あれからオブジェクト指向に対する理解も深まり、今回はネットでコードを拾うというベースは変わらずとも、ネットで拾ったコードは変えずに1つのファイルとして起こして、そこからカスタムしたい部分だけ独自実装クラスでオーバーライドして…みたいな実にオブジェクト指向らしいプログラミングをしました。

あとは昔は毛嫌いしてた公式のドキュメントを今回は開発中ちゃんと読んでいたのも進歩かなと思います。

タスクトレイアイコンを右クリックした時のコンテキストメニューを実装する際、ContextMenuStripというクラスの公式ドキュメントを読んでどんなプロパティーやメソッドがあるのか調べたりしていました。

コメント

タイトルとURLをコピーしました