【ahk v2】vscodeで実行する方法メモ

拡張機能は下記3つをインストール。
AHK++ (AutoHotkey Plus Plus)
AutoHotkey v2 Language Support
vscode-autohotkey-debug

①②だけインストールしてF5でデバッグしようとすると下記メッセージが表示される。

AutoHotkey interpreter not found
update v1: File > interpreterPath


Ctrl+Alt+F9なら実行できるがF5で実行する方法が結局わからなかった。③もインストールしたらF5で実行できるようになった。①の説明欄でも③でのデバッグを推奨してるっぽい。

【ahk v2】数字キーを押したときに常時半角で入力する方法

テンキーはwindowsの設定で常時半角モードにできる。ファンクションキーの下にある数字キーはそれができない。

個人的に数字を全角で入力する機会は滅多に無いので常時半角で入力できるようにahk v2で改善した。

#Requires AutoHotkey v2.0
#SingleInstance Force

;文字コードは『UTF-8(BOM無し)』でOK。『シフトJIS』を使うとコメントアウトした全角文字でもプログラムが止まったりする

;↓数字キーを常時半角で入力できるようにする
1::SendText("1")
2::SendText("2")
3::SendText("3")
4::SendText("4")
5::SendText("5")
6::SendText("6")
7::SendText("7")
8::SendText("8")
9::SendText("9")
0::SendText("0")
Numpad1::SendText("1")
Numpad2::SendText("2")
Numpad3::SendText("3")
Numpad4::SendText("4")
Numpad5::SendText("5")
Numpad6::SendText("6")
Numpad7::SendText("7")
Numpad8::SendText("8")
Numpad9::SendText("9")
Numpad0::SendText("0")

autoHotKey v2でnumlockをtabにする方法

スプレッドシートでのテンキー入力を便利にするため、numlockキーをtabに変更した。初めてahkを使用した。

v1の情報が多かったけどv2のコードをChatGPTに訊いたら教えてくれた。NumLock::Send "{Tab}"だけだとShift+numlockで本来のnumlock動作になってしまうのが個人的に罠だった。Shift+numlockでバックtab動作にするには+NumLockの指定も必要だった。

#Requires AutoHotkey v2.0
#SingleInstance Force

;文字コードは『UTF-8(BOM無し)』でOK。『シフトJIS』を使うとコメントアウトした全角文字でもプログラムが止まったりする

;↓NumLockにTabを割り当て
NumLock::Send "{Tab}"

;↓Shift+NumLockにShift+Tabを割り当て
+NumLock::Send "+{Tab}"

;本来のnumlock動作はAlt+numlockとかWin+numlockを押せばOK

//以上

spotify 歌詞 文字同期 方法 メモ

慣れたら1曲あたり15分とかで終わる。意外と楽しい

spotifyプレミアム会員になる。
iPhoneアプリのプチリリメーカーをインストールする。
 androidアプリでも恐らく問題ない。
 web版のプチリリメーカーもあるがmp3とかの音源ファイルが必須なので難易度が高い。iPhoneアプリだとspotifyと連携できるので音源ファイルの用意が不要。
③プチリリメーカーを開いてマイプロジェクト画面にて右下の『+』をタップ
④楽曲選択画面にて『Spotifyから探す』をタップ
⑤曲名を検索して文字同期を登録したい曲を選ぶ

<歌詞の確認>
⑥歌詞が表示されるので、誤字がないか、改行がおかしくないか、を軽く確認する。1行あたりの文字数制限があり元の歌詞が自動で改行されるため、改行位置が気持ち悪いときがある
⑦歌詞を編集するときは左下のペンのマークをタップ

<文字同期タイミングの設定>
⑧文字同期タイミングを設定するときは左下の指のマークをタップ
⑨再生ボタンをタップして、曲に合わせて歌詞をなぞっていけば設定される
 ※再生ボタンをタップしても曲が再生されないときはアプリ再起動すればok
 ※初期設定だと1行再生すると数秒戻るのでアプリ下部で『0s』にするとやりやすい
⑩曲の最後まで設定が終わったら右上の『保存』をタップ

<最終確認>
⑪左下の再生ボタンをタップして文字同期タイミングがおかしくないか確認
⑫問題なければ右上の『投稿』から投稿
⑬大体1日~2日後には登録されている印象。プチリリのヘルプによると「曲名」「アーティスト名」が一致してないと同期されないらしいので注意。spotifyから連携している場合は自動で入力されているので問題ないはず

ダブル右クリックとかディカプルクリックのイベント監視方法(javascript)

mouseupイベントを監視すればok。
e.button 0:左クリック 1:中央ボタン 2:右クリック
e.detail 直近のmouseup回数

左クリックの回数なら普通にclickイベントでもok。右クリックの回数はcontextmenuイベントでは数えられないのでmouseupで代用する。

↓ダブル右クリック(右ダブルクリック)

document.addEventListener('mouseup', function(e) {
    console.log("mouseupが発生しました! button:" + e.button + " detail:" + e.detail);
    /* e.button 0:左クリック 1:中央ボタン 2:右クリック */
    /* e.detail 直近のmouseup回数 */
    if(e.button == 2 && e.detail == 2) {
      console.log("ダブル右クリック");
    }
}, false);


↓ディカプルクリック

document.addEventListener('mouseup', function(e) {
    console.log("mouseupが発生しました! button:" + e.button + " detail:" + e.detail);
    /* e.button 0:左クリック 1:中央ボタン 2:右クリック */
    /* e.detail 直近のmouseup回数 */
    if(e.button == 0 && e.detail == 10) {
      console.log("ディカプルクリック");
    }
}, false);


//以上

ダブル右クリックでタブを閉じるchrome自作拡張機能

日課のポイ活でページを開いてすぐ閉じるのが少しでも楽になるように作った。 ×ボタンまでマウスカーソルを移動させたり、Ctrl+Wを押すのも地味に面倒だった。 本当は他ボタンマウスを買うのがベストだけど代用としてとりあえず作ってみた。

↓manifest.json

{
  "name": "closeTab(rightDoubleClick)",
  "description": "ダブル右クリックでタブを閉じる",
  "version": "0.0.1",
  "manifest_version": 3,
  
  "permissions": [
    "activeTab",
    "scripting",
    "tabs"
  ],
  
  "host_permissions": [
    "http://*/*",
    "https://*/*"
  ],
  
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ],
  
  "background": {
    "service_worker": "background.js"
  }
}


↓content.js

console.log("スタート!!");

document.addEventListener('mouseup', function(e) {
    console.log("mouseupが発生しました! button:" + e.button + " detail:" + e.detail);
    /* e.button 0:左クリック 1:中央ボタン 2:右クリック */
    /* e.detail 直近のmouseup回数 */
    if(e.button == 2 && e.detail == 2) {
      /* ↓backgroundにメッセージを送信(contentではtabsを使えないので。。。) */
      chrome.runtime.sendMessage({message: "content→background"}, function() {
        console.log("content→backgroundにメッセージ送信");
      });
    }
}, false);


↓background.js

/* ↓contentからメッセージを受信 */
chrome.runtime.onMessage.addListener((request, sender, sendResponse) =>{
  console.log(request.message);
  getCurrentTab().then((tab) => {
    chrome.tabs.remove(tab.id);
  });
});

/* 現在のタブを取得する 公式のコピペ→https://developer.chrome.com/docs/extensions/reference/api/tabs?hl=ja#get_the_current_tab */
async function getCurrentTab() {
  let queryOptions = { active: true, lastFocusedWindow: true };
  let [tab] = await chrome.tabs.query(queryOptions);
  return tab;
}


//以上