Add custom shortcut keys

This commit is contained in:
zyronon
2023-11-04 02:39:40 +08:00
parent 1eb82c17a5
commit 9eeb1938a3
10 changed files with 307 additions and 250 deletions

View File

@@ -5,26 +5,26 @@ import deFlag from "./assets/img/flags/de.png";
import codeFlag from "@/assets/img/flags/code.png";
export type Word = {
"name": string,
"usphone": string,
"ukphone": string,
"trans": string[]
"name": string,
"usphone": string,
"ukphone": string,
"trans": string[]
}
export const DefaultWord: Word = {
name: '',
usphone: '',
ukphone: '',
trans: []
name: '',
usphone: '',
ukphone: '',
trans: []
}
export const SaveDict = {
key: 'typing-word-dict',
version: 1
key: 'typing-word-dict',
version: 1
}
export const SaveConfig = {
key: 'typing-word-config',
version: 1
key: 'typing-word-config',
version: 1
}
export const PronunciationApi = 'https://dict.youdao.com/dictvoice?audio='
@@ -33,186 +33,199 @@ export type TranslateLanguageType = 'en' | 'zh-CN' | 'ja' | 'de' | 'common' | ''
export type LanguageType = 'en' | 'ja' | 'de' | 'code'
export type DictResource = {
id: string
name: string
description: string
category: string
tags: string[]
url: string
length: number
translateLanguage: TranslateLanguageType
type: DictType
language: LanguageType
id: string
name: string
description: string
category: string
tags: string[]
url: string
length: number
translateLanguage: TranslateLanguageType
type: DictType
language: LanguageType
}
export interface Dict {
id: string,
name: string,
description: string,
sort: Sort,
originWords: Word[],//原始单词
words: Word[],
chapterWordNumber: number,//章节单词数量
chapterWords: Word[][],
chapterIndex: number,//章节下标
wordIndex: number,//单词下标
articles: Article[],
statistics: Statistics[],
resourceId: string,
type: DictType,
translateLanguage: TranslateLanguageType
language: LanguageType
url: string,
id: string,
name: string,
description: string,
sort: Sort,
originWords: Word[],//原始单词
words: Word[],
chapterWordNumber: number,//章节单词数量
chapterWords: Word[][],
chapterIndex: number,//章节下标
wordIndex: number,//单词下标
articles: Article[],
statistics: Statistics[],
resourceId: string,
type: DictType,
translateLanguage: TranslateLanguageType
language: LanguageType
url: string,
}
export enum DictType {
collect = 'collect',
simple = 'simple',
wrong = 'wrong',
word = 'word',
customWord = 'customWord',
article = 'article',
customArticle = 'customArticle'
collect = 'collect',
simple = 'simple',
wrong = 'wrong',
word = 'word',
customWord = 'customWord',
article = 'article',
customArticle = 'customArticle'
}
export const DefaultArticleWord: ArticleWord = {
name: '',
usphone: '',
ukphone: '',
trans: [],
nextSpace: true,
isSymbol: false,
symbolPosition: ''
name: '',
usphone: '',
ukphone: '',
trans: [],
nextSpace: true,
isSymbol: false,
symbolPosition: ''
}
export interface ArticleWord extends Word {
nextSpace: boolean,
isSymbol: boolean,
symbolPosition: 'start' | 'end' | '',
nextSpace: boolean,
isSymbol: boolean,
symbolPosition: 'start' | 'end' | '',
}
export interface Sentence {
text: string,
translate: string,
words: ArticleWord[]
text: string,
translate: string,
words: ArticleWord[]
}
export enum TranslateType {
custom = 'custom',
network = 'network',
none = 'none'
custom = 'custom',
network = 'network',
none = 'none'
}
export interface Article {
id: string,
title: string,
titleTranslate: string,
text: string,
textFormat: string,
textCustomTranslate: string,
textCustomTranslateIsFormat: boolean,//翻译是否格式化
textNetworkTranslate: string,
newWords: Word[],
textAllWords: string[],
sections: Sentence[][],
useTranslateType: TranslateType
id: string,
title: string,
titleTranslate: string,
text: string,
textFormat: string,
textCustomTranslate: string,
textCustomTranslateIsFormat: boolean,//翻译是否格式化
textNetworkTranslate: string,
newWords: Word[],
textAllWords: string[],
sections: Sentence[][],
useTranslateType: TranslateType
}
export const DefaultArticle: Article = {
// id: uuidv4(),
id: '',
title: '',
titleTranslate: '',
text: '',
textFormat: '',
textCustomTranslate: '',
textNetworkTranslate: '',
textCustomTranslateIsFormat: false,
newWords: [],
textAllWords: [],
sections: [],
useTranslateType: TranslateType.network
// id: uuidv4(),
id: '',
title: '',
titleTranslate: '',
text: '',
textFormat: '',
textCustomTranslate: '',
textNetworkTranslate: '',
textCustomTranslateIsFormat: false,
newWords: [],
textAllWords: [],
sections: [],
useTranslateType: TranslateType.network
}
export interface Statistics {
startDate: number,//开始日期
endDate: number//结束日期
spend: number,//花费时间
total: number//单词数量
wrongWordNumber: number//错误数
correctRate: number//正确率
startDate: number,//开始日期
endDate: number//结束日期
spend: number,//花费时间
total: number//单词数量
wrongWordNumber: number//错误数
correctRate: number//正确率
}
export interface DisplayStatistics extends Statistics {
wrongWords: Word[]
wrongWords: Word[]
}
export const DefaultDisplayStatistics: DisplayStatistics = {
startDate: Date.now(),
endDate: -1,
spend: -1,
total: -1,
correctRate: -1,
wrongWordNumber: -1,
wrongWords: [],
startDate: Date.now(),
endDate: -1,
spend: -1,
total: -1,
correctRate: -1,
wrongWordNumber: -1,
wrongWords: [],
}
export enum Sort {
normal = 0,
random = 1,
reverse = 2
normal = 0,
random = 1,
reverse = 2
}
export const ShortcutKeyMap = {
Show: 'Escape',
Ignore: 'Tab',
Remove: '`',
Collect: 'Enter',
Show: 'Escape',
Ignore: 'Tab',
Remove: '`',
Collect: 'Enter',
}
export enum ShortcutKey {
Show = 'Show',
Skip = 'Skip',
ToggleSimple = 'ToggleSimple',
ToggleCollect = 'ToggleCollect',
NextChapter = 'NextChapter',
ReplayChapter = 'ReplayChapter',
DictationChapter = 'DictationChapter',
PlaySound = 'PlaySound',
ToggleShowTranslate = 'ToggleShowTranslate',
ToggleDictation = 'ToggleDictation',
}
export const DefaultShortcutKeyMap = {
Show: 'Escape',
Skip: 'Tab',
SetEasy: '`',
SetCollect: 'Enter',
NextChapter: 'Ctrl+➡',
ReplayChapter: 'Ctrl+Enter',
DictationChapter: 'Alt+Enter',
PlaySound: 'Ctrl+P',
ToggleShowTranslate:'Ctrl+T',
ToggleDictation:'Ctrl+I',
[ShortcutKey.Show]: 'Escape',
[ShortcutKey.Skip]: 'Tab',
[ShortcutKey.ToggleSimple]: '`',
[ShortcutKey.ToggleCollect]: 'Enter',
[ShortcutKey.NextChapter]: 'Ctrl+➡',
[ShortcutKey.ReplayChapter]: 'Ctrl+Enter',
[ShortcutKey.DictationChapter]: 'Alt+Enter',
[ShortcutKey.PlaySound]: 'Ctrl+P',
[ShortcutKey.ToggleShowTranslate]: 'Ctrl+T',
[ShortcutKey.ToggleDictation]: 'Ctrl+I',
}
export enum TranslateEngine {
Baidu = 0,
Baidu = 0,
}
export const languageCategoryOptions = [
{id: 'article', name: '文章', flag: bookFlag},
{id: 'en', name: '英语', flag: enFlag},
{id: 'ja', name: '日语', flag: jpFlag},
{id: 'de', name: '德语', flag: deFlag},
{id: 'code', name: 'Code', flag: codeFlag},
{id: 'article', name: '文章', flag: bookFlag},
{id: 'en', name: '英语', flag: enFlag},
{id: 'ja', name: '日语', flag: jpFlag},
{id: 'de', name: '德语', flag: deFlag},
{id: 'code', name: 'Code', flag: codeFlag},
]
export const DefaultDict: Dict = {
id: '',
name: '',
description: '',
sort: Sort.normal,
originWords: [],//原始单词
words: [],
chapterWordNumber: 30,//章节单词数量
chapterWords: [],
chapterIndex: 0,//章节下标
wordIndex: 0,//单词下标
articles: [],
statistics: [],
resourceId: '',
type: DictType.word,
translateLanguage: 'common',
language: 'en',
url: '',
id: '',
name: '',
description: '',
sort: Sort.normal,
originWords: [],//原始单词
words: [],
chapterWordNumber: 30,//章节单词数量
chapterWords: [],
chapterIndex: 0,//章节下标
wordIndex: 0,//单词下标
articles: [],
statistics: [],
resourceId: '',
type: DictType.word,
translateLanguage: 'common',
language: 'en',
url: '',
}