scrapboxになぜか存在しないカード新規作成ショートカット
最近scrapboxを使い始めてとても使い勝手が良くていいなあと思っていたのですが唯一不満なのがなぜか新規作成のショートカットが存在しないことでした。
カードを連続で何個も作成したいときにいちいちマウスに手をのばさなければならないので結構なストレスを感じていました。
調べてみても見つからないし、ないなら自分で作るの精神でショートカットを作成しました。
ショートカット作成には王道のautohotkeyを使用しました。これめっちゃ便利なのでほかのことにも使っていきたい。
autohotkeyのインストール
導入はこちらを参考にしました。
https://qiita.com/chr/items/47f50e36703d3bb20371
注意点として、なぜかGoogleChromeからは悪意のあるプログラムとしてダウンロードできないので他のブラウザを使用しましょう。Microsoft Edgeからはインストールできることを確認しています。
インストールが終わったら適当なテキストファイルを作って以下のスクリプトを記述します。
Move_URL(targetURL)
{
send, !d ; アドレスバーにフォーカスする
sleep,10 ;環境によってはここの数字を大きくしなければいけない可能性あり
send, %targetURL% ; ログインフォームを開く
sleep,100 ;環境によってはここの数字を大きくしなければいけない可能性あり
send, {enter}
sleep,100 ;環境によってはここの数字を大きくしなければいけない可能性あり
}
IME_SET(SetSts, WinTitle="A") {
ControlGet,hwnd,HWND,,,%WinTitle%
if (WinActive(WinTitle)) {
ptrSize := !A_PtrSize ? 4 : A_PtrSize
VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0)
NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize;
hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI)
? NumGet(stGTI,8+PtrSize,"UInt") : hwnd
}
return DllCall("SendMessage"
, UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd)
, UInt, 0x0283 ;Message : WM_IME_CONTROL
, Int, 0x006 ;wParam : IMC_SETOPENSTATUS
, Int, SetSts) ;lParam : 0 or 1
}
;新規カード作成ショートカット
^+c::
Move_URL("{新規カード作成URL}")
Return
IME_Set関数は入力時のモードが全角だとURLが全角になってしまうことの対策です。問答無用で半角にする処理を入れております。
autohotkeyではIMEの状態を取得するのが難しいようなので標準では搭載していません。自分も以下のGitHubを参考にしました。
上記のコードの{新規カード作成URL}の部分にはscrapboxで新しいカードを作成するときに使用される既定のURLを入力します。
既定のURLの形式は以下のようになっています。
https://scrapbox.io/{アカウント名}/new
scrapbox使っている時のURLを見ればアカウント名が分かると思うので適宜入力してください。
あとはテキストファイルを.ahkファイルとして保存した後にそのファイルをダブルクリックすればautohotkeyが有効になりショートカットを入力することで一発で新規カードを作成できます。
上記のソースコードではctrl+shift+cがショートカットキーになっているので同時に押すことで起動できます。
ショートカットキーを変更したい場合は下記のURLを参考にしてスクリプトを書き換えてください。ショートカットキーの書き換えだけならすぐできるはず。
ブラウザが立ち上がっていない時はこのコマンドは使用できません。ブラウザを立ち上げるコマンドは記述していない(毎回ブラウザを起動するとウィンドウが増えてしまうため)のでブラウザが立ち上がっている時に使用しましょう。
参考URL
http://www.sakuranomichi.jp/wordpress/2018/12/24/adressbar-at-firefox/
ChromeであればShortKeysという拡張機能を使うことで実現できるようです。ただし有料拡張機能。プログラミングが分からない人向け。
http://hokoxjouhou.blog105.fc2.com/blog-entry-1308.html