Windows 10で最大10台のデスクトップ用にこれを実現するオートホットキー用のスクリプトを作成しました。
動作させる方法:
autohotkeyをダウンロードしてインストールします。以下のコードをコピーしてメモ帳に貼り付け、ファイル拡張子.ahkで保存します。
Windowsの起動時に実行されるように、スタートアップファイルにこのファイルのショートカットを作成することをお勧めします。
デフォルトのホットキー:
デスクトップの切り替え:WIN +デスクトップ番号(0 =デスクトップ番号10)
新しいデスクトップ:Ctrl + Win + D
デスクトップを閉じる:Ctrl + Win + F4
デスクトップ状態の表示:WIN + '
重要:
スクリプトがこれらのホットキーをリッスンしてデスクトップの現在数と合計数を把握するため、デスクトップを開いたり、閉じたり、変更したりするには、ホットキーのみを使用する必要があります。
マウスでWIN + TABメニューを使用してデスクトップを作成、閉じる、または変更すると、スクリプトは機能しなくなります。再び機能させるには、最初の2行を編集して、デスクトップの現在の状態を反映する必要があります。(デスクトップ数/現在のデスクトップ)
これは、現在のデスクトップの概要としてWIN + TAB画面を使用できないという意味ではありません。実際にホットキーと組み合わせて使用して、デスクトップを整理できます。はい、Windowsタスクビューアーが開いているときでもホットキーは機能します。(WIN + TAB)マウスを使用しないでください!!!
また、Windowsの起動後にスクリプトがロードされるのを待ってから、新しいデスクトップを作成してください。そうしないと機能しません。これには、起動プログラムの数によっては少し時間がかかる場合があります。
さて、スクリプトをデスクトップの状態と再同期しやすくするために、もう1つ追加しました。スクリプトがデスクトップが存在すると信じている状態を表示するホットキーがあるので、スクリプトに合わせてマウスでデスクトップを調整するだけで、すべてが再び同期されます!スイスのキーボードを使っている私にとっては、 '?キーは0の隣にあり、?ただし、他のキーボードでは、0/10(# 'で始まる)のホットキーの直後の行を好きなものに変更することで簡単に変更できます。
実際、気付いたのは…。デスクトップカウントが正しい限り、新しいデスクトップを作成すると現在のデスクトップの値が自動的に再同期されます。
(;で始まる行はコメントであり、スクリプトには影響しません)
コード:
#NoTrayIcon
;If the script stops working:
;Change the following values to reflect your current desktop state and reload the script.
;Remember to change them back to 1 after reloading the script if you have it set to start with Windows
desktopcount := 1
currentdesktop := 1
;You can change the hotkeys for creating, closing, and switching desktops bellow.
;The current hotkeys are CTRL+WIN+D for new desktop, CTRL+WIN+F4 to close desktop
;and WIN+NUMBER for switching desktops.
;For example, to change the hotkey for new desktop replace ^#D bellow with the desired hotkey.
;Refer to the autohotkey documentation for a full list of symbols refering to modifier keys,
;as you can see ^ is CTRL and # is WIN key.
;If you wanted to change the switch desktop from WIN key to CTRL for example you would have
;to replace the # before each number to a ^
^#D::NewDesktop()
^#F4::CloseDesktop()
#1::SwitchDesktop(1)
#2::SwitchDesktop(2)
#3::SwitchDesktop(3)
#4::SwitchDesktop(4)
#5::SwitchDesktop(5)
#6::SwitchDesktop(6)
#7::SwitchDesktop(7)
#8::SwitchDesktop(8)
#9::SwitchDesktop(9)
#0::SwitchDesktop(10)
#'::MsgBox Desktop Count = %desktopcount%`nCurrent Desktop = %currentdesktop%
;Do not change anything after this line, unless you know what you are doing ;)
;-----------------------------------------------------------------------------------------------
SwitchDesktop(desktop)
{
global desktopcount
global currentdesktop
desktopdiff := desktop - currentdesktop
if (desktop > desktopcount)
{
return
}
if (desktopdiff < 0)
{
desktopdiff *= -1
Loop %desktopdiff%
{
Send ^#{Left}
}
}
else if (desktopdiff > 0)
{
Loop %desktopdiff%
{
Send ^#{Right}
}
}
currentdesktop := desktop
}
NewDesktop()
{
global desktopcount
global currentdesktop
if (desktopcount > 9)
{
return
}
desktopcount ++
currentdesktop := desktopcount
Send ^#d
}
CloseDesktop()
{
global desktopcount
global currentdesktop
desktopcount --
if (currentdesktop != 1)
{
currentdesktop --
}
Send ^#{f4}
}