PageSourceSearch

https://coral.shoes/morse-trainer/

html coral.shoes collected 2026-10-09 23:56:30 UTC 7,347 bytes, 136 lines download raw bytes

1<!DOCTYPE html>
2<html>
3    <head>
4        <meta charset="utf-8"/>
5        <title> RX | Coral Morse Trainer </title>
6        <link rel="stylesheet" href="morse-trainer.css">
7        <link rel="icon" href="favicon.png">
8        
8<script src="morse-trainer.js" defer></script>
8
9        
9<script src="history.js" defer></script>
9
10        
10<script src="edit-distance.js" defer></script>
10
11        
11<script src="rx.js" defer></script>
11
12    </head>
13    <body>
14        <header>
15            <div class="head">
16                <div>
17                    Written by @xeniagda
18                    <br/>
19                    Source available on <a href="https://github.com/xeniagda/shoe-router/tree/master/morse-trainer">GitHub</a>
20                </div>
21            </div>
22            <div class="head">
23                <h2><a href="index.html">Coral Morse Trainer</a></h2>
24                <h3>RX Training</h3>
25            </div>
26
27            <a class="head" id="settings-switch" href="#">
28                <img src="./gear.svg" alt="gear icon"/>
29            </a>
30        </header>
31        <div id="settings">
32            <em> In case no audio is played, try refreshing the page! If the first tone is cut off, try pressing the "Test tone" button below to start the audio early </em>
33            <div class="setting">
34                <h2> Usage </h2>
35                Use text field in the key to write. <br/>
36                Use space to submit word. <br/>
37                Use tab to get a new sentance. <br/>
38                Use escape to pause. <br/>
39                Key:
40                <ul>
41                    <li> <span class="char correct">A</span>: Correct! </li>
42                    <li> <span class="char extraneous">A</span>: You entered an extra character! </li>
43                    <li> <span class="char missing">A</span>: You missed a character! </li>
44                    <li> <span class="char incorrect">A<span class="corrected">B</span></span>: You entered the wrong character, the correct one is displayed below it. </li>
45                </ul>
46            </div>
47            <div class="setting" id="modes">
48                <h2> Mode </h2>
49                <div id="button-select-sentence" class="button-select"><em>Entire sentences</em>: Plays the entire message at once with no breaks.</div>
50                <div id="button-select-word" class="button-select selected"><em>Word-by-word</em>: Plays one word at a time, waiting until you've typed it to continue</div>
51            </div>
52            <div class="setting">
53                <h2> Tone </h2>
54                Volume: <input id=volume type=range value=1 min=0 max=300></input> <button id="test-tone">Test tone</button>
55                <br />
56                Frequency: <input id=freq type=number value=512 min=100 max=2000 step=10></input> [Hz]
57                <br />
58                Enable light: <input id=enable-light type=checkbox></input>
59            </div>
60            <div class="setting">
61                <h2> Speed </h2>
62                <input type="checkbox" id="split-speed-cb"></input><label for="split-speed-cb">Different character and word speed?</label>
63                <br />
64                <div id="same-speed">
65                    <div> WPM: <input id=speed-wpm type=number value=12 min=1 max=50 step=0.5> </input> </div>
66                </div>
67                <div id="split-speed">
68                    <div> Character WPM: <input id=speed-wpm-char type=number value=12 min=1 max=50 step=0.5> </input> </div>
69                    <div> Word WPM: <input id=speed-wpm-word type=number value=12 min=1 max=50 step=0.5> </input> </div>
70                </div>
71            </div>
72        </div>
73        <main id="main">
74            <div id="history">
75                <h3>Attempt <span id="history-count-total">37</span> (<span id="history-count-success">21</span>)</h3>
76                <a id="history-reset" href="#">Reset</a>
77                <div id="history-list">
78                    <div class="history-attempt">
79                        <span class="history-idx">3: </span>
80                        <span class="history-accuracy">90.03%</span>
81                        <span class="history-missed">-3</span>/<span class="history-incorrect">?5</span>/<span class="history-additional">+1</span>
82                        <span class="history-name" data-long="KOCH-blahblah">Koch</span>
83                    </div>
84                    <div class="history-attempt fail">
85                        <span class="history-idx">2: </span>
86                        <span class="history-accuracy">40.13%</span>
87                        <span class="history-missed">-7</span>/<span class="history-incorrect">?0</span>/<span class="history-additional">+0</span>
88                        <span class="history-name" data-long="KOCH-blahblah">Quotes</span>
89                    </div>
90                </div>
91            </div>
92            <div id="main-split">
93                <div id="textpart">
94                    <p id="reset-confirm" class="warning">
95                        Are you sure you want to skip this text? Press again to confirm
96                    </p>
97                    <div id="buttons">
98                        <div id="button-play-outer" class="button-outer" title="Play (space)">  <div id="button-play-inner" class="button-inner"> </div> </div>
99                        <div id="button-stop-outer" class="button-outer" title="Pause (ESC)"> <div id="button-stop-inner" class="button-inner"> </div> </div>
100                        <div id="button-next-outer" class="button-outer active" title="Next (Tab)">  <div id="button-next-inner" class="button-inner"> </div> </div>
101                    </div>
102                    <div id="text">
103                    </div>
104                    <span id="author" class="type-bright"></span>
105                    <br/>
106                    <span id="accuracy" class="type-bright"></span>
107                </div>
108                <div id="under-text">
109                    <div id="result-screen">
110                        <div class="result-container" id="accuracy-result-container">
111                            <span class="result" id="accuracy-result"> idk% </span>
112                            <span class="result-title"> accuracy </span>
113                        </div>
114                        <div class="result-container" id="wpm-result-container">
115                            <span class="result" id="wpm-result"> 20/10 wpm </span>
116                            <span class="result-title"> wpm (char/word) </span>
117                        </div>
118                        <div class="result-container" id="chars-result-container">
119                            <span class="result" id="chars-result"> 123 </span>
120                            <span class="result-title"> chars </span>
121                        </div>
122                        <div class="result-container" id="mode-result-container">
123                            <span class="result" id="mode-result"> koch idk </span>
124                            <span class="result-title"> mode </span>
125                        </div>
126                    </div>
127                    <div id="key">
128                        <input id="text-inp" type="text"> </input>
129                    </div>
130                </div>
131            </div>
132            <div id="sentence-config"></div>
133        </main>
134    </body>
135
136</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.