マウス入力機能

今回は、Windows Terminalの最新プレビュー版(バージョン0.10)に導入されたマウス入力機能を取り上げておく。この機能はたしかに便利で、場合によってはこの機能をシームレスに使っていて、機能が追加されたことにすら気が付かないかもしれない。しかし、ターミナル操作に慣れてきたら、ちょっとした違和感と感じると思う。

ターミナルアプリケーションにおけるマウス入力機能とは、マウスを使った操作(クリックやドラッグ、ドロップ、ホイールマウスの操作など)を入力として解釈するというもので、これまでキーボードで操作する必要があった部分をマウスで操作することを可能にする。この機能が便利な場面はいくつもあるが、逆にイライラを招くこともある。

マウス入力機能が無効になっていれば、マウスによるテキストの選択や操作はターミナルアプリケーションそのものに対する操作となる。これが、マウス入力機能が有効になっていると、ターミナルで動作しているシェルやCUIソフトウェアへの入力として機能してしまう。その結果、場合によっては操作が混乱するほか、イラ立ちの原因にもなる。

もし、マウスを使ったテキスト選択とコピー&ペーストがうまく機能しなくなったと感じているなら、Windows Terminalプレビュー版バージョン0.10で追加されたマウス入力機能が原因の可能性がある。

以下、この機能がどのように動作するか見ていくとともに、従来の動作をさせるための方法を説明する。

Vimの場合

Vimは、デフォルトの設定ではマウス入力に対応していない。例えば、次のスクリーンショットは15行目をマウスでクリックしたあとの状態だが、カーソルは1行目にあるものの、マウスのクリック位置は15行目に表示されている。マウスでターミナルをクリックしても、その場所にVimのカーソルが移動するといったことは起こらない。

  • マウス機能が有効になったVim

    マウス機能が有効になったVim

Vimでは、マウス入力機能をVim側で使用するかどうかを設定することができる。例えば、次のスクリーンショットのように、コマンドラインモードで「set mouse=a」と設定を変更すれば、主要モードのすべてでマウス入力機能を利用できるようになる。

  • Vimのマウス入力機能を有効化

    Vimのマウス入力機能を有効化

先ほどと同じ15行目をマウスでクリックすると、次のようにVimのカーソルが15行目のマウスをクリックした場所へ移動するようになる。Vimがターミナルアプリケーションに対するマウス入力をVimへの入力として解釈して動作するためだ。

  • マウスクリックに反応するようになったVim

    マウスクリックに反応するようになったVim

この状態でマウスのホイールをくるくる上下に動かすと、Vimのスクリーンがページアップしたりページダウンするようになる。

  • マウスのホイール操作でページアップおよびページダウンするVim

    マウスのホイール操作でページアップおよびページダウンするVim

このようにCUIベースのソフトウェアにおいてマウスを利用できるようになる。

Midnight Commanderの場合

ターミナルでマウスを使うアプリケーションとしては、Midnight Commanderが取り上げられることが多い。Midnight ManagerはCUIベースのファイルマネージャの1つ。MS-DOSなどが主に使われていた時代に流行ったスタイルのファイルマネージャで、ターミナルでありながら視覚的なファイル管理ができるという特徴がある。次のスクリーンショットが、Midnight Commanderの実行例だ。

  • Midnight Commanderの実行サンプル

    Midnight Commanderの実行サンプル

このように、ターミナルをGUI風に利用するソフトウェアは、操作するためのショートカットキーが似ていることが多い。このため、この手のソフトウェアの使用例があれば、マニュアルを読まなくても何となく操作できる。ただし、その経験がなければ、このソフトウェアは使い物にならない可能性が高い。

例えば、次のスクリーンショットはF1キーを押してヘルプを表示させたところだ。この手のソフトウェアでは、F1でヘルプを表示できることが多い。知っていれば、ここから基本となる操作を知ることができるが、知らなければMidnight Commanderの中だけで操作を学ぶのは相当苦労すると思う。

  • F1キーでMidnight Commanderのヘルプを表示させたところ

    F1キーでMidnight Commanderのヘルプを表示させたところ

ターミナルアプリケーションのマウス入力機能はこうしたソフトウェアで力を発揮する。例えば、次のスクリーンショットにあるように、Midnight Commanderの上部にある表示はメニューなのだが、マウス入力機能が存在していれば、このメニューをクリックすることでメニューを開くことができる。

  • Midnight Commanderの上部はメニュー

    Midnight Commanderの上部はメニュー

次のスクリーンショットはクリックした後だ。メニューが展開されたことを確認できる。

  • マウスクリックでメニューを展開したところ

    マウスクリックでメニューを展開したところ

Midnight Commanderは一通りショートカットキーを覚えた方がその真価を発揮するのだが、使い出した当初はマウス入力が機能したほうが便利ではある。こうした面において、マウス入力機能は効果を発揮する。

元に戻したいならShiftキーを押してマウスを使う

ターミナルアプリケーションのマウス入力機能が有効になって困るのは、これまでと動作が変わってしまう点にある。例えば、次のスクリーンショットは、マウス入力機能が有効になっていない状態でテキスト選択をした状態だ。次のように選択したテキストが、ターミナルアプリケーション上で選択されていることがわかる。

  • これまで通りのテキスト選択

    これまで通りのテキスト選択

これをマウス入力機能が有効になったWindows Terminalで、マウス入力機能を有効にしたVimで実行すると、次のスクリーンショットになる。これはターミナル上のテキスト選択ではなく、Vimのビジュアル選択をマウス経由で行ったという内容になっている。マウスの操作がVimのビジュアル選択として機能している。

  • マウス入力がVimの操作になっている

    マウス入力がVimの操作になっている

これでは困るケースもある。従来どおりにターミナル上のテキスト選択としてマウスを使いたいということもある。VimであればVimのマウス入力機能を無効化すればよいのだが、そういったことができないアプリケーションもある。

その場合はShiftキーを押しながら、マウスを操作すればよい。次のスクリーンショットは、マウス入力機能が有効になったVimとWindows Terminalで実行したものだが、Shiftキーを押しながらマウスでテキスト選択を行っており、Vimに対する入力としてではなく、Windows Terminalに対するテキスト選択として機能していることを確認できる。

  • Shiftキーを押しながらマウスを操作すると以前と同じ処理となる

    Shiftキーを押しながらマウスを操作すると以前と同じ処理となる

これは知っておいたほうがよいだろう。特にスクリーンに表示されたテキストをコピーしたい時はShiftキーを押しておくと無難、といった感じで覚えてしまうとよいかもしれない。

マウスの挙動の違いに気をつけて

ほとんどマウスを使わないなら、この機能の変化の影響を受けることはない。しかし、Windows Terminal上に表示されているテキストをコピーするために、Windows Terminalを使っている場合は注意が必要だ。場合によっては、これまでのようにテキスト選択ができなくなっている可能性がある。そうした場合は、Shiftキーを押しながら選択すればよい。この機能を覚えておこう。