Instruction of CW Keyboard

# CH32-CW-Keyboard ## User Manual
### A tiny device that turns a USB keyboard into a Morse code keyer **3.5mm audio jack outputs straight-key keying signal. Connect to radio CW KEY with a standard audio cable.**

**Firmware Version: 1.1.9** **Designed by DeVolt Elec**

Table of Contents

Chapter
1Quick Start
2Main Screen
3Two Working Modes
4Button Operations
5Main Menu
6Morse Settings
7Button Function Settings
8Repeat Sending
9Saved Messages
10Training Mode
11Keyboard Layout
12Version Page
13Factory Reset
AppendixSupported Characters

1. Quick Start

Hardware Interfaces

PortTypePurpose
USBCUSB Type-C receptacleConnect 5V power for supply or Li-ion battery charging
USBAUSB Type-A receptacleConnect a standard USB keyboard (HID keyboard)
3.5mm3.5mm audio jackOutputs straight-key keying signal, connect to radio CW KEY jack

What You Need

  • One CH32-CW-Keyboard board (buzzer built-in)
  • One standard USB keyboard (wired HID)
  • 5V USB power or 3.7V Li-ion battery
  • (Optional) 3.5mm male-to-male audio cable to connect device to radio KEY jack

Three Steps

  1. Plug a USB keyboard into the device’s USB Host (USBA) port.
  2. Power the device (USBC or battery). The OLED lights up with a welcome screen.
  3. Type on the USB keyboard — the built-in buzzer sounds Morse code, while the 3.5mm jack outputs the keying signal!

💡 Tip: The keying signal is always output on the 3.5mm jack. Beeper ON/OFF only controls the built-in buzzer.

🔑 Shortcuts: Ctrl+M menu | Ctrl+T training | Ctrl+R repeat | Esc stop repeat


2. Main Screen

The main screen after boot — this is where you’ll spend most of your time.

Status bar iconMeaning
Built-in buzzer ON
✕♫ (muted)Buzzer OFF (keying signal still active)
▓▓▓Battery icon (EEPROM only)
Caps Lock ON
4.0VBattery voltage (EEPROM only)
MsgLen:0Characters typed so far

The 3.5mm jack always outputs a straight-key keying signal (active low). Connect to radio CW KEY with a standard audio cable. The built-in buzzer provides local monitoring and can be toggled in the menu.

Global Shortcuts

ShortcutFunction
Ctrl+MOpen/close main menu
Ctrl+TOpen/close training menu (EEPROM only)
Ctrl+RStart repeat sending
EscStop repeat (when active)

These shortcuts work on the main screen and in menus — the fastest way to operate.


3. Two Working Modes

The device has two sending modes. Press Ctrl+M → Mode to switch.

Mode 0 — Immediate (DIR)

   Type and send instantly.

   ┌──────────────────────────────────┐
   │ Keyboard:   H → E → L → L → O    │
   │ Hear:       ....   .  .-..  ...  │
   │                                  │
   │ Screen: 4 lines × 14 chars       │
   │ Sending char ▐highlighted▐       │
   └──────────────────────────────────┘

Best for: Live QSO, daily practice, type-as-you-go.

Mode 1 — Buffer (BUF)

   Compose first, send with one key. Like texting.

   ┌──────────────┬──────────────┐
   │  Input/Edit  │  Sending     │  ← Split by vertical line
   │              │              │
   │  CQ CQ CQ   │  CQ CQ CQ    │
   │  DE BG7WG   │  DE BG7WG    │
   │  K_         │  K           │
   │              │              │
   └──────────────┴──────────────┘
    4 lines × 7 chars each side

   Edit freely, then press Enter to send everything at once.

Best for: Contest macros, CQ calls, messages needing editing.


4. Button Operations

Global Shortcuts (Recommended)

The fastest way to operate — press key combos directly on the main screen:

ShortcutFunction
Ctrl+MOpen/close main menu
Ctrl+TOpen/close training menu
Ctrl+RStart repeat sending
EscStop repeat (when active)

Hardware Buttons

        KEY1 (PB13)              KEY2 (PB14)
        ┌──────┐                 ┌──────┐
        │  BT1 │                 │  BT2 │
        └──────┘                 └──────┘

   Short press (<0.8s) → custom function    Short press (<0.8s) → custom function
   Long press (≥0.8s)  → force open menu    Long press (≥0.8s)  → (reserved)

Default: KEY1 short = OPEN MENU, KEY2 short = MODE SW. Configurable in menu → Btn Func.

USB Keyboard Shortcuts

KeyFunction
EnterSend (Mode 0) / Start send (Mode 1) / Confirm
BackspaceDelete one character
EscExit menu / Clear buffer / Stop repeat
Caps LockToggle case (▲ icon)
↑ ↓Navigate menu
← →Adjust values in menu
0–9Jump to menu item / Enter numbers
F1–F12Load saved message 1–12
Shift+F1–F12Save current text to slot
Ctrl+MOpen/close main menu
Ctrl+TOpen/close training menu
Ctrl+RStart repeat sending
EscStop repeat (when active)

5. Main Menu

Press Ctrl+M or long-press KEY1 to enter. ↑↓ to move, Enter to confirm, Esc to exit.

   ┌─────────────────────────────────────┐
   │                                     │
   │   Mode                      BUF     │  ← Current value
   │  ▐beeper                    OFF ▐   │  ← Highlighted = selected
   │   Morse Cfg                         │
   │   Btn Func                          │
   │   Repeat                            │  Menu scrolls, max 5 visible
   │   Keyboard                  QWERTY  │
   │   Version                           │
   │   RESET                             │
   │   SAVE&EXIT                         │
   │                                     │
   └─────────────────────────────────────┘
#Menu itemPress Enter to…
ModeToggle DIR(Immediate) / BUF(Buffer)
beeperToggle built-in buzzer ON/OFF (does not affect 3.5mm keying output)
Morse CfgEnter Morse code settings submenu
Btn FuncEnter button function settings submenu
RepeatEnter repeat sending settings submenu
KeyboardSwitch QWERTY / AZERTY
VersionShow version info
RESETFactory reset (confirmation required)
SAVE&EXITSave settings and exit

⚠️ Training mode is NOT in the main menu. Use Ctrl+T to open it.


6. Morse Settings

Menu → Morse Cfg to enter.

   ┌─────────────────────────────────────┐
   │                                     │
   │  ▐Word Split              Short  ▐  │  ← Word spacing
   │                                     │
   │   Cut Num                 OFF       │  ← Shortened numbers
   │                                     │
   │   BACK                               │  ← Back
   │                                     │
   └─────────────────────────────────────┘

Word Split

Controls the pause length between words.

OptionMultiple vs dotFeel
ShortFast, for QSO
Mid10×Moderate
Long14×Slow, for practice

Cut Num

Standard Morse digits are 5 elements each — long. Cut Num uses fewer elements per digit to speed up numbers.

Scheme0123456789
OFF(Standard)−−−−−·−−−−··−−−···−−····−·····−····−−···−−−··−−−−·
Mod A·−··−···−····−·····−····−−···−··−·
Mod B·−··−···−····−·−····−···−··−·
Mod C·−··−·−−···−···−···−−·−··−·

Cut Num only affects digits 0-9. Letters and punctuation are unaffected.


7. Button Function Settings

Menu → Btn Func to enter.

   ┌─────────────────────────────────────┐
   │                                     │
   │  ▐BT1 FUN              OPEN MENU ▐  │  ← KEY1 short-press function
   │                                     │
   │   BT2 FUN              MODE SW      │  ← KEY2 short-press function
   │                                     │
   │   BACK                               │
   │                                     │
   └─────────────────────────────────────┘

Each button can be assigned one of three functions:

FunctionEffect
BEEPER SWShort press toggles built-in buzzer ON/OFF
MODE SWShort press toggles DIR/BUF mode
OPEN MENUShort press opens main menu

Note: Regardless of KEY1’s short-press setting, long-pressing KEY1 always opens the main menu.


8. Repeat Sending

Have the device repeatedly send the same text, like a beacon.

Menu → Repeat to configure.

   ┌─────────────────────────────────────┐
   │                                     │
   │   RPT COUNT                          │
   │      003_                           │  ← How many times (000=INF)
   │                                     │
   │   RPT INTER                         │
   │       5s                            │  ← Interval
   │                                     │
   │   BACK                               │
   │                                     │
   └─────────────────────────────────────┘
ParameterDefaultRangeDescription
RPT COUNT31–999; 0=infinite(INF)How many times
RPT INTER5s1–999sInterval between sends

Start & Stop

Press Ctrl+R to start repeat, press Esc to stop.

  [1] Set count & interval   [2] Type text on main     [3] Ctrl+R to start loop

   ┌──────────┐            ┌──────────────┐          ┌──────────────┐
   │RPT COUNT 3│            │ CQ CQ CQ     │          │R1/3   5s     │  ← Status bar
   │RPT INTER 5│──────▶     │ DE BG7WG     │─────▶    │ CQ CQ CQ     │
   └──────────┘            │ K            │          │ DE BG7WG     │
                           └──────────────┘          │ K            │
                                                     └──────────────┘
  Press Esc to stop.

How it works:

  • Type the text to repeat on the main screen.
  • Press Ctrl+R: the current input is saved and sent repeatedly at the configured interval.
  • The status bar shows R1/3 5s meaning “Round 1 of 3, countdown 5 seconds”.
  • Press Esc to stop.

9. Saved Messages

12 slots, each stores a message. Accessed directly via F1–F12 keys — no menu needed.

Operation

   Load:
     Press F1~F12 → message from that slot auto-loads and sends (Mode 0)
     Press F1~F12 → message from that slot auto-loads into editor (Mode 1)

   Save:
     Type text on main → press Shift+F1~Shift+F12 → save to that slot
   Slot mapping:
   ┌────────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
   │ Slot   │  1 │  2 │  3 │  4 │  5 │  6 │  7 │  8 │  9 │ 10 │ 11 │ 12 │
   ├────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
   │ Load   │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │F10 │F11 │F12 │
   ├────────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
   │ Save   │S-F1│S-F2│S-F3│S-F4│S-F5│S-F6│S-F7│S-F8│S-F9│S-F10│S-F11│S-F12│
   └────────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
   S-F1 = Shift+F1
VersionMax per slot
EEPROM~2KB (2044 bytes)
Flash508 bytes

💡 Suggested use:
F1 = CQ call, F2 = Callsign, F3 = Signal report,
F4 = Name/QTH, F5 = 73 closing …


10. Training Mode

⚠️ Training mode is only available in the EEPROM version.

🔑 Press Ctrl+T to open the training menu. Training is separate from the main menu.

Training Main Menu

Press Ctrl+T to enter.

   ┌─────────────────────────────────────┐
   │                                     │
   │   METHOD                  KOCH      │  ← Training method
   │   LESSON                    1       │  ← Current lesson
   │  ▐SETTING                 ▐         │  ← Enter settings
   │   START                             │  ← Start training
   │   EXIT                              │  ← Exit
   │                                     │
   └─────────────────────────────────────┘

Three Methods

MethodDescription
KOCHAdds 1 new letter per lesson in frequency order. Lesson 1 = K, M. Standard ham radio training.
SEQUSequential A→B→C… then 0→1→2… after letters.
FREEFree mode: all A–Z and 0–9 randomized. No lesson progression.

Koch Lesson Character Sequence

Characters ordered by radio usage frequency. Lesson N covers the first N+1 characters.

  Lesson        New char                   Cumulative pool
  ─────────────────────────────────────────────────────────────
   1            K  M                       K M
   2            U                          K M U
   3            R                          K M U R
   4            E                          K M U R E
   5            S                          K M U R E S
   6            N                          K M U R E S N
   7            A                          K M U R E S N A
   8            P                          K M U R E S N A P
   9            T                          K M U R E S N A P T
  10            L                          K M U R E S N A P T L
  11            W                          ... + W
  12            I                          ... + I
  13            . (period)                 ... + .
  14            J                          ... + J
  15            Z                          ... + Z
  16            =                          ... + =
  17            F                          ... + F
  18            O                          ... + O
  19            Y                          ... + Y
  20            , (comma)                  ... + ,
  21            V                          ... + V
  22            G                          ... + G
  23            5                          ... + 5
  24            /                          ... + /
  25            Q                          ... + Q
  26            9                          ... + 9
  27            2                          ... + 2
  28            H                          ... + H
  29            3                          ... + 3
  30            8                          ... + 8
  31            B                          ... + B
  32            ? (question mark)          ... + ?
  33            4                          ... + 4
  34            7                          ... + 7
  35            C                          ... + C
  36            1                          ... + 1
  37            D                          ... + D
  38            6                          ... + 6
  39            0                          ... + 0
  40            X                          K M U R E S N A P T L W I . J Z
                                            = F O Y , V G 5 / Q 9 2 H 3 8
                                            B ? 4 7 C 1 D 6 0 X  (40 total)

💡 Tip: Start from Lesson 1 and ensure >90% accuracy before moving to the next lesson.

Sequential Lesson Character Sequence

In alphabetical order A→Z, then digits 0→9. Lesson N covers the first N+1 characters.

  Lesson        New char                   Cumulative pool
  ─────────────────────────────────────────────────────────────
   1            A  B                       A B
   2            C                          A B C
   3            D                          A B C D
   4            E                          A B C D E
   5            F                          A B C D E F
   6            G                          A B C D E F G
   7            H                          ... + H
   8            I                          ... + I
   9            J                          ... + J
  10            K                          ... + K
  11            L                          ... + L
  12            M                          ... + M
  13            N                          ... + N
  14            O                          ... + O
  15            P                          ... + P
  16            Q                          ... + Q
  17            R                          ... + R
  18            S                          ... + S
  19            T                          ... + T
  20            U                          ... + U
  21            V                          ... + V
  22            W                          ... + W
  23            X                          ... + X
  24            Y                          ... + Y
  25            Z                          A B C D E F G H I J K L M
                                            N O P Q R S T U V W X Y Z
  26            0                          ... + 0
  27            1                          ... + 1
  28            2                          ... + 2
  29            3                          ... + 3
  30            4                          ... + 4
  31            5                          ... + 5
  32            6                          ... + 6
  33            7                          ... + 7
  34            8                          ... + 8
  35            9                          A–Z + 0–9 (36 total)

Sequential has a maximum of 35 lessons (26 letters + 10 digits).

Training Settings (Koch/Sequential)

   ┌─────────────────────────────────────┐
   │                                     │
   │  ▐CHAR/GRP                 5     ▐  │  ← Chars per group (0=RAND)
   │   WPM                      20      │  ← Training speed
   │   GAP                      1       │  ← Spaces between groups
   │   TIME                    2min     │  ← Duration 1-5 min
   │   BACK                             │
   │                                     │
   └─────────────────────────────────────┘

   Free mode only: WPM, TIME, BACK.

Training Flow

    Settings done ──▶  READY ──▶  RUNNING ──▶  SCORING
                       1s ready     Morse plays     Compare & score
                                   User types input

   Status bar:  Method  Lesson  WPM
   Bottom:      "Playing..." or "Done  Ent=finish"

Scoring Screen

   ┌──────────────────────────────────────────────┐
   │ Score: 18/20  90%               Esc=exit     │
   ├──────────────┬───────────────────────────────┤
   │  Your input  │  Correct answer               │
   │              │                               │
   │ ▐K▐M R E ▐S▐│  K M ▐U▐R E ▐A▐               │  ← Box=error
   │  N A P T L  │  N A P T L                    │
   │  W I . J Z  │  W I . J Z                    │
   │  = F O Y ,  │  = F O Y ,                    │
   └──────────────┴───────────────────────────────┘
     ↑↓ Scroll for more

11. Keyboard Layout

Menu → Keyboard to toggle. Press Enter to switch between QWERTY and AZERTY.

   QWERTY                   AZERTY
   ┌─────────────────┐    ┌─────────────────┐
   │ Q W E R T Y ... │    │ A Z E R T Y ... │
   │ A S D F G H ... │    │ Q S D F G H ... │
   │ Z X C V B N ... │    │ W X C V B N ... │
   └─────────────────┘    └─────────────────┘

Choose AZERTY if using an AZERTY keyboard.


12. Version Page

Menu → Version to view.

   ┌─────────────────────────────────────┐
   │                                     │
   │            VERSION                   │
   │                                     │
   │             v1.1.9                  │  ← Firmware version
   │                                     │
   │     BG6VSK Provided to              │  ← (Custom version)
   │           BG7WG                     │
   │                                     │
   │        Press ENT Back               │
   │                                     │
   └─────────────────────────────────────┘

   Generic version only shows: VERSION + version number.

13. Factory Reset

Menu → RESET to enter. Confirmation required.

   ┌─────────────────────────────────────┐
   │                                     │
   │              WARING                  │
   │                                     │
   │       ALL SET WILL BE RESET          │  ← All settings will be cleared
   │                                     │
   │       Press ENT For Sure            │  ← Enter = Confirm
   │       Press ESC For Back            │  ← Esc   = Cancel
   │                                     │
   └─────────────────────────────────────┘

After reset, these defaults are restored:

ItemDefault
ModeDIR (Immediate)
BeeperOFF
WPM20
Word SplitShort (7×)
Cut NumOFF
KEY1 functionOPEN MENU
KEY2 functionMODE SW
KeyboardQWERTY
Repeat Count3
Repeat Interval5s
12 saved messagesAll cleared

Appendix: Supported Characters

54 characters, full ITU Morse coverage.

  Letters:  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
            a b c d e f g h i j k l m n o p q r s t u v w x y z

  Digits:   0 1 2 3 4 5 6 7 8 9

  Punctuation:
   ?  !  .  ,  ;  :  +  -  /  =  '  "  &  @  $  _  (  )

    ██████╗ ███████╗    ██╗   ██╗ ██████╗ ██╗  ████████╗
    ██╔══██╗██╔════╝    ██║   ██║██╔═══██╗██║  ╚══██╔══╝
    ██║  ██║█████╗      ██║   ██║██║   ██║██║     ██║
    ██║  ██║██╔══╝      ╚██╗ ██╔╝██║   ██║██║     ██║
    ██████╔╝███████╗     ╚████╔╝ ╚██████╔╝███████╗██║
    ╚═════╝ ╚══════╝      ╚═══╝   ╚═════╝ ╚══════╝╚═╝

                 ███████╗██╗     ███████╗ ██████╗
                 ██╔════╝██║     ██╔════╝██╔════╝
                 █████╗  ██║     █████╗  ██║
                 ██╔══╝  ██║     ██╔══╝  ██║
                 ███████╗███████╗███████╗╚██████╗
                 ╚══════╝╚══════╝╚══════╝ ╚═════╝

**CH32-CW-Keyboard v1.1.9** Based on CH32V203 RISC-V MCU GPL v3 Open Source License
**Happy CW ! 73 !** > 📦 Project Home: [README.md](./README.md)