Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

仮想デスクトップはいらない? 〜 ショートカットキーの設定が悪かった

仮想デスクトップを使えばマルチディスプレイができるけれど…

Windows の仮想デスクトップを使うと、マルチディスプレイでできることと同様のことが 1つのディスプレイでできるようになります。

たとえば、プログラムの開発環境の画面と、参考にする資料を表示する画面といった構成にすることができます。

ただ、 既定では仮想デスクトップを切り替える操作が難しい という問題があります。数か所をクリックする、または 3つのキーを同時に押さなければなりません。これではパタパタ切り替えられず、マルチディスプレイのように使うことはできません。

そこで、マウスの中ボタンだけで切り替えるようにしたところ劇的に便利になったので、その設定方法を紹介します。

マウスの中ボタンだけで仮想デスクトップを切り替える方法

仮想デスクトップを切り替えるボタンをマウスの中ボタンだけにカスタマイズするには、中ボタンを「Windows キーと Ctrl キーと右または左のカーソルキーの 3つのキーを同時に押すこと」にマッピングさせることです。なお、ここで紹介する方法は、AutoHotkey のインストールが必要になります。

AutoHotkey をインストールします

  • https://www.autohotkey.com/download/ >> Download AutoHotkey Installer
  • ダウンロードしたファイル(例:AutoHotkey_1.1.33.10_setup.exe)を開きます
  • Express Installation
  • Exit

ちなみに、 https://www.autohotkey.com/ の Is It Safe? をクリックするとノートンのサイトに移動して安全性のチェック結果が表示されます。 norton.com はオレオレサイトではないので信頼できるでしょう。

AutoHotkey.ahk ファイルを作ります

デスクトップなどに AutoHotkey.ahk ファイルを新規作成します:

  • デスクトップなどを右クリック >> 新規作成 >> AutoHotkey Script >>(ファイル名を変更)

AutoHotkey.ahk ファイルをメモ帳で開きます:

  • AutoHotkey.ahk ファイルを右クリック >> Edit Script

下記の内容をファイルにコピーして「保存」します:

MButton::
    SpecialDesktopNum := 2
    SpecialDesktopIndex := SpecialDesktopNum - 1
    ProcessID := DllCall("GetCurrentProcessId", "UInt")
    DllCall("ProcessIdToSessionId", "UInt", ProcessID, "UInt*", SessionID)
    RegRead, CurrentDesktopID, HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\%SessionID%\VirtualDesktops, CurrentVirtualDesktop
    RegRead, DesktopIDs, HKEY_CURRENT_USER, SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops, VirtualDesktopIDs
    DesktopIdLength := StrLen(CurrentDesktopID)
    IsSpecialDesktop := false
    If (StrLen(DesktopIDs) >= SpecialDesktopIndex * DesktopIdLength) {
        SpecialDesktopID := SubStr(DesktopIDs, SpecialDesktopIndex * DesktopIdLength + 1, DesktopIdLength)

        If (CurrentDesktopID == SpecialDesktopID) {
            IsSpecialDesktop := true
        }
    }

    If (IsSpecialDesktop) {
        SendEvent {LWin down}{LCtrl down}{Left  down}{LWin up}{LCtrl up}{Right up}
    } Else {
        SendEvent {LWin down}{LCtrl down}{Right down}{LWin up}{LCtrl up}{Right up}
    }
    return

WheelLeft::
    SendEvent {LWin down}{LCtrl down}{Left  down}{LWin up}{LCtrl up}{Right up}
    return

WheelRight::
    SendEvent {LWin down}{LCtrl down}{Right down}{LWin up}{LCtrl up}{Right up}
    return

AutoHotkey.ahk ファイルの内容を有効にします

AutoHotkey.ahk ファイルをダブルクリックします。

有効になったら、Windows の通知領域に 緑色の H のアイコン が表示されます。

この状態でマウスの中ボタンを押せば、仮想デスクトップを切り替えることができます。

仮想デスクトップをトグルで切り替えるしくみ

上記 AutoHotkey.ahk ファイルの動作は厳密には次のようになっています。

  • 2番目の仮想デスクトップが表示されているときは、左側の仮想デスクトップに切り替えます
  • それ以外のときは、右側の仮想デスクトップに切り替えます

この動作によって、マウスの中ボタンを押すと、1番目の仮想デスクトップと 2番目の仮想デスクトップを交互に(トグルで)切り替えるという動作になるわけです。

また、ホイールを左または右に傾けることができるマウスを使っているときは、

  • ホイールを左に傾けると、左側の仮想デスクトップに切り替えます
  • ホイールを右に傾けると、右側の仮想デスクトップに切り替えます

ホイールを傾ける機能を仮想デスクトップの切り替えに割り当てないようにしたい場合は、 AutoHotkey.ahk ファイルを右クリックして Edit Script を選び、最後にある

WheelLeft::
    SendEvent {LWin down}{LCtrl down}{Left  down}{LWin up}{LCtrl up}{Right up}
    return

WheelRight::
    SendEvent {LWin down}{LCtrl down}{Right down}{LWin up}{LCtrl up}{Right up}
    return

の部分を削除して「保存」して AutoHotkey.ahk ファイルをダブルクリックして Yes を選びます。

リモート デスクトップ がある仮想デスクトップから切り替える方法

もし、仮想デスクトップに リモート デスクトップ を表示しているときは、以下のように設定しなければ、マウスの中ボタンを押しても「Windows キーと Ctrl キーと右または左のカーソルキーの3つのキーを同時に」押しても、隣の仮想デスクトップに切り替えることはできません。なぜなら、Windows キーが押された信号がリモート(接続先)に送られてしまうからです。

リモート デスクトップ 接続 >> オプションの表示(左下)>> ローカル リソース(タブ) >> キーボード(中央)>> このコンピューター

ただし、この設定をしている場合、Windows キーを使った ショートカット キー が接続先に対して使えなくなります。

設定を戻すときは、「全画面表示の使用時のみ」に戻します。

Windows を再起動したときも有効にする設定

Windows を再起動すると AutoHotkey が起動していない状態になり、マウスの中ボタンを押しても仮想デスクトップが切り替わらなくなってしまいます。

Windows を再起動したときに自動的に AutoHotkey が起動してAutoHotkey.ahk ファイルの内容が有効になるように設定するには、スタートアップ フォルダー に AutoHotkey.ahk ファイルへのショートカットを作ります。

  • Windows キーを押しながら R キー >> shell:startup(と入力)>> OK
  • 開いたフォルダーに AutoHotkey.ahk ファイルを右ドラッグ&ドロップ >> ショートカットをここに作成

3つ以上の仮想デスクトップがあるとき

AutoHotkey.ahk ファイルの 2行目に書かれている

SpecialDesktopNum := 2

は、「左側の仮想デスクトップに切り替えるのは 2番目の仮想デスクトップが表示されているとき」という意味です。

もし、3つ目の仮想デスクトップを作った場合、3つ目の仮想デスクトップが表示されているときに左側の仮想デスクトップに切り替えるようにするには、AutoHotkey.ahk ファイルを右クリックして Edit Script を選び、

SpecialDesktopNum := 3

に変えて「保存」して AutoHotkey.ahk ファイルをダブルクリックして Yes を選びます。

押すボタンをカスタマイズするとき

AutoHotkey.ahk ファイルの 1行目に書かれている

MButton::

は、「マウスの中ボタンが押されたとき」という意味です。

ですので、ここを変えれば、仮想デスクトップを切り替えるときに押すボタンを変えることができます。

たとえば、MButton:: を Tab:: に変えて「保存」して AutoHotkey.ahk ファイルをダブルクリックして Yes を選べば、キーボードの Tab キーを押したときに仮想デスクトップが切り替わるようになります。

Tab::

キーボードの Insert キーを押したときに仮想デスクトップが切り替わるようにするには、同様に Insert:: に変えます。

Insert::

その他のキーについては、AutoHotkey の公式資料を参照してください。 http://ahkwiki.net/KeyList

仮想デスクトップを切り替える既定の方法

仮想デスクトップを切り替える既定の方法もおさらいしておきましょう。

Windows 10 では何もインストールせずに仮想デスクトップを使うことができます。 タスク ビュー ボタン(スタート ボタンの2つ右)を押すか、Windows キーと Tab キーを同時に押すと、タスク ビュー が表示されます。その上側に表示されるデスクトップの一覧から表示したいデスクトップをクリックすると、仮想デスクトップを切り替えることができます。

タッチパッドが付いている PC であれば 指3本をタッチパッドに触れさせて左または右になぞる だけでも切り替えることができます。この方法は慣れるとほぼ無意識にできるので、ここで紹介する方法を使うメリットはあまりないかもしれません。ちなみに mac でも同じ操作方法が使えます。しかも、ウィンドウの左上にある緑色のボタンを押して最大化すると自動的に新しい仮想デスクトップに配置されるので、すぐにタッチパッドをなぞるだけで最大化したウィンドウと最大化していないいくつかのウィンドウがあるデスクトップを切り替えることができます。

しかし、タッチパッドがなければ仮想デスクトップをほぼ無意識で切り替えることは難しくなります。先ほど説明したように タスク ビュー を表示して仮想デスクトップを選ぶか、 Windows キーと Ctrl キーと右または左のカーソルキー の3つのキーを同時に押さなければなりません。また、左を押すべきか右を押すべきかを迷うこともよく起きます。それでは顔の向きを変えるだけで隣の画面を見ることができるマルチディスプレイよりも劣ってしまいます。

ちなみに、ウィンドウを別の仮想デスクトップに移動するには、タスク ビュー を表示して、対象のウィンドウを仮想デスクトップにドラッグ&ドロップします。MoveToDesktop をインストールすれば Windows キーと Alt キーと右または左のカーソルキー の 3つのキーを同時に押すことでも移動できるようになります。 https://github.com/Eun/MoveToDesktop

仮想デスクトップのメリット

編集用のウィンドウと参照用のウィンドウの 2枚だけなら Alt + Tab でパタパタ切り替えられますが、編集または参照するウィンドウが増えたときは仮想デスクトップをパタパタ切り替えたほうが便利です。

隣の画面が見たいと思った瞬間にほぼ無意識で切り替えることができるので、マルチディスプレイと同じ感覚で使うことができます。また、切り替えるときの フリック アニメーション がとても気持ちいいのでぜひ体験してみてください。他のキーで切り替えるように設定することもできます。

ちなみに、仮想デスクトップのほうがマルチディスプレイよりも優れている点があります。サンプル コード などをコピー&ペーストしたいときに隣の画面まで マウス カーソル を移動させる必要はありません。また、2つの内容を見比べたいときに隣の画面まで視線を大きく動かすことを何度も繰り返す必要はありません。もちろん、物理的なディスプレイを追加する必要はありませんしスタバでも使えます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?