Skip to content

Commit

Permalink
Implement Reverso Context #19
Browse files Browse the repository at this point in the history
Speak selected text by Alt+Cmd in Safari
  • Loading branch information
filimo committed Oct 10, 2019
1 parent baf30b0 commit 9369957
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 23 deletions.
2 changes: 1 addition & 1 deletion ReaderTranslator/Views/ReaderView/Modes/SafariView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ struct SafariView: View {
self.store.translateAction = .translator(event.extra?.selectedText ?? "")
}
}
if extra.keyCode == 82 { // r
if extra.altKey == true && extra.metaKey == true { //Alt+Cmd
SpeechSynthesizer.speak()
}
}
Expand Down
50 changes: 28 additions & 22 deletions ReaderTranslatorSafari/reader-translate-extension.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,23 @@
(function() {
function send(event) {
safari.extension.dispatchMessage(JSON.stringify(event))
function send(name, source, e) {
var txt = document.getSelection().toString()
if(txt.trim()) {
let event = {
time: Date(), // to prevent removing duplicate events
name: name,
source: source,
extra: {
ctrlKey: e.ctrlKey,
altKey: e.altKey,
metaKey: e.metaKey, //⌘ Command
shiftKey: e.shiftKey,
which: e.which,
keyCode: e.keyCode,
selectedText: txt,
}
}
safari.extension.dispatchMessage(JSON.stringify(event))
}
}

document.addEventListener("DOMContentLoaded", (event) => {
Expand All @@ -11,31 +28,20 @@
document.addEventListener('selectionchange', (event) => {
var txt = document.getSelection().toString()
if(txt.trim()) {
send({name: 'selectionchange', source: 'document', extra: { selectedText: txt } })
send('selectionchange', 'document', event)
}
})

window.addEventListener('keydown', (e) => {
if((e.keyCode >= 65 && e.keyCode <= 91)) {
if(['text', 'textarea'].indexOf(e.srcElement.type) != -1) {
if(!(e.ctrlKey || e.altKey) && e.keyCode != 91) return
window.addEventListener('keydown', (event) => {
if(event.keyCode >= 65 && event.keyCode <= 90) {
if(['text', 'textarea'].indexOf(event.srcElement.type) != -1) {
if(!(event.ctrlKey || event.altKey)) return
}
var txt = document.getSelection().toString()
let event = {
time: Date(), // to prevent removing duplicate events
name: 'keydown',
source: 'window',
extra: {
ctrlKey: e.ctrlKey,
altKey: e.altKey,
metaKey: e.metaKey, //⌘ Command
shiftKey: e.shiftKey,
which: e.which,
keyCode: e.keyCode,
selectedText: txt,
}
send('keydown', 'window', event)
}else{
if(event.altKey && event.metaKey) {
send('keydown', 'window', event)
}
send(event)
}
})
})()
Expand Down

0 comments on commit 9369957

Please sign in to comment.