npm.io
0.2.1 • Published 21h agoCLI

taja-cli

Licence
MIT
Version
0.2.1
Deps
0
Size
4 kB
Vulns
0
Weekly
0

TAJA-CLI (타자-CLI)

한국인을 위한 크로스플랫폼 모던 풀스크린 TUI 타자 연습기

taja-cli는 터미널(CLI) 환경에서 한글과 영어 타자 연습을 직관적이고 아름답게 즐길 수 있는 Rust 기반 TUI(Text User Interface) 프로그램입니다. OS 한글 입력기 상태에 구애받지 않는 내장 한글 오토마타와 정밀한 손가락 가이드 자판 위젯을 통해 독수리 타자 교정 및 타자 속도 향상을 돕습니다.


주요 특징

1. 자체 한글 오토마타 엔진 내장

  • 영문 입력 상태 유지: OS 입력기를 '영문'으로 둔 채 타이핑하면, 프로그램 내부에서 두벌식 조합 규칙에 따라 한글 자모를 실시간으로 조화롭게 조합합니다.
  • 자소 단위 백스페이스: 글자 단위가 아닌 자모 한 개 단위의 섬세한 역분해(Decomposition) 및 삭제를 완벽 지원합니다.
  • 단독 자모 결합 방지: 자리 연습 시 단독 자모(예: ㄱㄴㄷ)와 완성형 글자(예: 하늘)의 입력 흐름을 구분하여, 단독 자모가 결합 버퍼에 말려 들어가지 않도록 실시간 글자 수준 우회 로직을 구현했습니다.
2. 지능형 실시간 가이드 & 판정
  • 동적 가이드 자모 추론: 완성형 글자(예: )를 입력할 때, 사용자의 현재 입력 버퍼 상태에 맞춰 다음에 쳐야 할 진짜 물리 자모(예: 을 치기 전엔 , 치고 난 뒤엔 )를 영리하게 계산하여 안내합니다.
  • 완화된 한글 오타 판정: 조합 중인 미완성 글자 상태를 완전히 분해하여 타깃 자모의 접두사(Prefix) 관계를 만족하면 오타로 판정하지 않고 기다려 주는 사용자 친화적 정확도 판정을 적용했습니다.
  • 지능형 입력 완료 감지: 조합 중인 글자가 남아 있을 때는 대기하고, 마지막 글자 입력 시 오타가 발생하더라도 정상 완료 감지(count_completed_chars)하여 자연스럽게 세션이 넘어가도록 정교화했습니다.
3. 풍성한 연습 모드
  • 자리 연습:
    • 한글 (Level 1~6): 기본 자리부터 쌍자음 및 복합 모음 연습까지 지원.
    • 영어 (Level 1~5): QWERTY 자판의 홈 로우, 탑 로우, 바텀 로우, 대소문자 혼합 및 특수 기호/숫자 단계적 지원.
  • 낱말 연습: 700개 이상의 한글 단어650개 이상의 영단어 및 개발자용 용어 이스터에그 수록.
  • 문장 연습: 속담, 위인 명언, 시 구절, 헌법 조문 등 한/영 각각 100개씩의 풍성한 에셋을 탑재하여 셔플링(Shuffle) 모드로 매번 새로운 문장 제공.
4. 실시간 입력 피드백
  • 사용자가 실제로 입력한 값이 화면에 그대로 표시되며, 목표 텍스트와 비교해 맞은 글자는 초록색, 틀린 글자는 빨간색으로 즉시 보여줍니다.
  • 입력이 없을 때는 커서로 대기 상태를 명확히 표시합니다.
5. 똑똑한 타이머
  • 문장/낙말 연습에서 한 문장(단어)을 완료하면 타이머가 일시정지되고, 다음 문장 입력 시작 시 자동 재개됩니다.
  • 휴식 시간에 타수/정확도가 왜곡되지 않습니다.
6. 정밀 통계 및 취약 키 분석
  • 타자 세션이 완료될 때마다 타수(CPM) 및 정확도(%)를 로컬 JSON 저장소(~/.typing-practice/history.json)에 영구 보관합니다.
  • 전체 통계 창에서 역대 최고 타수 및 평균 타수를 조회할 수 있으며, 오타 횟수를 계산해 가장 취약한 탑 3 오타 키를 지적해 교정을 돕습니다.
7. 게임 모드
  • Time Attack: 제한 시간 내 최대한 많은 단어 입력
  • Survival: 5개의 목숨으로 버티며 점점 어려워지는 단어 타이핑
  • Typing Rain: 아래로 떨어지는 단어를 재빨리 타이핑해 막아내기
  • Flash Typing: 단어를 잠깐 보고 기억해서 입력 (기억력 + 타자)
  • Daily Challenge: 매일 같은 10개 단어로 친구와 경쟁
  • Long Text Race: 긴 글을 문단 단위로 완주하며 CPM 추이 확인

화면 미리보기

  • 메인 메뉴: 심플하고 조화로운 옐로우 팁 메시지와 직관적인 메뉴 레이아웃.
  • 가상 키보드 가이드 위젯: 연습하는 언어(한글/영어)에 맞춰 두벌식 자판 또는 QWERTY 자판이 동적으로 전환 렌더링되며, 쳐야 할 다음 물리 키와 담당 손가락(L2L5, R2R5)이 시각적으로 하이라이트됩니다.

설치 및 실행 방법

Rust를 설치하지 않아도 npm으로 바로 쓸 수 있습니다. (권장)

요구 사항
방식 필요한 것
npm (권장) Node.js 12 이상
Cargo (소스 빌드) Rust & Cargo
공통 터미널 (macOS Terminal, iTerm2, Alacritty, Windows Terminal 등)
1. npm으로 설치 (권장)

전역 설치 후 taja 명령으로 실행합니다.

npm install -g taja-cli
taja

설치만 하고 한 번 실행해 보려면:

npx taja-cli
지원 플랫폼

첫 실행 시 OS/아키텍처에 맞는 바이너리를 GitHub Releases에서 받아 캐시합니다. Rust 툴체인은 필요 없습니다.

OS 아키텍처 패키지
macOS Apple Silicon (arm64) taja-cli-macos-arm64.tar.gz
macOS Intel (x64) taja-cli-macos-x64.tar.gz
Linux x64 taja-cli-linux-x64.tar.gz
Linux arm64 taja-cli-linux-arm64.tar.gz
Windows x64 taja-cli-windows-x64.zip
업데이트 / 삭제
# 최신 버전으로 업데이트
npm install -g taja-cli@latest

# 제거
npm uninstall -g taja-cli

npm 패키지는 네이티브 바이너리 래퍼입니다. taja 실행 시 바이너리가 없으면 Release 에셋을 자동으로 내려받습니다.

2. Cargo로 빌드 및 실행 (소스)

개발·기여할 때 사용합니다.

git clone https://github.com/parkjangwon/taja-cli.git
cd taja-cli
cargo run --release

빌드 결과물만 설치하려면:

cargo install --path .
# 이후: taja-cli  (Cargo 바이너리 이름)

타자 연습을 시작하기 전에 **OS 입력기 상태를 반드시 '영문(QWERTY)'**으로 전환해 주세요. (내장 한글 오토마타 엔진이 키 입력을 자모로 변환하여 작동합니다.)


프로젝트 구조

taja-cli/
├── Cargo.toml              # 의존성 및 패키지 메타데이터
├── README.md
├── npm/                    # npm 배포 래퍼 (taja 커맨드)
│   ├── package.json
│   └── bin/index.js
└── src/
    ├── main.rs             # 터미널 이벤트 루프·입력 처리 (72줄)
    ├── app/
    │   ├── mod.rs          # App 구조체, 코어 입력/통계
    │   ├── timer.rs        # 타이머 시작/일시정지/재개
    │   ├── practice.rs     # 자리·낱말·문장 연습 설정
    │   └── game.rs         # 6개 게임 모드 로직
    ├── controller/
    │   ├── mod.rs          # 입력 디스패처
    │   ├── menu.rs         # 메뉴 키보드 핸들러
    │   ├── practice.rs     # 연습 키보드 핸들러
    │   └── game.rs         # 게임 키보드 핸들러
    ├── ui/
    │   ├── mod.rs          # 렌더러 디스패처·공용 위젯
    │   ├── menu.rs         # 메뉴 화면
    │   ├── practice.rs     # 연습 화면
    │   └── game.rs         # 게임 화면
    ├── assets.rs           # 연습 문장·단어 데이터 (490줄)
    ├── hangeul.rs          # 두벌식 오토마타·정오 판정
    └── storage.rs          # JSON 기록 저장

표준 운지법 (손가락 매핑) 안내

taja-cli 하단 가이드 키보드는 표준 QWERTY 및 두벌식 운지 사선 열을 기반으로 가이드를 띄웁니다:

  • 왼손 새끼 (L5): 1, /, , / Q, A, Z
  • 왼손 약지 (L4): 2, /, , / W, S, X
  • 왼손 중지 (L3): 3, /, , / E, D, C
  • 왼손 검지 (L2): 4, 5, /, /, , , , / R, T, F, G, V, B
  • 오른손 검지 (R2): 6, 7, , , , , , / Y, U, H, J, N, M
  • 오른손 중지 (R3): 8, , , , / I, K, ,
  • 오른손 약지 (R4): 9, /, , . / O, L, .
  • 오른손 새끼 (R5): 0, -, =, /, ;, ', / 및 오른쪽 기호 전체 / P, ;, /
  • 양손 엄지 (Space): 공백(Space Bar)

라이선스

이 프로젝트는 MIT 라이선스에 따라 배포됩니다. 자유롭게 기여하거나 수정해 사용하실 수 있습니다.

Keywords