Skip to content

Commit a0c8872

Browse files
committed
v1.7.0: Visual Keyboard + Unicode character support
New features: - Visual Keyboard: Interactive on-screen keyboard for easy target key selection - Unicode Character Support: Send actual characters via keyboardSetUnicodeString() - Improved modifier handling for Cmd+Key → Plain Key mappings Technical: - New VisualKeyboardView component with full Mac keyboard layout - targetCharacter field in KeyMappingRule for Unicode support - Dynamic window width (500px → 920px when keyboard visible) - Fixed: Visual keyboard now sends correct characters regardless of system layout
1 parent 0d94eda commit a0c8872

5 files changed

Lines changed: 619 additions & 247 deletions

File tree

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**A simple, secure keyboard remapper for macOS** — the straightforward alternative to Karabiner Elements.
44

5-
**NEW in v1.6.0:** 🌍 Full multi-language support for all 28 navigation actions in 14 languages!
5+
**NEW in v1.7.0:** 🎹 Visual Keyboard for easy special character selection + Unicode character support!
66

77
[![Download Latest](https://img.shields.io/github/v/release/badcode64/BC64Keys?label=Download&color=success)](https://github.com/badcode64/BC64Keys/releases/latest)
88
[![License: GPL-3.0](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](LICENSE)
@@ -24,7 +24,7 @@ I created BC64Keys because I just wanted to **remap a few keys** — not learn a
2424
|---------|----------|-------------------|
2525
| Configuration | Visual GUI, click & press | JSON config files |
2626
| Learning curve | ⚡ Minutes | 📚 Hours/Days |
27-
| Codebase size | ~2,100 lines | ~100,000+ lines |
27+
| Codebase size | ~3,200 lines | ~100,000+ lines |
2828
| Code auditability | ✅ Easy to review | ❌ Very complex |
2929
| Setup time | 30 seconds | 10-30 minutes |
3030
| Universal Binary | ✅ Apple Silicon + Intel | ✅ Yes |
@@ -37,7 +37,7 @@ I created BC64Keys because I just wanted to **remap a few keys** — not learn a
3737

3838
This is why BC64Keys is:
3939
- **100% Open Source** (GPL-3.0)
40-
- **Single file design** (~2,100 lines) — anyone can audit it in minutes
40+
- **Single file design** (~3,200 lines) — anyone can audit it in minutes
4141
- **No network access** — works completely offline
4242
- **No data collection** — your keystrokes stay on your Mac
4343
- **No external dependencies** — pure Swift/SwiftUI
@@ -50,6 +50,8 @@ This is why BC64Keys is:
5050
## Features ✨
5151

5252
- **🖱️ Visual Key Capture** — Just click and press the key you want to remap
53+
- **🎹 Visual Keyboard** — Interactive on-screen keyboard for easy target key selection
54+
- **🔤 Unicode Character Support** — Send actual characters regardless of keyboard layout
5355
- **🔄 Simple Key Swaps** — Remap any key to any other key
5456
- **🎯 Navigation Actions** — Map keys to macOS shortcuts (Home → Cmd+←, etc.)
5557
- **� Per-App Filtering** — Apply mappings globally, or only in specific apps
@@ -95,9 +97,9 @@ Coming from Windows? BC64Keys includes pre-configured actions for:
9597

9698
### Option 1: Download Release (Recommended) ⭐
9799

98-
**Latest version: v1.6.0** ([Download](https://github.com/badcode64/BC64Keys/releases/latest))
100+
**Latest version: v1.7.0** ([Download](https://github.com/badcode64/BC64Keys/releases/latest))
99101

100-
1. Download **BC64Keys-v1.6.0.dmg** from [Releases](https://github.com/badcode64/BC64Keys/releases/latest)
102+
1. Download **BC64Keys-v1.7.0.dmg** from [Releases](https://github.com/badcode64/BC64Keys/releases/latest)
101103
2. Open the DMG file
102104
3. Drag **BC64Keys.app** to your Applications folder
103105
4. Launch BC64Keys from Applications
@@ -359,7 +361,7 @@ Yes! BC64Keys is:
359361
- **No network access** — all processing is local
360362
- **No data collection** — your keystrokes never leave your Mac
361363

362-
The entire codebase is ~2,100 lines and designed for easy security auditing.
364+
The entire codebase is ~3,200 lines and designed for easy security auditing.
363365
</details>
364366

365367
<details>

RELEASE_NOTES_v1.7.0.md

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# BC64Keys v1.7.0 - Visual Keyboard 🎹
2+
3+
## What's New
4+
5+
### 🎹 Visual Keyboard
6+
A brand new interactive on-screen keyboard for selecting target keys!
7+
- **Click to select** — No need to remember key codes
8+
- **Special characters made easy** — Find `[]`, `{}`, `$`, `@` and other symbols instantly
9+
- **Full keyboard layout** — All keys including function keys and navigation keys
10+
- **Compact design** — Appears on the right side without disrupting the UI
11+
12+
### 🔤 Unicode Character Support
13+
Send actual characters instead of key codes:
14+
- **Layout-independent** — Characters are sent directly, regardless of your keyboard layout
15+
- **Perfect for international users** — No more wrong characters due to layout differences
16+
- **Example**: Pressing `]` always sends `]`, not `Ő` (Hungarian) or other layout-specific characters
17+
18+
### 🔧 Improved Modifier Handling
19+
- **Fixed**: Command+Key → Plain Key mappings now work correctly
20+
- **Example**: `Cmd+R → G` now properly sends `G`, not `Cmd+G`
21+
22+
## Technical Details
23+
24+
### How Unicode Character Sending Works
25+
When you select a key from the visual keyboard, BC64Keys stores both:
26+
1. The key code (for backwards compatibility)
27+
2. The actual Unicode character
28+
29+
When the mapping triggers, it uses `CGEvent.keyboardSetUnicodeString()` to send the actual character, bypassing the keyboard layout entirely.
30+
31+
### Memory & Performance
32+
- Zero memory leaks — proper cleanup in all `deinit` handlers
33+
- Thread-safe mapping access in CGEventTap callback
34+
- Efficient Unicode string handling with UTF-16 conversion
35+
36+
## Download
37+
38+
Choose your preferred format:
39+
40+
### 📦 DMG Installer (Recommended)
41+
**[BC64Keys-v1.7.0.dmg](https://github.com/badcode64/BC64Keys/releases/download/v1.7.0/BC64Keys-v1.7.0.dmg)** (~2.5 MB)
42+
- Professional drag-to-Applications installer
43+
- Easiest installation method
44+
45+
### 📦 ZIP Archive
46+
**[BC64Keys-v1.7.0-notarized.zip](https://github.com/badcode64/BC64Keys/releases/download/v1.7.0/BC64Keys-v1.7.0-notarized.zip)** (~1.7 MB)
47+
- Smaller download size
48+
- Direct app bundle
49+
50+
## Installation
51+
52+
### First-Time Installation
53+
1. Download and open the DMG file
54+
2. Drag **BC64Keys.app** to your **Applications** folder
55+
3. Launch BC64Keys from Applications
56+
4. Grant **Accessibility permissions** when prompted:
57+
- System Settings → Privacy & Security → Accessibility
58+
- Add BC64Keys and enable it
59+
60+
### Updating from Previous Version
61+
Simply replace the old app with the new one. Your settings and key mappings are preserved.
62+
63+
## System Requirements
64+
- macOS 13.0 (Ventura) or later
65+
- Universal Binary: Apple Silicon (M1/M2/M3/M4) and Intel Macs
66+
67+
## Full Changelog
68+
69+
### Added
70+
- Visual Keyboard for easy target key selection
71+
- `targetCharacter` field in KeyMappingRule for Unicode support
72+
- `keyboardSetUnicodeString()` support for sending actual characters
73+
- Show/Hide Keyboard toggle in Add Mapping sheet
74+
- Compact keyboard layout with function keys and navigation keys
75+
76+
### Fixed
77+
- Command+modifier → plain key mappings now clear modifiers correctly
78+
- Visual keyboard selections now send correct characters regardless of system keyboard layout
79+
80+
### Technical
81+
- New `VisualKeyboardView` component (~150 lines)
82+
- New `CompactKeyButton` component
83+
- Updated `KeyMappingRule` with `targetCharacter: String?` field
84+
- Enhanced `handleKeyMapping()` with Unicode character injection
85+
- Dynamic window width (500px → 920px when keyboard visible)
86+
87+
---
88+
89+
## Need Help?
90+
91+
- 📖 [User Guide](https://github.com/badcode64/BC64Keys/blob/main/README.md)
92+
- 🐛 [Report Issues](https://github.com/badcode64/BC64Keys/issues)
93+
- 💬 [Discussions](https://github.com/badcode64/BC64Keys/discussions)
94+
95+
---
96+
97+
## Magyar verzió 🇭🇺
98+
99+
# BC64Keys v1.7.0 - Vizuális billentyűzet 🎹
100+
101+
## Újdonságok
102+
103+
### 🎹 Vizuális billentyűzet
104+
Új interaktív képernyő-billentyűzet a célbillentyűk kiválasztásához!
105+
- **Kattintással kiválasztható** — Nem kell megjegyezni a billentyűkódokat
106+
- **Speciális karakterek egyszerűen** — Azonnal megtalálod a `[]`, `{}`, `$`, `@` és más szimbólumokat
107+
- **Teljes billentyűzetkiosztás** — Minden billentyű, beleértve a funkcióbillentyűket és navigációs gombokat
108+
- **Kompakt dizájn** — Jobb oldalon jelenik meg, nem zavarja a felületet
109+
110+
### 🔤 Unicode karakter támogatás
111+
A tényleges karakterek küldése billentyűkódok helyett:
112+
- **Kiosztás-független** — A karakterek közvetlenül kerülnek elküldésre, függetlenül a billentyűzetkiosztástól
113+
- **Tökéletes nemzetközi felhasználóknak** — Többé nincs rossz karakter a kiosztás különbségei miatt
114+
- **Példa**: A `]` lenyomása mindig `]`-t küld, nem `Ő`-t (magyar kiosztáson)
115+
116+
### 🔧 Javított módosítóbillentyű-kezelés
117+
- **Javítva**: Command+Billentyű → Sima billentyű leképezések most helyesen működnek
118+
- **Példa**: `Cmd+R → G` most helyesen küld `G`-t, nem `Cmd+G`-t

0 commit comments

Comments
 (0)