LoginSignup
1
0

YouTubeでスペースキーが動かない時のユーザースクリプト対処

Last updated at Posted at 2023-11-01

はじめに

この記事は、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によるウィンドウ切り替えからのスペースキーによる動画の一時停止/再開を左手だけでできます。

どうしてもスペースキーで動画の一時停止/再開をしたい方の役に立てば幸いです。

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0