Skip to content

Commit 3ed1865

Browse files
committed
hold z to quick mark words
1 parent 2d812e9 commit 3ed1865

File tree

3 files changed

+46
-8
lines changed

3 files changed

+46
-8
lines changed

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ This will make all "unknown" words as "known", except the words you excluded in
4545
- <kbd>↓</kbd> scroll down dict section
4646
- <kbd>↑</kbd> scroll up dict section
4747
- <kbd>ESC</kbd> close dict panel / close zen mode
48-
- <kbd>a</kbd> mark as known
49-
- <kbd>s</kbd> save context
48+
- <kbd>a</kbd> mark as known when card window is shown
49+
- <kbd>s</kbd> save context when card window is shown
50+
- <kbd>z</kbd> hold `z` key and press mouse middle button to mark as known without showing card window
5051

5152
## Similar projects
5253

src/content/card.tsx

+42-5
Original file line numberDiff line numberDiff line change
@@ -511,8 +511,11 @@ function adjustCardPosition(rect: DOMRect, onlyOutsideViewport = false) {
511511
}
512512
}
513513

514-
function onMouseMove(e: MouseEvent) {
515-
if (zenMode() && cardDisabledInZenMode()) {
514+
let toQuickMarkWord: string
515+
let holdKey: string | null = null
516+
517+
function onMouseMove(e: MouseEvent, slient = false) {
518+
if (!slient && zenMode() && cardDisabledInZenMode()) {
516519
return false
517520
}
518521

@@ -526,6 +529,12 @@ function onMouseMove(e: MouseEvent) {
526529
if (range) {
527530
const word = range.toString().trim().toLowerCase()
528531

532+
// for quick mark as known, don't show card
533+
if (!isCardVisible() && slient) {
534+
toQuickMarkWord = word
535+
return false
536+
}
537+
529538
if (inDirecting) {
530539
inDirecting = false
531540
return false
@@ -559,37 +568,65 @@ function onMouseClick(e: MouseEvent) {
559568
}
560569
}
561570

571+
function onAuxclick(e: MouseEvent) {
572+
console.log(e)
573+
e.preventDefault()
574+
if (toQuickMarkWord) {
575+
console.log('quick mark as known', toQuickMarkWord)
576+
e.stopImmediatePropagation()
577+
e.preventDefault()
578+
markAsKnown(toQuickMarkWord)
579+
setCurWord('')
580+
hidePopupDelay(0)
581+
explode(e.pageX, e.pageY)
582+
toQuickMarkWord = ''
583+
return false
584+
}
585+
}
586+
562587
let waitMouseKeyTask: Function | null
563588

564589
function preMouseMove(e: MouseEvent) {
565-
// skip when redirecting in card dictionary
566590
waitMouseKeyTask = null
591+
toQuickMarkWord = ''
592+
567593
const mouseKey = settings().mosueKey
568594
if (mouseKey !== 'NONE' && !e[mouseKey]) {
569595
waitMouseKeyTask = () => {
570-
console.log('onMouseMove')
571596
onMouseMove(e)
572597
}
573598
} else {
574-
onMouseMove(e)
599+
onMouseMove(e, holdKey === 'z')
575600
}
576601
}
577602

578603
function onKeyDown(e: KeyboardEvent) {
604+
holdKey = e.key
579605
if (e[settings().mosueKey]) {
580606
waitMouseKeyTask && waitMouseKeyTask()
581607
}
582608
}
583609

610+
function onKeyUp(e: KeyboardEvent) {
611+
holdKey = null
612+
if (e[settings().mosueKey]) {
613+
waitMouseKeyTask = null
614+
}
615+
}
616+
584617
function bindEvents() {
585618
document.addEventListener('mousemove', preMouseMove)
586619
document.addEventListener('keydown', onKeyDown)
620+
document.addEventListener('keyup', onKeyUp)
587621
// hide popup when click outside card
588622
document.addEventListener('click', onMouseClick)
623+
document.addEventListener('auxclick', onAuxclick)
589624
}
590625

591626
function unbindEvents() {
592627
document.removeEventListener('mousemove', preMouseMove)
593628
document.removeEventListener('keydown', onKeyDown)
629+
document.removeEventListener('keyup', onKeyUp)
594630
document.removeEventListener('click', onMouseClick)
631+
document.removeEventListener('auxclick', onAuxclick)
595632
}

src/lib/settings.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const DEFAULT_SETTINGS = {
3535
showCnTrans: false,
3636
atuoPronounce: false,
3737
mosueKey: 'NONE' as MouseKey,
38-
mouseHideDelay: 500,
38+
mouseHideDelay: 200,
3939
volume: 95,
4040
autoPauseYoutubeVideo: false,
4141
levels: ['p', 'm', 'h', '4', '6', 'g', 'o'] as LevelKey[],

0 commit comments

Comments
 (0)