非公開 WASD操作導入

  • /*
     * @title WASD操作導入
     * @description WASD操作が出来るようになるぞ!
     * @private
     */
    javascript:(function(){
      // 既に適用済みなら何もしない
      if (window.__wasdPatchApplied) {
        alert('WASD操作はすでに有効です!');
        return;
      }
    
      // 既存の keydown / keyup リスナーを上書きせず、
      // WASD → ArrowKey として変換するイベントを追加する方式
      const WASD_MAP = {
        'KeyW': 'ArrowUp',
        'KeyA': 'ArrowLeft',
        'KeyS': 'ArrowDown',
        'KeyD': 'ArrowRight',
      };
    
      function fakeArrowEvent(type, arrowCode, original) {
        const ev = new KeyboardEvent(type, {
          code: arrowCode,
          key: arrowCode.replace('Arrow', ''),
          bubbles: true,
          cancelable: true,
          repeat: original.repeat,
        });
        // 元のイベントをキャンセルして矢印キーイベントを発火
        original.preventDefault();
        window.dispatchEvent(ev);
      }
    
      window.addEventListener('keydown', function(e) {
        const arrow = WASD_MAP[e.code];
        if (arrow) fakeArrowEvent('keydown', arrow, e);
      }, true);  // capture phase で先に捕まえる
    
      window.addEventListener('keyup', function(e) {
        const arrow = WASD_MAP[e.code];
        if (arrow) fakeArrowEvent('keyup', arrow, e);
      }, true);
    
      window.__wasdPatchApplied = true;
      console.log('[WASD Patch] WASD操作を有効化しました');
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2026/06/28 23:37:21 - 06/28