From a35a5ccfc38bea8c6d1ac5a1c00eb02573fea7d9 Mon Sep 17 00:00:00 2001 From: muwoo <2424880409@qq.com> Date: Tue, 3 Aug 2021 13:00:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=B8=BB=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=8B=BC=E9=9F=B3=E3=80=81=E7=BC=A9=E5=86=99=E6=A3=80?= =?UTF-8?q?=E7=B4=A2=EF=BC=8C=E6=94=AF=E6=8C=81=20shift+Esc=20=E5=91=BC?= =?UTF-8?q?=E8=B5=B7=E4=B8=BB=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 5 +++ package.json | 1 + src/main/common/config.js | 6 ++- src/main/common/listener.js | 5 +++ src/renderer/assets/common/constans.js | 6 +-- src/renderer/assets/common/translate.js | 37 +++++++++++++++++++ src/renderer/assets/common/utils.js | 11 +++++- .../pages/search/subpages/settings.vue | 6 ++- 8 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 src/renderer/assets/common/translate.js diff --git a/package-lock.json b/package-lock.json index 8cfa604..e6c9b4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8571,6 +8571,11 @@ "minimatch": "^3.0.4" } }, + "jian-pinyin": { + "version": "0.2.3", + "resolved": "https://registry.nlark.com/jian-pinyin/download/jian-pinyin-0.2.3.tgz", + "integrity": "sha1-H8a/9wiKw4goPzGm/USBFp+F4OI=" + }, "js-base64": { "version": "2.6.4", "resolved": "http://npmreg.qa.91jkys.com/js-base64/-/js-base64-2.6.4.tgz", diff --git a/package.json b/package.json index 1c6d60c..42d8628 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "electron-store": "^8.0.0", "iohook": "^0.9.3", "is-chinese": "^1.4.2", + "jian-pinyin": "^0.2.3", "keycode": "^2.2.0", "marked": "^2.0.7", "md5": "^2.3.0", diff --git a/src/main/common/config.js b/src/main/common/config.js index b574e47..4b3381a 100644 --- a/src/main/common/config.js +++ b/src/main/common/config.js @@ -7,10 +7,12 @@ const configPath = path.join(getlocalDataFile(), './rubick-config.json'); let defaultConfig = { Darwin: { + version: 2, perf: { shortCut: { showAndHidden: 'Option+R', - separate: 'Ctrl+D' + separate: 'Ctrl+D', + quit: 'Shift+Escape' }, common: { start: true, @@ -39,7 +41,7 @@ global.opConfig = { opConfig.config = JSON.parse(fs.readFileSync(configPath) || JSON.stringify(defaultConfig[platform])); } // 重置 - if (!opConfig.config.perf || !opConfig.config.superPanel || !opConfig.config.global) { + if (!opConfig.version || opConfig.version < defaultConfig[platform].version) { opConfig.config = defaultConfig[platform]; fs.writeFileSync(configPath, JSON.stringify(opConfig.config)); } diff --git a/src/main/common/listener.js b/src/main/common/listener.js index 65a4cfe..5c5be23 100644 --- a/src/main/common/listener.js +++ b/src/main/common/listener.js @@ -63,6 +63,11 @@ class Listener { mainWindow.webContents.send('new-window'); }); + globalShortcut.register(config.perf.shortCut.quit, () => { + mainWindow.webContents.send('init-rubick'); + mainWindow.show(); + }); + // 注册自定义全局快捷键 config.global.forEach(sc => { if (!sc.key || !sc.value) return; diff --git a/src/renderer/assets/common/constans.js b/src/renderer/assets/common/constans.js index 85e5c3a..5e4962e 100644 --- a/src/renderer/assets/common/constans.js +++ b/src/renderer/assets/common/constans.js @@ -22,7 +22,7 @@ const SYSTEM_PLUGINS = [ { code: 'pick', explain: 'rubick 帮助文档', - cmds: ['取色', '拾色', 'Pick color'] + cmds: ['取色', '拾色', 'Pick color', 'qs', 'ss'] } ], tag: 'rubick-color' @@ -34,7 +34,7 @@ const SYSTEM_PLUGINS = [ { code: 'shortCut', explain: 'rubick 屏幕截取', - cmds: ['截屏', 'shortCut'] + cmds: ['截屏', 'shortCut', 'jp'] } ], tag: 'rubick-screen-short-cut' @@ -46,7 +46,7 @@ const SYSTEM_PLUGINS = [ { code: 'lock', explain: '锁屏', - cmds: ['锁屏', 'lock screen'] + cmds: ['锁屏', 'lock screen', 'sp'] } ], tag: 'rubick-lock' diff --git a/src/renderer/assets/common/translate.js b/src/renderer/assets/common/translate.js new file mode 100644 index 0000000..c8082c1 --- /dev/null +++ b/src/renderer/assets/common/translate.js @@ -0,0 +1,37 @@ +let key = '吖哎安肮凹八挀扳邦勹陂奔伻皀边灬憋汃冫癶峬嚓偲参仓撡冊嵾噌叉犲辿伥抄车抻阷吃充抽出膗巛刅吹旾踔呲从凑粗汆镩蹿崔邨搓咑呆丹当刀恴揼灯仾嗲敁刁爹丁丟东吺剢耑叾吨多妸奀鞥仒发帆匚飞分丰覅仏垺夫旮侅干冈皋戈给根更工勾估瓜乖关光归丨呙妎咍兯夯茠诃黒拫亨乊叿齁乎花怀欢巟灰昏吙丌加戋江艽阶巾坕冂丩凥姢噘军咔开刊忼尻匼肎劥空廤扝夸蒯宽匡亏坤扩垃来兰啷捞仂雷塄唎俩嫾簗蹽咧厸伶溜咯龙娄噜驴孪掠抡捋嘸妈埋颟牤猫庅呅椚掹踎宀喵乜民名谬摸哞某母拏腉囡囔孬疒娞嫩莻妮拈娘鸟捏脌宁妞农羺奴女疟奻硸噢妑拍眅乓抛呸喷匉丕片剽氕姘乒钋剖仆七掐千呛悄切亲靑宆丘区峑炔夋亽呥穣荛惹人扔日戎厹嶿堧桵闰挼仨毢三桒掻色杀筛山伤弰奢申升尸収书刷衰闩双谁妁厶忪凁苏狻夊孙唆他囼坍汤仐忑膯剔天旫怗厅囲偷凸湍推吞乇屲歪乛尣危塭翁挝乌夕呷仙乡灱些忄兴凶休戌吅疶坃丫咽央幺倻膶一乚应哟佣优扜囦曰蒀帀災兂牂傮啫贼怎曽吒夈沾张佋蜇贞凧之中州朱抓拽专妆隹宒卓仔孖宗邹租劗厜尊昨'.split(''); +let pinyin = 'AAiAnAngAoBaBaiBanBangBaoBeiBenBengBiBianBiaoBieBinBingBoBuCaCaiCanCangCaoCeCenCengChaChaiChanChangChaoCheChenChengChiChongChouChuChuaiChuanChuangChuiChunChuoCiCongCouCuCuanChuanCuanCuiCunCuoDaDaiDanDangDaoDeDenDengDiDiaDianDiaoDieDingDiuDongDouDuDuanDuiDunDuoEEnEngErFaFanFangFeiFenFengFiaoFoFouFuGaGaiGanGangGaoGeGeiGenGengGongGouGuGuaGuaiGuanGuangGuiGunGuoHaHaiHanHangHaoHeHeiHenHengHoHongHouHuHuaHuaiHuanHuangHuiHunHuoJiJiaJianJiangJiaoJieJinJingJiongJiuJuJuanJueJunKaKaiKanKangKaoKeKenKengKongKouKuKuaKuaiKuanKuangKuiKunKuoLaLaiLanLangLaoLeLeiLengLiLiaLianLiangLiaoLieLinLingLiuLoLongLouLuLvLuanLveLunLuoMMaMaiManMangMaoMeMeiMenMengMiMianMiaoMieMinMingMiuMoMouMeiMuNaNaiNanNangNaoNeNeiNenNNiNianNiangNiaoNieNinNingNiuNongNouNuNvNveNuanNuoOuPaPaiPanPangPaoPeiPenPengPiPianPiaoPiePinPingPoPouPuQiQiaQianQiangQiaoQieQinQingQiongQiuQuQuanQueQunRaRanRangRaoReRenRengRiRongRouRuRuanRuiRunRuoSaSaiSanSangSaoSeShaShaiShanShangShaoSheShenShengShiShouShuShuaShuaiShuanShuangShuiShuoSiSongSouSuSuanSuiSunSuoTaTaiTanTangTaoTeTengTiTianTiaoTieTingTongTouTuTuanTuiTunTuoWaWaiWanWangWeiWenWengWoWuXiXiaXianXiangXiaoXieXinXingXiongXiuXuXuanXueXunYaYanYangYaoYeYenYiYinYingYoYongYouYuYuanYueYunZaZaiZanZangZaoZeZeiZenZengZhaZhaiZhanZhangZhaoZheZhenZhengZhiZhongZhouZhuZhuaZhuaiZhuanZhuangZhuiZhunZhuoZaiZiZongZouZuZuanZuiZunZuo'.split(/(?=[A-Z])/g); +let cache = {}; +let keyLen = key.length - 1; +let creg = /[\u4e00-\u9fa5]/; +let translate = word => { + if (word.length > 1) { + let ret = ''; + for (let i = 0; i < word.length; i++) { + ret += translate(word[i]); + if (i < word.length - 1) { + ret += ','; + } + } + return ret; + } + + if (!creg.test(word)) { + return word; + } + + if (cache.hasOwnProperty(word)) { + return cache[word]; + } + let begin = 0; + let end = keyLen; + while (begin <= end) { + let middle = Math.floor((begin + end) / 2); + if (word.localeCompare(key[middle], 'zh-CN') < 0) { + end = middle - 1; + } else { + begin = middle + 1; + } + } + return (cache[word] = (pinyin[end] || '').toLowerCase()); +}; +export default translate; diff --git a/src/renderer/assets/common/utils.js b/src/renderer/assets/common/utils.js index bcc62be..8e88449 100644 --- a/src/renderer/assets/common/utils.js +++ b/src/renderer/assets/common/utils.js @@ -10,6 +10,8 @@ import { getlocalDataFile } from '../../../main/common/utils'; import iconvLite from 'iconv-lite'; import bpList from 'bplist-parser'; +import translate from './translate' + const store = new Store(); function getWindowHeight(searchList) { @@ -233,7 +235,14 @@ APP_FINDER_PATH.forEach((searchPath, index) => { }; if (appZhName && isZhRegex.test(appZhName)) { - // pinyinArr = [['pin'], ['yin']] + const py = translate(appZhName); + const pinyinArr = py.split(','); + const firstLatter = pinyinArr.map(py => py[0]); + // 拼音 + fileOptions.keyWords.push(pinyinArr.join('')); + // 缩写 + fileOptions.keyWords.push(firstLatter.join('')); + // 中文 fileOptions.keyWords.push(appZhName); } diff --git a/src/renderer/pages/search/subpages/settings.vue b/src/renderer/pages/search/subpages/settings.vue index 397314f..0e97099 100644 --- a/src/renderer/pages/search/subpages/settings.vue +++ b/src/renderer/pages/search/subpages/settings.vue @@ -15,7 +15,7 @@