您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Plays selected text as morse code.
当前为
- // ==UserScript==
- // @name toMorse
- // @description Plays selected text as morse code.
- // @namespace https://greasyfork.org/en/users/11891-qon
- // @author Qon
- // @include *
- // @include about:toMorse
- // @noframes
- // @grant GM_getValue
- // @grant GM_setValue
- // @license Simple Public License 2.0 (SimPL) https://tldrlegal.com/license/simple-public-license-2.0-%28simpl%29
- // @version 0.0.1.20150722035922
- // ==/UserScript==
- /*
- TODO
- GUI
- Volume control
- Speed control
- Pitch control
- Set your own hotkey
- BUG
- perfect Selection animation
- */
- var sett = {}
- sett['cwpm'] = {def: 20, val: 20, min: 1, max: 100, label: 'Letter WPM', description: 'cwpm'}
- sett['ewpm'] = {def: 20, val: 20, min: 1, max: 100, label: 'Effective WPM', description: 'ewpm'}
- sett['tone'] = {def: 800, val: 800, min: 200, max: 3200, label: 'Tone frequency', description: 'tone'}
- var current = {}
- for (var key in sett) {
- if(sett.hasOwnProperty(key)) {
- sett[key]['val'] = GM_getValue(key, sett[key]['val'])
- }
- }
- function playTextLCWO(charWpm, effectiveWpm, tone, str) {
- var prevAudio = document.getElementById('audioLCWO')
- if(prevAudio) {
- prevAudio.pause()
- prevAudio.remove()
- }
- var audio = document.createElement('audio')
- audio.id = 'audioLCWO'
- audio.src = 'http://cgi2.lcwo.net/cgi-bin/cw.ogg?s='+charWpm+'&e='+effectiveWpm+'&f='+tone+'&t='+str
- audio.addEventListener('ended', function(){document.getElementById('audioLCWO').remove()});
- document.body.appendChild(audio)
- audio.play()
- }
- function keypress (e) {
- if (!e) e = window.event;
- if (e.ctrlKey && e.key == 'm') {
- playTextLCWO(sett['cwpm']['val'], sett['ewpm']['val'], sett['tone']['val'], window.getSelection().toString())
- }
- }
- window.addEventListener("keydown", keypress);
- if (document.location == 'https://greasyfork.org/en/scripts/11117-tomorse') {
- var settingsdiv = document.createElement('div');
- settingsdiv.id = 'tomorse-settings'
- var h3 = document.createElement('h3')
- h3.innerHTML = 'Script Settings'
- h3.style.marginBottom = '0'
- h3.style.paddingBottom = '0'
- settingsdiv.appendChild(h3)
- var qontdiv = document.createElement('div');
- qontdiv.style.padding = '1em'
- qontdiv.style.margin = '0'
- qontdiv.style.background = '#E6FFE6'
- function setting(name, variable, decription) {
- var span = document.createElement('span')
- span.innerHTML = name+': '
- var inpN = document.createElement('input')
- inpN.id = 'input-'+variable
- inpN.name = variable
- inpN.type = 'number'
- inpN.value = sett[variable]['val']
- var inpRange = document.createElement('input')
- inpRange.id = 'input-range-'+variable
- inpRange.name = variable
- inpRange.type = 'range'
- inpRange.min = sett[variable]['min']
- inpRange.max = sett[variable]['max']
- inpRange.value = sett[variable]['val']
- f = function(ev){
- var el = ev.target
- var inte = parseInt(el.value)
- GM_setValue(el.name, inte)
- sett[el.name]['val'] = inte
- document.getElementById('input-range-'+el.name).value = inte
- document.getElementById('input-'+el.name).value = inte
- if(el.name == 'cwpm' && document.getElementById('wpm-link').checked) {
- document.getElementById('input-range-'+'ewpm').value = inte
- document.getElementById('input-'+'ewpm').value = inte
- GM_setValue('ewpm', inte)
- sett['ewpm']['val'] = inte
- }
- }
- inpN.addEventListener('input', f)
- inpRange.addEventListener('input', f)
- qontdiv.appendChild(span)
- qontdiv.appendChild(inpN)
- qontdiv.appendChild(inpRange)
- qontdiv.appendChild(document.createElement('br'))
- }
- for(var key in sett) {
- if(sett.hasOwnProperty(key)) {
- setting(sett[key]['label'], key, sett[key]['description'])
- }
- }
- var box = document.createElement('input')
- box.id = 'wpm-link'
- box.checked = true
- box.type = 'checkbox'
- var linkSpan = document.createElement('span')
- linkSpan.innerHTML = 'Copy value to "Effective WPM"'
- linkSpan.style.fontSize = '75%'
- linkSpan.style.marginLeft = '100px'
- // linkSpan.style.marginLeft = 'auto'
- qontdiv.insertBefore(linkSpan, qontdiv.getElementsByTagName('br')[0])
- qontdiv.insertBefore(box, qontdiv.getElementsByTagName('br')[0])
- // console.log('QQQ')
- document.getElementById('script-content').appendChild(settingsdiv)
- settingsdiv.appendChild(qontdiv)
- }