Scrapboxの行頭に✅を追加するショートカットは書けるか?
難しそう。
その場所で、というなら以下でいける
code:script.js
(() => {
const textArea = document.getElementById('text-input');
const inputEvent = {
event: document.createEvent('Event'),
dispatch: function(string) {
textArea.value = string;
textArea.dispatchEvent(this.event);
}
};
inputEvent.event.initEvent('input', true, true);
const onKeyDown = function(e){
if (e.altKey) {
inputEvent.dispatch(checkBoxList1); }
}
document.addEventListener('keydown', onKeyDown)
})()
document.execCommandを使えば、もっと簡単な気もする。
これでaltキーでチェックボックス(チェック済み)を追加できる。
キーイベントで分岐すれば、チェック済みでないボックスの追加もできいる。
たとえば、switch (e.keyCode) {的な?
以下を参考に書いた。
ショートカットキーの追加の参考
code:kpt.js
(() => {
const aliases = {
KeyK: 'keep',
KeyP: 'problem',
KeyT: 'try',
}
const onKeyDown = function(e){
if (e.altKey) {
const cursor = document.getElementById('text-input')
if (name) {
e.preventDefault()
cursor.focus()
document.execCommand('insertText', null, [${name}.icon])
}
}
}
document.addEventListener('keydown', onKeyDown)
})()
かーそるがある行の、先頭にこれを追加したい。
code:sample.js
const textArea = document.getElementById('text-input');
const inputEvent = {
event: document.createEvent('Event'),
dispatch: function(string) {
textArea.value = string;
textArea.dispatchEvent(this.event);
}
};
inputEvent.event.initEvent('input', true, true);
$('#text-input').off('keydown.autoInsertCheckBox');
$('#text-input').on('keydown.autoInsertCheckBox', e => {
switch (e.keyCode) {
case 13: // Enter
if (!startsWithBoxReg.test(getCursorLineString())) return;
setTimeout(() => {
if (startsWithBoxReg.test(getCursorLineString())) return;
inputEvent.dispatch(checkBoxList0); }, 50);
break;
default:
return;
}
});
function isFirstElementChild(elem) {
return elem.parentNode.firstElementChild === elem;
}
function getCursorLineString() {
return document.querySelector('.lines div.line.cursor-line').textContent;
}