typing.works 0.0.1 → 0.3.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -3
- package/bin/typing.works.js +18 -0
- package/package.json +13 -5
- package/vendor/darwin-arm64/typingworks +0 -0
- package/vendor/darwin-x64/typingworks +0 -0
- package/vendor/linux-arm64/typingworks +0 -0
- package/vendor/linux-ia32/typingworks +0 -0
- package/vendor/linux-x64/typingworks +0 -0
- package/bin/hold.js +0 -3
package/README.md
CHANGED
|
@@ -1,5 +1,64 @@
|
|
|
1
|
-
# typing.works
|
|
1
|
+
# typing.works — terminal (beta)
|
|
2
2
|
|
|
3
|
-
typing.works
|
|
3
|
+
터미널에서 치는 [typing.works](https://typing.works). 한글·영문 타자 연습, 웹과 같은 판정, 로그인하면 기록·통계·랭크전까지.
|
|
4
|
+
Typing practice from [typing.works](https://typing.works), in your terminal — Korean & English, same scoring as the web, records, stats and ranked matches.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
## 설치 · Install
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npx typing.works # 설치 없이 바로 · run without installing
|
|
10
|
+
npm i -g typing.works # 늘 쓰려면 · install → `typingworks`
|
|
11
|
+
brew install pers-dev/tap/typing.works # macOS · Linux
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
macOS (Apple Silicon · Intel) · Linux (x64 · arm64 · 32-bit x86). 통신(로그인·기록)에 `curl`, 기록 올리기에 `gzip` 을 씁니다.
|
|
15
|
+
Windows는 아직입니다 — WSL에서 돌아갑니다.
|
|
16
|
+
|
|
17
|
+
## 쓰는 법 · Keys
|
|
18
|
+
|
|
19
|
+
켜면 바로 단문을 칩니다. · It opens straight into typing.
|
|
20
|
+
|
|
21
|
+
| 키 | |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Enter · Space | 문장 끝 · finish |
|
|
24
|
+
| Esc | 처음부터 · restart |
|
|
25
|
+
| ↑ ↓ | 다음·이전 문장 · next/prev |
|
|
26
|
+
| Tab | 한/영 — 입력기는 영문으로 두고 두벌식 자리 그대로 · Korean/English (keep your OS input in English) |
|
|
27
|
+
| ^S ^L ^P | 단문 · 장문 · 팬그램 · sentence · paragraph · pangram |
|
|
28
|
+
| ^E | 문장 언어 · language |
|
|
29
|
+
| ^Z | 문장 크게/보통(macOS 터미널 · xterm) · bigger text |
|
|
30
|
+
| ^R | 기록 · 통계 · records & stats |
|
|
31
|
+
| ^K | 랭크전 · ranked |
|
|
32
|
+
| ^O ^A ^G ^Q | 설정 · 계정 · 도움말 · 끝 · settings · account · help · quit |
|
|
33
|
+
|
|
34
|
+
계정은 typing.works 와 같습니다. 한글은 한글이 든 고정폭 글꼴(D2Coding · Sarasa Mono K 등)에서 가장 보기 좋습니다.
|
|
35
|
+
|
|
36
|
+
## 익명 사용 통계 · Anonymous usage stats
|
|
37
|
+
|
|
38
|
+
어떻게 쓰이는지 알려고 아주 적은 것만 보냅니다. · We send a small amount of anonymous data to learn how it's used.
|
|
39
|
+
|
|
40
|
+
- **보내는 것 · sent**: 켰다 · 묶음을 끝냈다(언어 · 갈래 · 문장 수 · 평균 타/분 · 정확도) · 랭크 판 결과 · 로그인했다 — 판 번호 · OS · 터미널 이름과 함께. 사람이 아니라 이 기기에서 만든 난수 ID로 셉니다.
|
|
41
|
+
- **보내지 않는 것 · never sent**: 친 글 · 문장 · 계정(이메일 · 닉네임).
|
|
42
|
+
- **끄기 · opt out**: 설정(^O) «익명 사용 통계» · `TW_NO_TELEMETRY=1` · `DO_NOT_TRACK=1` · `typingworks --no-telemetry`
|
|
43
|
+
- **무엇이 나가는지 보기 · see exactly what is sent**: `TW_TELEMETRY_LOG=~/tw-telemetry.log typingworks`
|
|
44
|
+
|
|
45
|
+
## 새 판 · Updates
|
|
46
|
+
|
|
47
|
+
켤 때(6시간에 한 번) npm 에 새 판이 있는지 보고, 있으면 오른쪽 위에 알립니다. **^U** 를 누르면 깐 방법대로 올리고 새 판으로 다시 켭니다.
|
|
48
|
+
Checks npm for a newer version (every 6 hours) and shows it top-right. Press **^U** to update the way you installed it and restart.
|
|
49
|
+
|
|
50
|
+
| 깐 방법 · installed with | ^U 가 돌리는 것 · runs |
|
|
51
|
+
|---|---|
|
|
52
|
+
| brew | `brew upgrade typing.works` |
|
|
53
|
+
| npm i -g | `npm i -g typing.works@latest` |
|
|
54
|
+
| npx | `npx typing.works@latest` |
|
|
55
|
+
|
|
56
|
+
끄기 · disable: `TW_NO_UPDATE_CHECK=1`
|
|
57
|
+
|
|
58
|
+
## 저장 · Data
|
|
59
|
+
|
|
60
|
+
`~/.typingworks` — 설정 · 이 기기의 기록 · 로그인 토큰(이 파일에만, 권한 600). 지우면 처음 상태가 됩니다.
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
© 2026 Perspective. All rights reserved. 무료로 쓸 수 있습니다. 자세한 것은 LICENSE.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// typing.works — 이 기기에 맞는 실행 파일을 골라 그대로 넘긴다(입출력 · 종료 코드 · 신호 그대로). 설치 스크립트는 없다.
|
|
3
|
+
"use strict";
|
|
4
|
+
const { spawnSync } = require("child_process");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const key = `${process.platform}-${process.arch}`;
|
|
8
|
+
const exe = path.join(__dirname, "..", "vendor", key, "typingworks");
|
|
9
|
+
if (!fs.existsSync(exe)) {
|
|
10
|
+
console.error(`typing.works: ${key} 은 아직 지원하지 않습니다 — macOS · Linux(x64 · arm64 · x86). Windows 는 WSL 에서 돌아갑니다.`);
|
|
11
|
+
console.error(`typing.works: ${key} is not supported yet — macOS and Linux only (use WSL on Windows).`);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
try { fs.accessSync(exe, fs.constants.X_OK); } catch { try { fs.chmodSync(exe, 0o755); } catch {} }
|
|
15
|
+
const r = spawnSync(exe, process.argv.slice(2), { stdio: "inherit" });
|
|
16
|
+
if (r.error) { console.error(`typing.works: ${r.error.message}`); process.exit(1); }
|
|
17
|
+
if (r.signal) process.kill(process.pid, r.signal);
|
|
18
|
+
process.exit(r.status === null ? 1 : r.status);
|
package/package.json
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typing.works",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "typing.works
|
|
5
|
-
"
|
|
3
|
+
"version": "0.3.0-beta.3",
|
|
4
|
+
"description": "typing.works in your terminal — Korean & English typing practice, records, stats and ranked matches",
|
|
5
|
+
"bin": {
|
|
6
|
+
"typing.works": "bin/typing.works.js",
|
|
7
|
+
"typingworks": "bin/typing.works.js"
|
|
8
|
+
},
|
|
9
|
+
"files": ["bin", "vendor", "README.md", "LICENSE"],
|
|
10
|
+
"os": ["darwin", "linux"],
|
|
11
|
+
"cpu": ["arm64", "x64", "ia32"],
|
|
12
|
+
"engines": { "node": ">=14" },
|
|
6
13
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
14
|
+
"homepage": "https://typing.works",
|
|
15
|
+
"author": "typing.works",
|
|
16
|
+
"keywords": ["typing", "typing-practice", "typing-test", "korean", "hangul", "terminal", "tui", "cli", "wpm"]
|
|
9
17
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/hold.js
DELETED