From a9ddba986bdc42533d3a56a32e3baa7a6153c053 Mon Sep 17 00:00:00 2001 From: Joel Purra Date: Thu, 2 Feb 2017 10:03:36 +0100 Subject: [PATCH 1/3] Add shortcut key to perform the same action as clicking on the Talkie icon --- manifest.json | 11 +++++++++++ src/background.js | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/manifest.json b/manifest.json index c13265e1..cc3b4dc9 100644 --- a/manifest.json +++ b/manifest.json @@ -16,6 +16,17 @@ "permissions": [ "activeTab" ], + "commands": { + "_execute_browser_action": { + "suggested_key": { + "windows": "Ctrl+Shift+A", + "mac": "Command+Shift+A", + "chromeos": "Ctrl+Shift+A", + "linux": "Ctrl+Shift+A" + }, + "description": "__MSG_buttonDefaultTitle__" + } + }, "requirements": {}, "offline_enabled": true, "default_locale": "en", diff --git a/src/background.js b/src/background.js index 31928cae..628497b0 100644 --- a/src/background.js +++ b/src/background.js @@ -771,6 +771,10 @@ const enablePopup = () => { } ); + const shortcutKeyCommandHandler = (command) => { + log("Start", "shortcutKeyCommandHandler", command); + }; + const broadcaster = new Broadcaster(); broadcaster.start(); @@ -789,6 +793,8 @@ const enablePopup = () => { // NOTE: used when the popup has been disabled. chrome.browserAction.onClicked.addListener(iconClickAction); + chrome.commands.onCommand.addListener(shortcutKeyCommandHandler); + enablePopup(); }()); From abf078f27ed48b5f6a14a8ac303b9babed1f7612 Mon Sep 17 00:00:00 2001 From: Joel Purra Date: Thu, 2 Feb 2017 11:18:54 +0100 Subject: [PATCH 2/3] Add more custom commands for user-definable keyboard shortcuts --- _locales/da/automatic.json | 15 +++++++++++++++ _locales/da/messages.json | 15 +++++++++++++++ _locales/de/automatic.json | 15 +++++++++++++++ _locales/de/messages.json | 15 +++++++++++++++ _locales/en/base.json | 15 +++++++++++++++ _locales/en/messages.json | 15 +++++++++++++++ _locales/es/automatic.json | 17 ++++++++++++++++- _locales/es/messages.json | 17 ++++++++++++++++- _locales/fr/automatic.json | 15 +++++++++++++++ _locales/fr/messages.json | 15 +++++++++++++++ _locales/he/automatic.json | 15 +++++++++++++++ _locales/he/messages.json | 15 +++++++++++++++ _locales/it/automatic.json | 15 +++++++++++++++ _locales/it/messages.json | 15 +++++++++++++++ _locales/nb/automatic.json | 15 +++++++++++++++ _locales/nb/messages.json | 15 +++++++++++++++ _locales/nl/automatic.json | 15 +++++++++++++++ _locales/nl/messages.json | 15 +++++++++++++++ _locales/ru/automatic.json | 15 +++++++++++++++ _locales/ru/messages.json | 15 +++++++++++++++ _locales/sv/automatic.json | 15 +++++++++++++++ _locales/sv/messages.json | 15 +++++++++++++++ _locales/zh/automatic.json | 15 +++++++++++++++ _locales/zh/messages.json | 15 +++++++++++++++ manifest.json | 20 ++++++++++++++++++- src/background.js | 29 ++++++++++++++++++++++++++++ src/popup-start.js | 3 ++- src/shared.js | 39 ++++++++++++++++++++++++++++++++++++++ 28 files changed, 451 insertions(+), 4 deletions(-) diff --git a/_locales/da/automatic.json b/_locales/da/automatic.json index 23634326..0032194e 100644 --- a/_locales/da/automatic.json +++ b/_locales/da/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Stop med at snakke" }, + "commandBrowserActionDescription": { + "message": "Stop med at snakke" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Åbn Chrome Webshop side" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Åbn donation siden" + }, + "commandOpenWebsiteMainDescription": { + "message": "Åbn hjemmesiden" + }, + "commandStartStopDescription": { + "message": "Start / stop læsning udvælgelse" + }, "extensionDescription": { "message": "Vælg tekst på en webside, og få computeren læste det højt for dig ved blot at klikke på knappen Talkie." }, diff --git a/_locales/da/messages.json b/_locales/da/messages.json index 6f67d488..d2043820 100644 --- a/_locales/da/messages.json +++ b/_locales/da/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Stop med at snakke" }, + "commandBrowserActionDescription": { + "message": "Stop med at snakke" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Åbn Chrome Webshop side" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Åbn donation siden" + }, + "commandOpenWebsiteMainDescription": { + "message": "Åbn hjemmesiden" + }, + "commandStartStopDescription": { + "message": "Start / stop læsning udvælgelse" + }, "extensionDescription": { "message": "Vælg tekst på en webside, og få computeren læste det højt for dig ved blot at klikke på knappen Talkie." }, diff --git a/_locales/de/automatic.json b/_locales/de/automatic.json index a5f02739..daa5f86f 100644 --- a/_locales/de/automatic.json +++ b/_locales/de/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Hör auf zu reden" }, + "commandBrowserActionDescription": { + "message": "Hör auf zu reden" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Öffnen Sie die Chrome Web Store-Seite" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Öffnen Sie die Spendenseite" + }, + "commandOpenWebsiteMainDescription": { + "message": "Öffnen Sie die Website" + }, + "commandStartStopDescription": { + "message": "Start / Stop Lesevorgang" + }, "extensionDescription": { "message": "Wählen Sie Text auf jeder Web-Seite, und haben Sie den Computer lesen Sie es laut für Sie, indem Sie einfach auf die Talkie-Taste." }, diff --git a/_locales/de/messages.json b/_locales/de/messages.json index 3ed6d75d..4bd7005d 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Hör auf zu reden" }, + "commandBrowserActionDescription": { + "message": "Hör auf zu reden" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Öffnen Sie die Chrome Web Store-Seite" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Öffnen Sie die Spendenseite" + }, + "commandOpenWebsiteMainDescription": { + "message": "Öffnen Sie die Website" + }, + "commandStartStopDescription": { + "message": "Start / Stop Lesevorgang" + }, "extensionDescription": { "message": "Wählen Sie Text auf jeder Web-Seite, und haben Sie den Computer lesen Sie es laut für Sie, indem Sie einfach auf die Talkie-Taste." }, diff --git a/_locales/en/base.json b/_locales/en/base.json index 61e9bfd2..18e38fd6 100644 --- a/_locales/en/base.json +++ b/_locales/en/base.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Stop talking" }, + "commandBrowserActionDescription": { + "message": "Read text selection out loud" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Open the Chrome Web Store page" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Open the donation page" + }, + "commandOpenWebsiteMainDescription": { + "message": "Open the website" + }, + "commandStartStopDescription": { + "message": "Start/stop reading selection" + }, "extensionDescription": { "message": "Select text on any web page, and have the computer read it out loud for you by simply clicking the Talkie button." }, diff --git a/_locales/en/messages.json b/_locales/en/messages.json index ffa95652..525bef9c 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Stop talking" }, + "commandBrowserActionDescription": { + "message": "Read text selection out loud" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Open the Chrome Web Store page" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Open the donation page" + }, + "commandOpenWebsiteMainDescription": { + "message": "Open the website" + }, + "commandStartStopDescription": { + "message": "Start/stop reading selection" + }, "extensionDescription": { "message": "Select text on any web page, and have the computer read it out loud for you by simply clicking the Talkie button." }, diff --git a/_locales/es/automatic.json b/_locales/es/automatic.json index 1f73a852..4126d72f 100644 --- a/_locales/es/automatic.json +++ b/_locales/es/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Deja de hablar" }, + "commandBrowserActionDescription": { + "message": "Deja de hablar" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Abrir la página Chrome Web Store" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Abrir la página de donaciones" + }, + "commandOpenWebsiteMainDescription": { + "message": "Abrir el sitio web" + }, + "commandStartStopDescription": { + "message": "Iniciar / detener la selección de lectura" + }, "extensionDescription": { "message": "Seleccione el texto en cualquier página web y haga que la computadora lo lea en voz alta para usted simplemente haciendo clic en el botón Talkie." }, @@ -31,7 +46,7 @@ "message": "Puntúalo" }, "popup_supportAndFeedback": { - "message": "Soporte y retroalimentación" + "message": "Soporte y comentarios" }, "popup_yourDonationsAreAppreciated": { "message": "Sus donaciones son apreciadas!" diff --git a/_locales/es/messages.json b/_locales/es/messages.json index a17c859b..c57520ff 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Deja de hablar" }, + "commandBrowserActionDescription": { + "message": "Deja de hablar" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Abrir la página Chrome Web Store" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Abrir la página de donaciones" + }, + "commandOpenWebsiteMainDescription": { + "message": "Abrir el sitio web" + }, + "commandStartStopDescription": { + "message": "Iniciar / detener la selección de lectura" + }, "extensionDescription": { "message": "Seleccione el texto en cualquier página web y haga que la computadora lo lea en voz alta para usted simplemente haciendo clic en el botón Talkie." }, @@ -49,7 +64,7 @@ "message": "Puntúalo" }, "popup_supportAndFeedback": { - "message": "Soporte y retroalimentación" + "message": "Soporte y comentarios" }, "popup_yourDonationsAreAppreciated": { "message": "Sus donaciones son apreciadas!" diff --git a/_locales/fr/automatic.json b/_locales/fr/automatic.json index f60f4068..1e9d7cac 100644 --- a/_locales/fr/automatic.json +++ b/_locales/fr/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Arrêter de parler" }, + "commandBrowserActionDescription": { + "message": "Arrêter de parler" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Ouvrez la page Chrome Web Store" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Ouvrir la page de don" + }, + "commandOpenWebsiteMainDescription": { + "message": "Ouvrir le site" + }, + "commandStartStopDescription": { + "message": "Commencer / arrêter la lecture de la sélection" + }, "extensionDescription": { "message": "Sélectionnez un texte sur n'importe quelle page Web et demandez à l'ordinateur de le lire à haute voix pour vous en cliquant simplement sur le bouton Talkie." }, diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 3104ffe8..b95faf1f 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Arrêter de parler" }, + "commandBrowserActionDescription": { + "message": "Arrêter de parler" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Ouvrez la page Chrome Web Store" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Ouvrir la page de don" + }, + "commandOpenWebsiteMainDescription": { + "message": "Ouvrir le site" + }, + "commandStartStopDescription": { + "message": "Commencer / arrêter la lecture de la sélection" + }, "extensionDescription": { "message": "Sélectionnez un texte sur n'importe quelle page Web et demandez à l'ordinateur de le lire à haute voix pour vous en cliquant simplement sur le bouton Talkie." }, diff --git a/_locales/he/automatic.json b/_locales/he/automatic.json index 402310a3..66e60484 100644 --- a/_locales/he/automatic.json +++ b/_locales/he/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": " רבדל קיספת" }, + "commandBrowserActionDescription": { + "message": " רבדל קיספת" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": " Chrome לש טנרטניאה תונח ףד תא חתפ" + }, + "commandOpenWebsiteDonateDescription": { + "message": " המורתה ףד תא חתפ" + }, + "commandOpenWebsiteMainDescription": { + "message": " רתאה תא חתפ" + }, + "commandStartStopDescription": { + "message": " הריחב אורקל קיספהל / לחתה" + }, "extensionDescription": { "message": " .Talkie רותפכ לע הציחל ידי לע טושפ ךליבשב םר לוקב הז תא אורקל בשחמה תא םהל שיו​​ ,והשלכ טנרטניא ףדב טסקט רחב" }, diff --git a/_locales/he/messages.json b/_locales/he/messages.json index 273749af..644e1d98 100644 --- a/_locales/he/messages.json +++ b/_locales/he/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": " רבדל קיספת" }, + "commandBrowserActionDescription": { + "message": " רבדל קיספת" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": " Chrome לש טנרטניאה תונח ףד תא חתפ" + }, + "commandOpenWebsiteDonateDescription": { + "message": " המורתה ףד תא חתפ" + }, + "commandOpenWebsiteMainDescription": { + "message": " רתאה תא חתפ" + }, + "commandStartStopDescription": { + "message": " הריחב אורקל קיספהל / לחתה" + }, "extensionDescription": { "message": "בחר טקסט מכל אתר ו-Talkie יקרא אותו עבורך בקול רם בלחיצת כפתור" }, diff --git a/_locales/it/automatic.json b/_locales/it/automatic.json index 2602d3f5..129fb3c1 100644 --- a/_locales/it/automatic.json +++ b/_locales/it/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Smetti di parlare" }, + "commandBrowserActionDescription": { + "message": "Smetti di parlare" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Aprire la pagina Chrome Web Store" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Aprire la pagina delle donazioni" + }, + "commandOpenWebsiteMainDescription": { + "message": "Aprire il sito web" + }, + "commandStartStopDescription": { + "message": "Start / smettere di leggere selezione" + }, "extensionDescription": { "message": "Selezionare testo su qualsiasi pagina web, e avere il computer leggere ad alta voce per voi con un semplice click sul pulsante Talkie." }, diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 904d2099..4c6a066f 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Smetti di parlare" }, + "commandBrowserActionDescription": { + "message": "Smetti di parlare" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Aprire la pagina Chrome Web Store" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Aprire la pagina delle donazioni" + }, + "commandOpenWebsiteMainDescription": { + "message": "Aprire il sito web" + }, + "commandStartStopDescription": { + "message": "Start / smettere di leggere selezione" + }, "extensionDescription": { "message": "Selezionare testo su qualsiasi pagina web, e avere il computer leggere ad alta voce per voi con un semplice click sul pulsante Talkie." }, diff --git a/_locales/nb/automatic.json b/_locales/nb/automatic.json index b73a3a24..2709d209 100644 --- a/_locales/nb/automatic.json +++ b/_locales/nb/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Slutt å snakke" }, + "commandBrowserActionDescription": { + "message": "Slutt å snakke" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Åpne Chrome Nettmarked side" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Åpne donasjon siden" + }, + "commandOpenWebsiteMainDescription": { + "message": "Åpne nettsiden" + }, + "commandStartStopDescription": { + "message": "Starte / stoppe lesingen utvalg" + }, "extensionDescription": { "message": "Velg tekst på en nettside, og har datamaskinen lese den høyt for deg ved å klikke på Talkie-knappen." }, diff --git a/_locales/nb/messages.json b/_locales/nb/messages.json index 3a22491d..8c88371f 100644 --- a/_locales/nb/messages.json +++ b/_locales/nb/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Slutt å snakke" }, + "commandBrowserActionDescription": { + "message": "Slutt å snakke" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Åpne Chrome Nettmarked side" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Åpne donasjon siden" + }, + "commandOpenWebsiteMainDescription": { + "message": "Åpne nettsiden" + }, + "commandStartStopDescription": { + "message": "Starte / stoppe lesingen utvalg" + }, "extensionDescription": { "message": "Velg tekst på en nettside, og har datamaskinen lese den høyt for deg ved å klikke på Talkie-knappen." }, diff --git a/_locales/nl/automatic.json b/_locales/nl/automatic.json index ba73c3eb..24324813 100644 --- a/_locales/nl/automatic.json +++ b/_locales/nl/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Stop met praten" }, + "commandBrowserActionDescription": { + "message": "Stop met praten" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Open de Chrome Web Store-pagina" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Open de donatie pagina" + }, + "commandOpenWebsiteMainDescription": { + "message": "Open de website" + }, + "commandStartStopDescription": { + "message": "Start / stop het lezen van selectie" + }, "extensionDescription": { "message": "Selecteer tekst op een webpagina, en hebben de computer leest het hardop voor u door simpelweg te klikken op de knop Talkie." }, diff --git a/_locales/nl/messages.json b/_locales/nl/messages.json index f71fc412..78df098f 100644 --- a/_locales/nl/messages.json +++ b/_locales/nl/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Stop met praten" }, + "commandBrowserActionDescription": { + "message": "Stop met praten" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Open de Chrome Web Store-pagina" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Open de donatie pagina" + }, + "commandOpenWebsiteMainDescription": { + "message": "Open de website" + }, + "commandStartStopDescription": { + "message": "Start / stop het lezen van selectie" + }, "extensionDescription": { "message": "Selecteer tekst op een webpagina, en hebben de computer leest het hardop voor u door simpelweg te klikken op de knop Talkie." }, diff --git a/_locales/ru/automatic.json b/_locales/ru/automatic.json index 26933f30..94a483aa 100644 --- a/_locales/ru/automatic.json +++ b/_locales/ru/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Перестаньте разговаривать" }, + "commandBrowserActionDescription": { + "message": "Перестаньте разговаривать" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Откройте страницу Интернет-магазин Chrome" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Открыть страницу пожертвований" + }, + "commandOpenWebsiteMainDescription": { + "message": "Откройте веб-сайт" + }, + "commandStartStopDescription": { + "message": "Старт / Стоп чтение выбор" + }, "extensionDescription": { "message": "Выделите текст на любой веб-странице, и есть компьютер читать вслух для вас, просто нажав на кнопку Talkie." }, diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index 2b1ff6d8..97b38a5a 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Перестаньте разговаривать" }, + "commandBrowserActionDescription": { + "message": "Перестаньте разговаривать" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Откройте страницу Интернет-магазин Chrome" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Открыть страницу пожертвований" + }, + "commandOpenWebsiteMainDescription": { + "message": "Откройте веб-сайт" + }, + "commandStartStopDescription": { + "message": "Старт / Стоп чтение выбор" + }, "extensionDescription": { "message": "Выделите текст на любой веб-странице, и есть компьютер читать вслух для вас, просто нажав на кнопку Talkie." }, diff --git a/_locales/sv/automatic.json b/_locales/sv/automatic.json index 345e1ce9..4a9a8ec7 100644 --- a/_locales/sv/automatic.json +++ b/_locales/sv/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Sluta prata" }, + "commandBrowserActionDescription": { + "message": "Sluta prata" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Öppna Chrome Web Store sida" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Öppna donationssida" + }, + "commandOpenWebsiteMainDescription": { + "message": "Öppna hemsidan" + }, + "commandStartStopDescription": { + "message": "Start / stopp läsa val" + }, "extensionDescription": { "message": "Markera text på en webbsida, och har datorn läsa den högt för dig genom att klicka på Talkie knappen." }, diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index 3ae17b71..41f43b96 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "Sluta prata" }, + "commandBrowserActionDescription": { + "message": "Sluta prata" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "Öppna Chrome Web Store sida" + }, + "commandOpenWebsiteDonateDescription": { + "message": "Öppna donationssida" + }, + "commandOpenWebsiteMainDescription": { + "message": "Öppna hemsidan" + }, + "commandStartStopDescription": { + "message": "Start / stopp läsa val" + }, "extensionDescription": { "message": "Markera text på valfri hemsida, och låt datorn läsa upp den för dig genom ett enkelt klick på Talkie-knappen." }, diff --git a/_locales/zh/automatic.json b/_locales/zh/automatic.json index 64056c45..5ccb3c45 100644 --- a/_locales/zh/automatic.json +++ b/_locales/zh/automatic.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "停止说话" }, + "commandBrowserActionDescription": { + "message": "停止说话" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "打开Chrome网上应用店页面" + }, + "commandOpenWebsiteDonateDescription": { + "message": "打开捐款页面" + }, + "commandOpenWebsiteMainDescription": { + "message": "打开网站" + }, + "commandStartStopDescription": { + "message": "开始/停止读取选择" + }, "extensionDescription": { "message": "在任何网页上选择文字,并让计算机大声读出它,只需点击对讲机按钮。" }, diff --git a/_locales/zh/messages.json b/_locales/zh/messages.json index ccbc6740..c03970d7 100644 --- a/_locales/zh/messages.json +++ b/_locales/zh/messages.json @@ -5,6 +5,21 @@ "buttonStopTitle": { "message": "停止说话" }, + "commandBrowserActionDescription": { + "message": "停止说话" + }, + "commandOpenWebsiteChromeWebStoreDescription": { + "message": "打开Chrome网上应用店页面" + }, + "commandOpenWebsiteDonateDescription": { + "message": "打开捐款页面" + }, + "commandOpenWebsiteMainDescription": { + "message": "打开网站" + }, + "commandStartStopDescription": { + "message": "开始/停止读取选择" + }, "extensionDescription": { "message": "在任何网页上选择文字,并让计算机大声读出它,只需点击对讲机按钮。" }, diff --git a/manifest.json b/manifest.json index cc3b4dc9..caafec1a 100644 --- a/manifest.json +++ b/manifest.json @@ -24,7 +24,25 @@ "chromeos": "Ctrl+Shift+A", "linux": "Ctrl+Shift+A" }, - "description": "__MSG_buttonDefaultTitle__" + "description": "__MSG_commandBrowserActionDescription__" + }, + "start-stop": { + "suggested_key": { + "windows": "Alt+Shift+A", + "mac": "Alt+Shift+A", + "chromeos": "Alt+Shift+A", + "linux": "Alt+Shift+A" + }, + "description": "__MSG_commandStartStopDescription__" + }, + "open-website-main": { + "description": "__MSG_commandOpenWebsiteMainDescription__" + }, + "open-website-chromewebstore": { + "description": "__MSG_commandOpenWebsiteChromeWebStoreDescription__" + }, + "open-website-donate": { + "description": "__MSG_commandOpenWebsiteDonateDescription__" } }, "requirements": {}, diff --git a/src/background.js b/src/background.js index 628497b0..864caf19 100644 --- a/src/background.js +++ b/src/background.js @@ -35,6 +35,7 @@ knownEvents:false, last:false, log:false, logError:false, +openUrlFromConfigurationInNewTab:false, Promise:false, promiseSeries:false, promiseTry:false, @@ -771,8 +772,36 @@ const enablePopup = () => { } ); + const commandMap = { + // NOTE: implicitly set by the browser, and actually "clicks" the Talkie icon. + // Handled by the popup handler (popup contents) and icon click handler. + // "_execute_browser_action": iconClickAction, + "start-stop": iconClickAction, + "open-website-main": () => openUrlFromConfigurationInNewTab("main"), + "open-website-chromewebstore": () => openUrlFromConfigurationInNewTab("chromewebstore"), + "open-website-donate": () => openUrlFromConfigurationInNewTab("donate"), + }; + const shortcutKeyCommandHandler = (command) => { log("Start", "shortcutKeyCommandHandler", command); + + const commandAction = commandMap[command]; + + if (typeof commandAction !== "function") { + throw new Error("Bad command action for command: " + command); + } + + return commandAction() + .then((result) => { + log("Done", "shortcutKeyCommandHandler", command, result); + + return undefined; + }) + .catch((error) => { + logError("Error", "shortcutKeyCommandHandler", command, error); + + throw error; + }); }; const broadcaster = new Broadcaster(); diff --git a/src/popup-start.js b/src/popup-start.js index 6e52f51e..4c45b2c3 100644 --- a/src/popup-start.js +++ b/src/popup-start.js @@ -25,6 +25,7 @@ getBackgroundPage:false, knownEvents:false, log:false, logError:false, +openUrlInNewTab:false, Promise:false, promiseTry:false, window:false, @@ -169,7 +170,7 @@ const addLinkClickHandlers = () => promiseTry( const location = ln.href; ln.onclick = function() { - chrome.tabs.create({active: true, url: location}); + openUrlInNewTab(location); }; } } diff --git a/src/shared.js b/src/shared.js index 36a190c6..eb0f81ba 100644 --- a/src/shared.js +++ b/src/shared.js @@ -48,6 +48,44 @@ const logDebug = (...args) => { log("Start", "Loading shared code"); +// TODO: move to a file? +// TODO: read from manifest.json? +// TODO: allow overrides? +const configuration = { + urls: { + "main": "https://github.com/joelpurra/talkie", + "chromewebstore": "https://chrome.google.com/webstore/detail/talkie/enfbcfmmdpdminapkflljhbfeejjhjjk", + "donate": "https://joelpurra.com/donate", + }, +}; + +const openUrlInNewTab = (url) => promiseTry( + () => { + if (typeof url !== "string") { + throw new Error("Bad url: " + url); + } + + // NOTE: only https urls. + if (!url.startsWith("https://")) { + throw new Error("Bad url, only https:// allowed: " + url); + } + + chrome.tabs.create({active: true, url: url}); + } +); + +const openUrlFromConfigurationInNewTab = (id) => promiseTry( + () => { + const url = configuration.urls[id]; + + if (typeof url !== "string") { + throw new Error("Bad url for id: " + id); + } + + return openUrlInNewTab(url); + } +); + const shallowCopy = (...objs) => Object.assign({}, ...objs); const last = (indexable) => indexable[indexable.length - 1]; @@ -745,6 +783,7 @@ const api = { log, logDebug, logError, + openUrlFromConfigurationInNewTab, promiseSeries, promiseTry, shallowCopy, From f8497035db50aecc971825e85808bb4868777012 Mon Sep 17 00:00:00 2001 From: Joel Purra Date: Thu, 2 Feb 2017 13:19:47 +0100 Subject: [PATCH 3/3] Mention shortcut keys in readme, add step-by-step instructions with screenshots how to change them --- README.md | 27 ++++++++++++++++++ .../talkie-keyboard-shortcuts-01.png | Bin 0 -> 33926 bytes .../talkie-keyboard-shortcuts-02.png | Bin 0 -> 40726 bytes 3 files changed, 27 insertions(+) create mode 100644 resources/keyboard-shortcuts/talkie-keyboard-shortcuts-01.png create mode 100644 resources/keyboard-shortcuts/talkie-keyboard-shortcuts-02.png diff --git a/README.md b/README.md index e3a6a25b..991b2f43 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,33 @@ 1. **Select desired text** on any web page. 1. **Click the Talkie button** in your browser bar Talkie play button +You can also use the **Talkie shortcut key**: + +- +Shift+A on macOS +- Ctrl+Shift+A on Windows, Linux, Chrome OS +- If the key does not work, please check that it is not already in use by another extension. + +
+ How to check or change the Talkie shortcut key +
    +
  1. + In Chrome, click *Extensions* in the *Window* menu. +
  2. +
  3. + At the bottom of the extensions list, click *Keyboard shortcuts* in the lower right corner. +

    + Screenshot of Chrome's list of installed extensions, focusing on Talkie +

    +
  4. +
  5. + From the *Keyboard Shortcuts for Extensions and Apps* window you can check or change keyboard shortcuts for all Chrome extensions and apps. This way you also can verify that there are no shortcut key collisions between extensions. +

    + Screenshot of the Keyboard Shortcuts for Extensions and Apps window in Chrome, focusing on Talkie shortcuts +

    +
  6. +
+
+ ## Features diff --git a/resources/keyboard-shortcuts/talkie-keyboard-shortcuts-01.png b/resources/keyboard-shortcuts/talkie-keyboard-shortcuts-01.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbff38d4188893d7380fa6a9655c56ac158d195 GIT binary patch literal 33926 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 bf&Ii!WY!brECtWI1^g7{)MSy;W}p5C?HFdC literal 0 HcmV?d00001