shortcut
code:script.js
$('body').on('keydown', e => {
if (e.ctrlKey) {
switch (e.code) {
// 現在のカーソルにフォーカス
case 'Semicolon':
document.getElementById('text-input').focus()
break;
// 現在のカーソルにブラケットを挿入
case 'KeyJ': // spc c-b [ c-f c-d c-b
insertLetters(' ')
keyDown(66, { ctrlKey: true }) // Ctrl & b
insertLetters('[')
keyDown(68, { ctrlKey: true }) // Ctrl & d
break;
// 検索窓にフォーカス
case 'KeyL':
break;
// 現在のカーソルに#を挿入
case 'Digit3':
const letter = e.shiftKey ? ' #' : '#' insertLetters(letter)
break;
// 下に一行追加し移動、viのoと同じ
case 'KeyO':
keyDown(69, { ctrlKey: true }) // Ctrl & e
keyDown(13) // Enter
break;
// ページタイトルをクリップボードにコピー
case 'KeyC':
// 書籍タイトルは『』を除去
let pageTitle = scrapbox.Page.title.replace(/^『/, '').replace(/』$/, '')
navigator.clipboard.writeText(pageTitle).then(
() => { alert('Copied! 😎') }, // コピーに成功
() => { alert('Copy Faluire 😭') }) // コピーに失敗
break;
default:
break;
}
}
if (e.metaKey) {
switch (e.code) {
// ページタイトルでGoogle検索
case 'KeyG':
window.open(https://www.google.co.jp/search?q=${scrapbox.Page.title})
break;
// ページタイトルでGoogle画像検索
case 'KeyP':
window.open(https://www.google.co.jp/search?q=${scrapbox.Page.title}&tbm=isch)
break;
default:
break;
}
}
if (e.altKey && e.metaKey) {
// 画像URLの横幅を調整 ※UserCSSとセット
if (e.code.match(/^Digit1-6$/)) { // Digit1 ~ Digit6 keyDown(65, { ctrlKey: true }) // Ctrl & a
const digit = Number(e.code.split('').pop()) // 1~6
e.preventDefault()
insertLetters([${Array(digit).fill('*').join('')} ) // [* ~ [******
keyDown(69, { ctrlKey: true }) // Ctrl + e
insertLetters(']') //keyDown(13)
}
}
})
function keyDown(keyCode, options = {}) {
const cursor = document.getElementById('text-input')
cursor.focus()
cursor.dispatchEvent(new KeyboardEvent('keydown', {
bubbles: true,
keyCode: keyCode,
...options
}))
}
function insertLetters(letters) {
document.execCommand('insertText', null, letters)
}