はじめに
この記事は、YouTubeでスペースキーによる動画の一時停止/再開ができなくなって困った人のためにAutoHotkeyのスクリプトによる代替策を紹介するものです。
本記事の対象者
- YouTubeでスペースキーが効かなくなった方。
- どうしてもスペースキーで動画の一時停止/再開をしたい方。
経緯
2023年11月1日頃までに、YouTubeでスペースキーによる動画の一時停止/再開ができなくなりました。
そこでTampermonkeyのユーザースクリプトを作って、スペースキーを押したらビデオをクリックするようにしました。
ところがそのTampermonkeyのユーザースクリプトが動かなくなったので、2024年02月10日にAutoHotkey(v1)のスクリプトを作りました。
その後AutoHotkey(v2)が今後の標準になることが分かったので、2024年03月30日にAutoHotkey(v2)のスクリプトに作り替えました。
AutoHotkey(v2)のスクリプト
次はWindowsのフリーソフトであるAutoHotkey(v2)のスクリプトです。
Google ChromeとFirefoxに対応します。また全画面に対応します。
;タイトルの一部に「YouTube」を含み、実行ファイルがchrome.exeの場合。
;chrome.exeやfirefox.exeでないなら修正が必要です。AutoHotkeyのWindow Spyを動かしてahk_exeの値を確認してください。
#HotIf WinActive("YouTube ahk_exe chrome.exe")
Space:: {
b_WS_CAPTION := WinGetStyle() & 0xC00000
if not b_WS_CAPTION {
/**
* 全画面(タイトルバーがない)の場合、全画面を終了しないようにエスケープキーを送信しません。
*/
Send "k"
return
}
;スペースキーが押されたらKキーを押します。
;Altキーが入ったときのためだけではなく、テキストボックスにフォーカスがあり検索候補のポップアップが出た状態でアドレスバーにフォーカスがあるときにも対応します。
Send "{Esc}"
Sleep 100
Send "{Esc}"
Sleep 100
Send "{Esc}"
Sleep 100
Send "k"
}
;タイトルの一部に「YouTube」を含み、実行ファイルがfirefox.exeの場合。
#HotIf WinActive("YouTube ahk_exe firefox.exe")
Space:: {
b_WS_CAPTION := WinGetStyle() & 0xC00000
if not b_WS_CAPTION {
Send "k"
return
}
;Firefoxではエスケープキーでアドレスバーからフォーカスを外せないので工夫します。
;Ctrl+Kを押したときにアドレスバーの下に現れる「今回だけ使う検索エンジン」を非表示にするには、about:preferences#search の検索ショートカットで代替検索エンジンをすべてオフにしてください。
Send "^k"
Sleep 100
Send "{F6}"
Sleep 100
Send "k"
}
#HotIf
AutoHotkey(v1)のスクリプト
;タイトルのマッチ方法を中間一致にする。
SetTitleMatchMode,2
;タイトルの一部に「YouTube」を含み、実行ファイルがchrome.exeの場合。chromeでないならスクリプト要修正。
#IfWinActive,YouTube ahk_exe chrome.exe
Space::
;スペースキーが押されたらKキーを押す。
Send, {K}
Return
;以降の条件を無しに設定。
#IfWinActive
Tampermonkeyのユーザースクリプト
ブラウザの拡張機能Tampermonkeyを入れて次のユーザースクリプトを追加してください。
現在このスクリプトは動きません。
// ==UserScript==
// @name Youtube Fix Space Key
// @namespace http://tampermonkey.net/
// @version 1.0
// @description YouTubeでスペースキーが効かないのでスペースキーが押されたら動画をクリックする。
// @author Query Kuma
// @match https://www.youtube.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
console.log("Youtube Fix Space Key");
let E_window_keydown = (e) => {
if (e.code !== 'Space') {
return;
}
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
let e_video = document.querySelector('video');
e_video.click();
console.log('Spaceキーが押されたのでvideoをクリックしました。');
};
window.removeEventListener('keydown', E_window_keydown, true);
window.addEventListener('keydown', E_window_keydown, true);
/**
* keydownイベントにuseCapture(true)をつけるだけでは足りなかったのでkeyupイベントを無効化する。
*/
let E_window_keyup = (e) => {
if (e.code !== 'Space') {
return;
}
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
console.log('keyupイベントのSpaceキーを無効化しました。');
};
window.removeEventListener('keyup', E_window_keyup, true);
window.addEventListener('keyup', E_window_keyup, true);
}());
さいごに
YouTubeでTampermonkeyのスクリプトが動かなくなったとき、スペースキーをやめてKキーを使おうと思いました。
しかしどうしてもスペースキーで動画の一時停止/再開をしたかったので、AutoHotkeyのスクリプトをつくりました。
Alt+Tabによるウィンドウ切り替えからのスペースキーによる動画の一時停止/再開を左手だけでできます。
どうしてもスペースキーで動画の一時停止/再開をしたい方の役に立てば幸いです。