docs(site): consolidate landing page and add macOS download
Publish one bilingual download surface with clearly separated iPhone/iPad App Store and notarized Mac DMG actions.
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="40" viewBox="0 0 128 40" role="img" aria-labelledby="title">
|
||||
<title id="title">Download for macOS</title>
|
||||
<rect width="128" height="40" rx="7" fill="#000"/>
|
||||
<rect x=".75" y=".75" width="126.5" height="38.5" rx="6.25" fill="none" stroke="#a6a6a6" stroke-width="1.5"/>
|
||||
<g fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7">
|
||||
<rect x="10.5" y="8.5" width="22" height="15.5" rx="2"/>
|
||||
<path d="M17.5 29.5h8M21.5 24v5.5M17.5 20.5h8"/>
|
||||
</g>
|
||||
<text x="40" y="14" fill="#fff" font-family="-apple-system, BlinkMacSystemFont, sans-serif" font-size="6.6">DIRECT DOWNLOAD</text>
|
||||
<text x="40" y="29" fill="#fff" font-family="-apple-system, BlinkMacSystemFont, sans-serif" font-size="16" font-weight="600">macOS</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 832 B |
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="40" viewBox="0 0 120 40" role="img" aria-labelledby="title">
|
||||
<title id="title">直接下载 macOS 版</title>
|
||||
<rect width="120" height="40" rx="7" fill="#000"/>
|
||||
<rect x=".75" y=".75" width="118.5" height="38.5" rx="6.25" fill="none" stroke="#a6a6a6" stroke-width="1.5"/>
|
||||
<g fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7">
|
||||
<rect x="10.5" y="8.5" width="22" height="15.5" rx="2"/>
|
||||
<path d="M17.5 29.5h8M21.5 24v5.5M17.5 20.5h8"/>
|
||||
</g>
|
||||
<text x="40" y="14" fill="#fff" font-family="-apple-system, BlinkMacSystemFont, sans-serif" font-size="7.2">直接下载</text>
|
||||
<text x="40" y="29" fill="#fff" font-family="-apple-system, BlinkMacSystemFont, sans-serif" font-size="15.5" font-weight="600">macOS 版</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 889 B |
+6
-163
@@ -3,170 +3,13 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>OSGKeyboard vs Typeless vs Superwhisper · 开源听写对比</title>
|
||||
<meta name="description" content="对比 OSGKeyboard、Typeless、Superwhisper、Openless:开源、价格、本地识别、BYOK、iPhone/iPad/Mac 支持。寻找 Typeless 或 Superwhisper 平替?看这篇。">
|
||||
<meta name="keywords" content="Typeless 替代, Superwhisper 替代, 开源听写, OSGKeyboard 对比, BYOK 语音输入, 免费语音键盘">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/compare/">
|
||||
<link rel="icon" href="../assets/app-icon.png" type="image/png">
|
||||
<meta property="og:title" content="OSGKeyboard vs Typeless vs Superwhisper">
|
||||
<meta property="og:description" content="开源、本地免费、BYOK、跨 iPhone 与 Mac —— 和常见听写工具怎么比。">
|
||||
<meta property="og:url" content="https://hkgood.github.io/OSGKeyboard/compare/">
|
||||
<meta property="og:image" content="https://hkgood.github.io/OSGKeyboard/assets/app-icon.png">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "OSGKeyboard vs Typeless vs Superwhisper vs Openless",
|
||||
"description": "Comparison of open-source status, pricing, on-device ASR, BYOK, and device coverage for popular dictation tools.",
|
||||
"author": { "@type": "Organization", "name": "OSGKeyboard" },
|
||||
"dateModified": "2026-07-29",
|
||||
"mainEntityOfPage": "https://hkgood.github.io/OSGKeyboard/compare/"
|
||||
}
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="../assets/site-pages.css">
|
||||
<style>
|
||||
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
|
||||
table { min-width: 640px; }
|
||||
</style>
|
||||
<title>Redirecting · OSGKeyboard</title>
|
||||
<meta name="robots" content="noindex">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/#vs">
|
||||
<meta http-equiv="refresh" content="0; url=../#vs">
|
||||
<script>location.replace("../#vs");</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="nav">
|
||||
<div class="nav-inner">
|
||||
<a class="brand" href="../">
|
||||
<img src="../assets/app-icon.png" alt="" width="28" height="28">
|
||||
OSGKeyboard
|
||||
</a>
|
||||
<nav class="nav-links" aria-label="主导航">
|
||||
<a href="../">首页</a>
|
||||
<a href="../install/">安装</a>
|
||||
<a href="../en/">EN</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div class="wrap">
|
||||
<p class="lang-switch"><a href="#zh">中文</a><a href="#en">English</a></p>
|
||||
|
||||
<section id="zh">
|
||||
<p class="eyebrow">产品对比</p>
|
||||
<h1>OSGKeyboard 和常见听写工具比什么?</h1>
|
||||
<p class="lead">如果你在找 <strong>Typeless 替代</strong>、<strong>Superwhisper 平替</strong>,或想要「本地免费 + 自带 Key 润色」的开源方案,下面按维度对照。</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-zh.svg" width="109" height="40" alt="在 App Store 下载">
|
||||
</a>
|
||||
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>维度</th>
|
||||
<th>Typeless</th>
|
||||
<th>Superwhisper</th>
|
||||
<th>Openless</th>
|
||||
<th>OSGKeyboard</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>开源</td><td>—</td><td>—</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>付费</td><td>免费额度有限;Pro 订阅不便宜</td><td>免费档有限;Pro / 买断</td><td>App 免费;按 Key 计费</td><td>本地完全免费;云端 Key 自付</td></tr>
|
||||
<tr><td>可本地识别</td><td>—</td><td>✓</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>BYOK</td><td>—</td><td>部分(Pro)</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Mac</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>iPhone / iPad</td><td>✓</td><td>✓</td><td>—</td><td>✓</td></tr>
|
||||
<tr><td>Windows</td><td>✓</td><td>✓</td><td>✓</td><td>—</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p class="note">价格与功能据各产品公开说明整理,可能更新,以官方为准。</p>
|
||||
|
||||
<h2>什么时候选 OSGKeyboard</h2>
|
||||
<ul>
|
||||
<li>不想再开一份「听写订阅」,已有 DeepSeek / OpenAI 等额度</li>
|
||||
<li>默认希望录音留在设备上,隐私路径可审计(开源)</li>
|
||||
<li>同时需要 <strong>iPhone 键盘</strong> 与 <strong>Mac 全局听写</strong></li>
|
||||
<li>接受源码可见许可(个人学习 / 非商用本地使用;商用需授权)</li>
|
||||
</ul>
|
||||
|
||||
<h2>什么时候可能不适合</h2>
|
||||
<ul>
|
||||
<li>需要 Windows 客户端</li>
|
||||
<li>希望完全托管、零配置云端识别(闭源 SaaS 更省心)</li>
|
||||
<li>商用分发但未取得商业许可</li>
|
||||
</ul>
|
||||
|
||||
<div class="cta-row">
|
||||
<a class="btn btn-primary" href="../install/">查看安装步骤</a>
|
||||
<a class="btn" href="../">返回官网</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr style="border:none;border-top:1px solid var(--line);margin:3rem 0">
|
||||
|
||||
<section id="en">
|
||||
<p class="eyebrow">Compare</p>
|
||||
<h1>OSGKeyboard vs Typeless, Superwhisper, Openless</h1>
|
||||
<p class="lead">Looking for a <strong>Typeless alternative</strong> or <strong>Superwhisper alternative</strong> that is open, free locally, and BYOK-friendly? Here is a straight comparison.</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-en.svg" width="120" height="40" alt="Download on the App Store">
|
||||
</a>
|
||||
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Typeless</th>
|
||||
<th>Superwhisper</th>
|
||||
<th>Openless</th>
|
||||
<th>OSGKeyboard</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Open source</td><td>—</td><td>—</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Pricing</td><td>Limited free tier; Pro subscription</td><td>Limited free; Pro / lifetime</td><td>Free app; billed to your key</td><td>Local free; cloud on your key</td></tr>
|
||||
<tr><td>On-device ASR</td><td>—</td><td>✓</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>BYOK</td><td>—</td><td>Partial (Pro)</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Mac</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>iPhone / iPad</td><td>✓</td><td>✓</td><td>—</td><td>✓</td></tr>
|
||||
<tr><td>Windows</td><td>✓</td><td>✓</td><td>✓</td><td>—</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p class="note">Features and prices from public pages; verify with each vendor.</p>
|
||||
|
||||
<h2>Choose OSGKeyboard when you want</h2>
|
||||
<ul>
|
||||
<li>No second dictation subscription — reuse LLM credits you already buy</li>
|
||||
<li>On-device audio by default and auditable source</li>
|
||||
<li>Both an <strong>iOS keyboard</strong> and <strong>Mac global hotkey</strong></li>
|
||||
</ul>
|
||||
|
||||
<h2>Maybe not if you need</h2>
|
||||
<ul>
|
||||
<li>Windows</li>
|
||||
<li>Fully managed cloud ASR with zero setup</li>
|
||||
<li>Commercial redistribution without a license</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<span>© OSGKeyboard</span>
|
||||
<span class="footer-links">
|
||||
<a href="../install/">Install</a>
|
||||
<a href="../privacy/">Privacy</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard" rel="noopener">GitHub</a>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<p><a href="../#vs">OSGKeyboard — compare</a></p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+6
-121
@@ -3,128 +3,13 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>OSGKeyboard — Free Open-Source Voice Keyboard for iPhone, iPad & Mac</title>
|
||||
<meta name="description" content="OSGKeyboard is a free open-source voice dictation keyboard for iPhone, iPad, and Mac. On-device speech recognition by default, BYOK AI polish, personal dictionary. Speak it — it's typed.">
|
||||
<meta name="keywords" content="OSGKeyboard, voice keyboard, dictation app, open source dictation, on-device ASR, BYOK, Typeless alternative, Superwhisper alternative, Mac Option dictation, iOS custom keyboard">
|
||||
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
|
||||
<meta name="author" content="OSGKeyboard">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/en/">
|
||||
<link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/en/">
|
||||
<link rel="alternate" hreflang="zh-Hans" href="https://hkgood.github.io/OSGKeyboard/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://hkgood.github.io/OSGKeyboard/">
|
||||
<link rel="icon" href="../assets/app-icon.png" type="image/png">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="OSGKeyboard">
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta property="og:title" content="OSGKeyboard — Speak it. It's typed.">
|
||||
<meta property="og:description" content="Free open-source voice input for iPhone, iPad, and Mac. On-device by default. BYOK AI polish — no double subscription.">
|
||||
<meta property="og:url" content="https://hkgood.github.io/OSGKeyboard/en/">
|
||||
<meta property="og:image" content="https://hkgood.github.io/OSGKeyboard/assets/screenshots/en/dark/mac-dashboard.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="OSGKeyboard — Speak it. It's typed.">
|
||||
<meta name="twitter:description" content="Free open-source voice keyboard for Apple devices. Local ASR + BYOK polish.">
|
||||
<meta name="twitter:image" content="https://hkgood.github.io/OSGKeyboard/assets/screenshots/en/dark/mac-dashboard.png">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
"name": "OSGKeyboard",
|
||||
"operatingSystem": "iOS 26+, iPadOS 26+, macOS 26+",
|
||||
"applicationCategory": "UtilitiesApplication",
|
||||
"url": "https://hkgood.github.io/OSGKeyboard/en/",
|
||||
"downloadUrl": "https://apps.apple.com/app/osgkeyboard/id6781553267",
|
||||
"image": "https://hkgood.github.io/OSGKeyboard/assets/app-icon.png",
|
||||
"description": "Free open-source voice input for iPhone, iPad, and Mac with on-device recognition and BYOK AI polish.",
|
||||
"isAccessibleForFree": true,
|
||||
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
|
||||
"sameAs": ["https://github.com/hkgood/OSGKeyboard", "https://apps.apple.com/app/osgkeyboard/id6781553267"]
|
||||
}
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="../assets/site-pages.css">
|
||||
<style>
|
||||
:root { --max: 720px; }
|
||||
.hero-shot { width: 100%; border-radius: 16px; border: 1px solid var(--line); margin: 1.5rem 0; }
|
||||
.grid { display: grid; gap: 0.85rem; margin: 1.25rem 0; }
|
||||
@media (min-width: 640px) { .grid { grid-template-columns: 1fr 1fr; } }
|
||||
</style>
|
||||
<title>Redirecting · OSGKeyboard</title>
|
||||
<meta name="robots" content="noindex">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/?lang=en">
|
||||
<meta http-equiv="refresh" content="0; url=../?lang=en">
|
||||
<script>location.replace("../?lang=en");</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="nav">
|
||||
<div class="nav-inner">
|
||||
<a class="brand" href="./">
|
||||
<img src="../assets/app-icon.png" alt="" width="28" height="28">
|
||||
OSGKeyboard
|
||||
</a>
|
||||
<nav class="nav-links" aria-label="Primary">
|
||||
<a href="../">中文</a>
|
||||
<a href="../install/">Install</a>
|
||||
<a href="../compare/">Compare</a>
|
||||
<a href="../mac-dictation/">Mac</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard" rel="noopener">GitHub</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div class="wrap">
|
||||
<p class="eyebrow">Free · Open · Cross-platform</p>
|
||||
<h1>Speak it. It's typed.</h1>
|
||||
<p class="lead">OSGKeyboard is a free, open-source voice keyboard for iPhone, iPad, and Mac. Dictate in any app; on-device recognition stays private by default. Bring your own API key for AI polish — skip another dictation subscription.</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-en.svg" width="120" height="40" alt="Download on the App Store">
|
||||
</a>
|
||||
|
||||
<div class="cta-row">
|
||||
<a class="btn" href="../install/">Installation guide</a>
|
||||
<a class="btn" href="https://github.com/hkgood/OSGKeyboard" rel="noopener">View source</a>
|
||||
</div>
|
||||
|
||||
<img class="hero-shot" src="../assets/hero-devices.png" width="1600" height="716" alt="OSGKeyboard on iPad, Mac, and iPhone" loading="eager">
|
||||
|
||||
<h2>Why people switch to OSGKeyboard</h2>
|
||||
<div class="grid">
|
||||
<div class="card"><strong>Works everywhere</strong><p>Messages, Notes, Notion, Cursor, Mail, WeChat — wherever the cursor is.</p></div>
|
||||
<div class="card"><strong>On-device by default</strong><p>Local ASR on iOS; optional local models on Mac. Cloud only when you opt in.</p></div>
|
||||
<div class="card"><strong>BYOK polish</strong><p>Use DeepSeek, OpenAI, Anthropic, OpenRouter, or any compatible endpoint.</p></div>
|
||||
<div class="card"><strong>Phone + Mac</strong><p>Custom keyboard on iOS/iPadOS; hold Option for global Mac dictation.</p></div>
|
||||
</div>
|
||||
|
||||
<h2>Who it is for</h2>
|
||||
<ul>
|
||||
<li>Users looking for a <strong>Typeless</strong> or <strong>Superwhisper</strong> alternative without another subscription</li>
|
||||
<li>People who want <strong>privacy-first dictation</strong> that does not upload audio by default</li>
|
||||
<li>Developers and power users who already pay for LLM APIs and want BYOK</li>
|
||||
<li>Anyone who needs the <strong>same voice workflow on iPhone and Mac</strong></li>
|
||||
</ul>
|
||||
|
||||
<h2>Get started</h2>
|
||||
<ol>
|
||||
<li>Install from the <a href="https://apps.apple.com/app/osgkeyboard/id6781553267">App Store</a>.</li>
|
||||
<li>On iOS: enable the keyboard and Full Access. On Mac: grant Microphone + Accessibility.</li>
|
||||
<li>Speak — text lands at the cursor. Add an API key only if you want AI polish.</li>
|
||||
</ol>
|
||||
<p>Full steps: <a href="../install/">Install guide</a>. Feature deep-dive: <a href="../mac-dictation/">Mac global dictation</a>. Side-by-side: <a href="../compare/">Compare products</a>.</p>
|
||||
|
||||
<h2>Download</h2>
|
||||
<a class="store-badge" href="https://apps.apple.com/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-en.svg" width="120" height="40" alt="Download on the App Store">
|
||||
</a>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<span>© OSGKeyboard · source available</span>
|
||||
<span class="footer-links">
|
||||
<a href="../privacy/">Privacy</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard" rel="noopener">GitHub</a>
|
||||
<a href="../">中文站</a>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<p><a href="../?lang=en">OSGKeyboard</a></p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+123
-59
@@ -12,7 +12,7 @@
|
||||
<meta name="theme-color" content="#f7f7f5" media="(prefers-color-scheme: light)">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/">
|
||||
<link rel="alternate" hreflang="zh-Hans" href="https://hkgood.github.io/OSGKeyboard/">
|
||||
<link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/en/">
|
||||
<link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/?lang=en">
|
||||
<link rel="alternate" hreflang="x-default" href="https://hkgood.github.io/OSGKeyboard/">
|
||||
<link rel="icon" href="assets/app-icon.png" type="image/png">
|
||||
<link rel="apple-touch-icon" href="assets/app-icon.png">
|
||||
@@ -121,7 +121,7 @@
|
||||
"name": "和 Typeless、Superwhisper 有什么不同?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "OSGKeyboard 开源、本地模式完全免费、支持 iPhone/iPad/Mac,并用 BYOK 接入你已有的 LLM 额度,避免再开一份听写订阅。详见对比页。"
|
||||
"text": "OSGKeyboard 开源、本地模式完全免费、支持 iPhone/iPad/Mac,并用 BYOK 接入你已有的 LLM 额度,避免再开一份听写订阅。见本页产品对比表。"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -329,9 +329,17 @@
|
||||
.btn-ghost:hover { background: var(--bg-soft); }
|
||||
|
||||
/* —— Hero —— */
|
||||
/* Hero stays on the dark beams stage in both light and dark site themes. */
|
||||
.hero {
|
||||
--hero-stage: #070b0a;
|
||||
--hero-ink: #f4f4f2;
|
||||
--hero-muted: #a8a8b0;
|
||||
--hero-faint: #6f6f78;
|
||||
--hero-accent: #4cc46e;
|
||||
--hero-line: rgba(255, 255, 255, 0.14);
|
||||
position: relative;
|
||||
background: var(--hero-wash);
|
||||
background: var(--hero-stage);
|
||||
color: var(--hero-ink);
|
||||
padding: 4.5rem 0 2.5rem;
|
||||
overflow: hidden;
|
||||
isolation: isolate;
|
||||
@@ -370,8 +378,8 @@
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
linear-gradient(180deg, transparent 58%, var(--hero-wash) 96%),
|
||||
radial-gradient(ellipse 90% 60% at 50% -8%, transparent 40%, color-mix(in srgb, var(--hero-wash) 55%, transparent) 100%);
|
||||
linear-gradient(180deg, transparent 58%, var(--hero-stage) 96%),
|
||||
radial-gradient(ellipse 90% 60% at 50% -8%, transparent 40%, color-mix(in srgb, var(--hero-stage) 55%, transparent) 100%);
|
||||
opacity: 0.72;
|
||||
pointer-events: none;
|
||||
}
|
||||
@@ -392,6 +400,7 @@
|
||||
text-transform: uppercase;
|
||||
color: var(--accent);
|
||||
}
|
||||
.hero .eyebrow { color: var(--hero-accent); }
|
||||
.eyebrow .material-symbols-outlined { font-size: 16px; }
|
||||
h1 {
|
||||
margin: 0 0 1rem;
|
||||
@@ -406,6 +415,7 @@
|
||||
font-size: 1.12rem;
|
||||
color: var(--text-2);
|
||||
}
|
||||
.hero .lead { color: var(--hero-muted); }
|
||||
.hero-cta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@@ -414,6 +424,13 @@
|
||||
gap: 0.7rem;
|
||||
margin-bottom: 1.4rem;
|
||||
}
|
||||
.hero .btn-ghost {
|
||||
border-color: var(--hero-line);
|
||||
color: var(--hero-ink);
|
||||
}
|
||||
.hero .btn-ghost:hover {
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
.store-badge {
|
||||
display: inline-flex;
|
||||
line-height: 0;
|
||||
@@ -426,11 +443,31 @@
|
||||
width: auto;
|
||||
display: block;
|
||||
}
|
||||
.platform-download {
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
.platform-label {
|
||||
color: var(--text-2);
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
.hero .platform-label { color: var(--hero-muted); }
|
||||
.platform-downloads {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-end;
|
||||
justify-content: center;
|
||||
gap: 1rem;
|
||||
}
|
||||
.download-block {
|
||||
text-align: center;
|
||||
padding: 3.5rem 0 1rem;
|
||||
}
|
||||
.download-block .store-badge { margin: 0.4rem 0 1rem; }
|
||||
.download-block .platform-downloads { margin: 0.4rem 0 1rem; }
|
||||
.download-block .store-badge img { height: 52px; }
|
||||
.faq-list {
|
||||
max-width: 720px;
|
||||
@@ -479,12 +516,14 @@
|
||||
font-size: 0.86rem;
|
||||
color: var(--text-3);
|
||||
}
|
||||
.hero .hero-meta { color: var(--hero-faint); }
|
||||
.hero-meta span {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.3rem;
|
||||
}
|
||||
.hero-meta .material-symbols-outlined { font-size: 16px; color: var(--accent); }
|
||||
.hero .hero-meta .material-symbols-outlined { color: var(--hero-accent); }
|
||||
|
||||
/* Marketing device-family composite (replaces CSS mockup frames). */
|
||||
.hero-stage {
|
||||
@@ -880,8 +919,6 @@
|
||||
<button type="button" class="icon-btn" id="themeToggle" aria-label="Toggle theme">
|
||||
<span class="material-symbols-outlined" data-theme-icon>contrast</span>
|
||||
</button>
|
||||
<a class="nav-link-text" href="install/" data-i18n="nav.install">安装</a>
|
||||
<a class="nav-link-text" href="compare/" data-i18n="nav.compare">对比</a>
|
||||
<a class="nav-link" href="https://github.com/hkgood/OSGKeyboard" rel="noopener">
|
||||
<span class="material-symbols-outlined" aria-hidden="true">code</span>
|
||||
<span data-i18n="nav.github">GitHub</span>
|
||||
@@ -906,9 +943,18 @@
|
||||
<h1 data-i18n="hero.title">开口即文字</h1>
|
||||
<p class="lead" data-i18n="hero.lead">免费开源的跨端语音输入。本地识别,自带 API Key 润色,避免重复订阅。iPhone、iPad、Mac — 说完即落字。</p>
|
||||
<div class="hero-cta">
|
||||
<a class="store-badge" id="heroStoreBadge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener" aria-label="Download on the App Store">
|
||||
<img id="heroStoreBadgeImg" src="assets/badges/appstore-zh.svg" width="109" height="40" alt="在 App Store 下载">
|
||||
</a>
|
||||
<div class="platform-download">
|
||||
<span class="platform-label" data-i18n="download.ios">iPhone / iPad</span>
|
||||
<a class="store-badge" id="heroStoreBadge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener" aria-label="Download for iPhone and iPad">
|
||||
<img id="heroStoreBadgeImg" src="assets/badges/appstore-zh.svg" width="109" height="40" alt="下载 iPhone / iPad 版">
|
||||
</a>
|
||||
</div>
|
||||
<div class="platform-download">
|
||||
<span class="platform-label" data-i18n="download.mac">Mac</span>
|
||||
<a class="store-badge" href="https://github.com/hkgood/OSGKeyboard/releases/download/v1.1-mac/OSGKeyboard-1.1.dmg" rel="noopener" aria-label="Download for macOS">
|
||||
<img class="macos-badge-img" src="assets/badges/macos-zh.svg" width="120" height="40" alt="直接下载 macOS 版">
|
||||
</a>
|
||||
</div>
|
||||
<a class="btn btn-ghost" href="https://github.com/hkgood/OSGKeyboard" rel="noopener">
|
||||
<span class="material-symbols-outlined" aria-hidden="true">terminal</span>
|
||||
<span data-i18n="hero.cta.secondary">查看源码</span>
|
||||
@@ -1214,14 +1260,13 @@
|
||||
</article>
|
||||
<article class="faq-item reveal">
|
||||
<h3 data-i18n="faq.4.q">和 Typeless、Superwhisper 有什么不同?</h3>
|
||||
<p data-i18n="faq.4.a">开源、本地免费、手机+Mac 都有,并用 BYOK 复用已有 LLM 额度。详见对比页。</p>
|
||||
<p data-i18n="faq.4.a">开源、本地免费、手机+Mac 都有,并用 BYOK 复用已有 LLM 额度。见上方对比表。</p>
|
||||
</article>
|
||||
</div>
|
||||
<div class="resource-links reveal">
|
||||
<a href="install/" data-i18n="faq.link.install">安装指南 →</a>
|
||||
<a href="compare/" data-i18n="faq.link.compare">产品对比 →</a>
|
||||
<a href="mac-dictation/" data-i18n="faq.link.mac">Mac 全局听写 →</a>
|
||||
<a href="en/" data-i18n="faq.link.en">English site →</a>
|
||||
<a href="#start" data-i18n="faq.link.install">安装三步 →</a>
|
||||
<a href="#vs" data-i18n="faq.link.compare">产品对比 →</a>
|
||||
<a href="#download" data-i18n="faq.link.download">立即下载 →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1231,13 +1276,24 @@
|
||||
<div class="wrap reveal">
|
||||
<div class="block-head">
|
||||
<h2 data-i18n="download.title">立即下载</h2>
|
||||
<p data-i18n="download.subtitle">App Store 一键安装;也可从源码自行构建。</p>
|
||||
<p data-i18n="download.subtitle">iPhone / iPad 从 App Store 安装;Mac 直接下载已签名并公证的 DMG。</p>
|
||||
</div>
|
||||
<div class="platform-downloads">
|
||||
<div class="platform-download">
|
||||
<span class="platform-label" data-i18n="download.ios">iPhone / iPad</span>
|
||||
<a class="store-badge" id="footerStoreBadge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener" aria-label="Download for iPhone and iPad">
|
||||
<img id="footerStoreBadgeImg" src="assets/badges/appstore-zh.svg" width="109" height="40" alt="下载 iPhone / iPad 版">
|
||||
</a>
|
||||
</div>
|
||||
<div class="platform-download">
|
||||
<span class="platform-label" data-i18n="download.mac">Mac</span>
|
||||
<a class="store-badge" href="https://github.com/hkgood/OSGKeyboard/releases/download/v1.1-mac/OSGKeyboard-1.1.dmg" rel="noopener" aria-label="Download for macOS">
|
||||
<img class="macos-badge-img" src="assets/badges/macos-zh.svg" width="120" height="40" alt="直接下载 macOS 版">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="store-badge" id="footerStoreBadge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener" aria-label="Download on the App Store">
|
||||
<img id="footerStoreBadgeImg" src="assets/badges/appstore-zh.svg" width="109" height="40" alt="在 App Store 下载">
|
||||
</a>
|
||||
<div class="hero-cta" style="margin-bottom:0">
|
||||
<a class="btn btn-ghost" href="install/" data-i18n="download.install">查看安装步骤</a>
|
||||
<a class="btn btn-ghost" href="#start" data-i18n="download.install">查看安装步骤</a>
|
||||
<a class="btn btn-ghost" href="https://github.com/hkgood/OSGKeyboard" rel="noopener" data-i18n="download.source">GitHub 源码</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1250,8 +1306,8 @@
|
||||
<span data-i18n="footer.copy">© OSGKeyboard · v0.5.4 · 源码可见</span>
|
||||
<span class="footer-links">
|
||||
<a href="#download" data-i18n="footer.download">Download</a>
|
||||
<a href="install/" data-i18n="footer.install">Install</a>
|
||||
<a href="compare/" data-i18n="footer.compare">Compare</a>
|
||||
<a href="#start" data-i18n="footer.install">Install</a>
|
||||
<a href="#vs" data-i18n="footer.compare">Compare</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard" rel="noopener" data-i18n="footer.source">Source</a>
|
||||
<a href="privacy/" data-i18n="footer.privacy">Privacy</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard/blob/main/LICENSE" rel="noopener" data-i18n="footer.license">License</a>
|
||||
@@ -1263,8 +1319,6 @@
|
||||
const copy = {
|
||||
en: {
|
||||
"nav.github": "GitHub",
|
||||
"nav.install": "Install",
|
||||
"nav.compare": "Compare",
|
||||
"hero.eyebrow": "Free · Open · Cross-platform",
|
||||
"hero.title": "Speak it. It's typed.",
|
||||
"hero.lead": "Free, open-source voice input across iPhone, iPad, and Mac. On-device recognition. Bring your own API key — no double-billing.",
|
||||
@@ -1363,18 +1417,19 @@
|
||||
"faq.3.q": "Which devices are supported?",
|
||||
"faq.3.a": "iPhone / iPad custom keyboard, plus Mac menu-bar global dictation (hold Option). Requires iOS / iPadOS / macOS 26+.",
|
||||
"faq.4.q": "How is it different from Typeless or Superwhisper?",
|
||||
"faq.4.a": "Open source, free local mode, phone + Mac, and BYOK so you reuse LLM credits you already pay for. See the compare page.",
|
||||
"faq.link.install": "Install guide →",
|
||||
"faq.link.compare": "Compare products →",
|
||||
"faq.link.mac": "Mac global dictation →",
|
||||
"faq.link.en": "English site →",
|
||||
"faq.4.a": "Open source, free local mode, phone + Mac, and BYOK so you reuse LLM credits you already pay for. See the comparison table above.",
|
||||
"faq.link.install": "Setup in 3 steps →",
|
||||
"faq.link.compare": "Product comparison →",
|
||||
"faq.link.download": "Download now →",
|
||||
"download.title": "Download now",
|
||||
"download.subtitle": "Install from the App Store — or build from source.",
|
||||
"download.subtitle": "Get iPhone / iPad from the App Store, or download the signed and notarized DMG for Mac.",
|
||||
"download.ios": "iPhone / iPad",
|
||||
"download.mac": "Mac",
|
||||
"download.install": "Installation steps",
|
||||
"download.source": "GitHub source",
|
||||
"footer.copy": "© OSGKeyboard · v0.5.4 · source available",
|
||||
"footer.download": "Download",
|
||||
"footer.install": "Install",
|
||||
"footer.install": "Setup",
|
||||
"footer.compare": "Compare",
|
||||
"footer.source": "Source",
|
||||
"footer.privacy": "Privacy",
|
||||
@@ -1382,8 +1437,6 @@
|
||||
},
|
||||
zh: {
|
||||
"nav.github": "GitHub",
|
||||
"nav.install": "安装",
|
||||
"nav.compare": "对比",
|
||||
"hero.eyebrow": "免费 · 开源 · 跨端",
|
||||
"hero.title": "开口即文字",
|
||||
"hero.lead": "免费开源的跨端语音输入。本地识别,自带 API Key 润色,避免重复订阅。iPhone、iPad、Mac — 说完即落字。",
|
||||
@@ -1482,13 +1535,14 @@
|
||||
"faq.3.q": "支持哪些设备?",
|
||||
"faq.3.a": "iPhone / iPad 自定义键盘,以及 Mac 菜单栏全局听写(按住 Option)。需 iOS / iPadOS / macOS 26+。",
|
||||
"faq.4.q": "和 Typeless、Superwhisper 有什么不同?",
|
||||
"faq.4.a": "开源、本地免费、手机+Mac 都有,并用 BYOK 复用已有 LLM 额度。详见对比页。",
|
||||
"faq.link.install": "安装指南 →",
|
||||
"faq.4.a": "开源、本地免费、手机+Mac 都有,并用 BYOK 复用已有 LLM 额度。见上方对比表。",
|
||||
"faq.link.install": "安装三步 →",
|
||||
"faq.link.compare": "产品对比 →",
|
||||
"faq.link.mac": "Mac 全局听写 →",
|
||||
"faq.link.en": "English site →",
|
||||
"faq.link.download": "立即下载 →",
|
||||
"download.title": "立即下载",
|
||||
"download.subtitle": "App Store 一键安装;也可从源码自行构建。",
|
||||
"download.subtitle": "iPhone / iPad 从 App Store 安装;Mac 直接下载已签名并公证的 DMG。",
|
||||
"download.ios": "iPhone / iPad",
|
||||
"download.mac": "Mac",
|
||||
"download.install": "查看安装步骤",
|
||||
"download.source": "GitHub 源码",
|
||||
"footer.copy": "© OSGKeyboard · v0.5.4 · 源码可见",
|
||||
@@ -1505,12 +1559,16 @@
|
||||
zh: {
|
||||
href: "https://apps.apple.com/cn/app/osgkeyboard/id6781553267",
|
||||
src: "assets/badges/appstore-zh.svg",
|
||||
alt: "在 App Store 下载"
|
||||
alt: "下载 iPhone / iPad 版",
|
||||
macSrc: "assets/badges/macos-zh.svg",
|
||||
macAlt: "直接下载 macOS 版"
|
||||
},
|
||||
en: {
|
||||
href: "https://apps.apple.com/app/osgkeyboard/id6781553267",
|
||||
src: "assets/badges/appstore-en.svg",
|
||||
alt: "Download on the App Store"
|
||||
alt: "Download for iPhone and iPad",
|
||||
macSrc: "assets/badges/macos-en.svg",
|
||||
macAlt: "Download for macOS"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1526,6 +1584,10 @@
|
||||
img.setAttribute("src", cfg.src);
|
||||
img.setAttribute("alt", cfg.alt);
|
||||
});
|
||||
document.querySelectorAll(".macos-badge-img").forEach((img) => {
|
||||
img.setAttribute("src", cfg.macSrc);
|
||||
img.setAttribute("alt", cfg.macAlt);
|
||||
});
|
||||
}
|
||||
|
||||
function applyLang(lang) {
|
||||
@@ -1577,7 +1639,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
// React Bits–style Beams (vanilla Three.js), preset from shared demo URL
|
||||
// Beams stay on the dark palette regardless of site theme.
|
||||
const beamsHero = (() => {
|
||||
const wrap = document.getElementById("heroAurora");
|
||||
const canvas = document.getElementById("heroAuroraCanvas");
|
||||
@@ -1585,26 +1647,22 @@
|
||||
|
||||
const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
||||
const isMobile = window.matchMedia("(max-width: 720px)").matches;
|
||||
const palettes = {
|
||||
dark: { light: "#7CFFB2", bg: "#000000" },
|
||||
light: { light: "#2f9a52", bg: "#0a1210" }
|
||||
};
|
||||
const palette = { light: "#7CFFB2", bg: "#000000" };
|
||||
|
||||
let instance = null;
|
||||
let currentMode = "";
|
||||
let ready = false;
|
||||
|
||||
function destroy() {
|
||||
if (!instance) return;
|
||||
try { instance.destroy(); } catch (_) {}
|
||||
instance = null;
|
||||
ready = false;
|
||||
}
|
||||
|
||||
function create(mode) {
|
||||
function create() {
|
||||
if (typeof window.OSGBeamsHero?.create !== "function" || typeof window.THREE === "undefined") {
|
||||
return false;
|
||||
}
|
||||
currentMode = mode;
|
||||
const palette = palettes[mode] || palettes.dark;
|
||||
canvas.style.width = "100%";
|
||||
canvas.style.height = "100%";
|
||||
try {
|
||||
@@ -1623,6 +1681,7 @@
|
||||
heightSegments: isMobile ? 64 : 100
|
||||
});
|
||||
wrap.classList.add("is-ready");
|
||||
ready = true;
|
||||
return true;
|
||||
} catch (err) {
|
||||
console.warn("[beams]", err);
|
||||
@@ -1631,19 +1690,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
function setPalette(mode) {
|
||||
const next = mode === "light" ? "light" : "dark";
|
||||
if (next === currentMode && instance) {
|
||||
const palette = palettes[next];
|
||||
function setPalette() {
|
||||
if (ready && instance) {
|
||||
instance.setLightColor(palette.light);
|
||||
instance.setBackground(palette.bg);
|
||||
return;
|
||||
}
|
||||
create(next);
|
||||
create();
|
||||
}
|
||||
|
||||
function boot() {
|
||||
const ok = create(resolvedTheme());
|
||||
const ok = create();
|
||||
if (!ok) return;
|
||||
|
||||
const io = new IntersectionObserver((entries) => {
|
||||
@@ -1675,7 +1732,8 @@
|
||||
}
|
||||
try { localStorage.setItem("osg-theme", theme); } catch (_) {}
|
||||
applyShots();
|
||||
beamsHero.setPalette(resolvedTheme());
|
||||
// Hero beams intentionally ignore theme — keep dark stage.
|
||||
beamsHero.setPalette();
|
||||
}
|
||||
|
||||
function cycleTheme() {
|
||||
@@ -1739,16 +1797,22 @@
|
||||
});
|
||||
})();
|
||||
|
||||
const urlLang = (() => {
|
||||
try {
|
||||
const q = new URLSearchParams(window.location.search).get("lang");
|
||||
if (q === "en" || q === "zh") return q;
|
||||
} catch (_) {}
|
||||
return null;
|
||||
})();
|
||||
const savedLang = (() => { try { return localStorage.getItem("osg-lang"); } catch (_) { return null; } })();
|
||||
const savedTheme = (() => { try { return localStorage.getItem("osg-theme"); } catch (_) { return null; } })();
|
||||
applyLang(savedLang || ((navigator.language || "").startsWith("zh") ? "zh" : "en"));
|
||||
applyLang(urlLang || savedLang || ((navigator.language || "").startsWith("zh") ? "zh" : "en"));
|
||||
applyTheme(savedTheme || "system");
|
||||
|
||||
try {
|
||||
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
|
||||
if ((document.documentElement.getAttribute("data-theme") || "system") === "system") {
|
||||
applyShots();
|
||||
beamsHero.setPalette(resolvedTheme());
|
||||
}
|
||||
});
|
||||
} catch (_) {}
|
||||
|
||||
+6
-147
@@ -3,154 +3,13 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>安装指南 · OSGKeyboard iOS / Mac 语音输入设置</title>
|
||||
<meta name="description" content="OSGKeyboard 安装与授权步骤:iPhone / iPad 添加自定义键盘并开启完全访问;Mac 授予麦克风与辅助功能。约两分钟开口即用。">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/install/">
|
||||
<link rel="alternate" hreflang="zh-Hans" href="https://hkgood.github.io/OSGKeyboard/install/">
|
||||
<link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/install/#en">
|
||||
<link rel="icon" href="../assets/app-icon.png" type="image/png">
|
||||
<meta property="og:title" content="OSGKeyboard 安装指南">
|
||||
<meta property="og:description" content="iOS 键盘与 Mac 全局听写的安装、权限与首次开口步骤。">
|
||||
<meta property="og:url" content="https://hkgood.github.io/OSGKeyboard/install/">
|
||||
<meta property="og:image" content="https://hkgood.github.io/OSGKeyboard/assets/app-icon.png">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "HowTo",
|
||||
"name": "Install OSGKeyboard on iPhone, iPad, and Mac",
|
||||
"description": "Enable the custom keyboard with Full Access on iOS, grant Microphone and Accessibility on Mac, then start dictating.",
|
||||
"totalTime": "PT5M",
|
||||
"tool": [{ "@type": "HowToTool", "name": "iPhone, iPad, or Mac" }],
|
||||
"step": [
|
||||
{ "@type": "HowToStep", "name": "Download", "text": "Install OSGKeyboard from the App Store." },
|
||||
{ "@type": "HowToStep", "name": "Authorize iOS", "text": "Settings → Keyboard → enable OSGKeyboard and Full Access." },
|
||||
{ "@type": "HowToStep", "name": "Authorize Mac", "text": "Grant Microphone and Accessibility when prompted." },
|
||||
{ "@type": "HowToStep", "name": "Dictate", "text": "Switch to OSGKeyboard on iOS or hold Option on Mac." }
|
||||
]
|
||||
}
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="../assets/site-pages.css">
|
||||
<title>Redirecting · OSGKeyboard</title>
|
||||
<meta name="robots" content="noindex">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/#start">
|
||||
<meta http-equiv="refresh" content="0; url=../#start">
|
||||
<script>location.replace("../#start");</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="nav">
|
||||
<div class="nav-inner">
|
||||
<a class="brand" href="../">
|
||||
<img src="../assets/app-icon.png" alt="" width="28" height="28">
|
||||
OSGKeyboard
|
||||
</a>
|
||||
<nav class="nav-links" aria-label="主导航">
|
||||
<a href="../">首页</a>
|
||||
<a href="../compare/">对比</a>
|
||||
<a href="../mac-dictation/">Mac</a>
|
||||
<a href="../en/">EN</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div class="wrap">
|
||||
<p class="lang-switch"><a href="#zh">中文</a><a href="#en">English</a></p>
|
||||
|
||||
<section id="zh">
|
||||
<p class="eyebrow">安装指南</p>
|
||||
<h1>两分钟装好,开口即用</h1>
|
||||
<p class="lead">从 App Store 安装后,完成键盘 / 权限授权即可。无需注册账号,本地识别开箱可用。</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-zh.svg" width="109" height="40" alt="在 App Store 下载">
|
||||
</a>
|
||||
|
||||
<h2>1. 下载安装</h2>
|
||||
<ol>
|
||||
<li>在 App Store 搜索 <strong>OSGKeyboard</strong>,或点击上方徽章。</li>
|
||||
<li>安装完成后打开主 App,按首次引导走完权限与引擎选择(约 2 分钟)。</li>
|
||||
</ol>
|
||||
|
||||
<h2>2. iPhone / iPad:启用自定义键盘</h2>
|
||||
<div class="card">
|
||||
<ol>
|
||||
<li>打开 <strong>设置 → 通用 → 键盘 → 键盘 → 添加新键盘…</strong></li>
|
||||
<li>选择 <strong>OSGKeyboard</strong>。</li>
|
||||
<li>点进该键盘,开启 <strong>允许完全访问</strong>(麦克风、共享 Keychain、与主 App 通信需要它;不会上传你的普通击键)。</li>
|
||||
<li>在任意输入框长按 🌐,切换到 OSGKeyboard,点麦克风开口。</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h2>3. Mac:麦克风 + 辅助功能</h2>
|
||||
<div class="card">
|
||||
<ol>
|
||||
<li>打开 OSGKeyboard Mac 应用,按提示授予 <strong>麦克风</strong> 与 <strong>辅助功能</strong>。</li>
|
||||
<li>菜单栏出现图标后,在任意 App 把光标放好,<strong>按住 Option</strong> 说话,松手后文字插入。</li>
|
||||
</ol>
|
||||
<p class="note">详见 <a href="../mac-dictation/">Mac 全局听写说明</a>。</p>
|
||||
</div>
|
||||
|
||||
<h2>4. 可选:API Key 润色</h2>
|
||||
<p>默认本地识别即可落字。若要 AI 补标点与润色,在设置中填入你自己的 API Key(DeepSeek / OpenAI / Anthropic / OpenRouter 等兼容端点)。Key 存在本机 Keychain。</p>
|
||||
|
||||
<h2>常见问题</h2>
|
||||
<div class="card">
|
||||
<p><strong>键盘列表里没有 OSG?</strong> 确认已「添加新键盘」,并重启主 App 后再试。</p>
|
||||
<p><strong>点了麦克风没反应?</strong> 检查麦克风权限与「完全访问」是否开启。</p>
|
||||
<p><strong>Mac 按 Option 无效?</strong> 到系统设置 → 隐私与安全性 → 辅助功能,确认 OSGKeyboard 已勾选。</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr style="border:none;border-top:1px solid var(--line);margin:3rem 0">
|
||||
|
||||
<section id="en">
|
||||
<p class="eyebrow">Install guide</p>
|
||||
<h1>Ready in a few minutes</h1>
|
||||
<p class="lead">Install from the App Store, grant permissions once, then speak. No account required for local recognition.</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-en.svg" width="120" height="40" alt="Download on the App Store">
|
||||
</a>
|
||||
|
||||
<h2>1. Download</h2>
|
||||
<ol>
|
||||
<li>Get <strong>OSGKeyboard</strong> from the App Store (badge above).</li>
|
||||
<li>Open the app and complete the first-run setup (~2 minutes).</li>
|
||||
</ol>
|
||||
|
||||
<h2>2. iPhone / iPad: enable the keyboard</h2>
|
||||
<div class="card">
|
||||
<ol>
|
||||
<li>Go to <strong>Settings → General → Keyboard → Keyboards → Add New Keyboard…</strong></li>
|
||||
<li>Select <strong>OSGKeyboard</strong>.</li>
|
||||
<li>Open it and enable <strong>Allow Full Access</strong> (needed for mic, shared Keychain, and host-app session — we do not exfiltrate ordinary keystrokes).</li>
|
||||
<li>In any text field, long-press 🌐, switch to OSGKeyboard, tap the mic.</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h2>3. Mac: Microphone + Accessibility</h2>
|
||||
<div class="card">
|
||||
<ol>
|
||||
<li>Launch the Mac app and grant <strong>Microphone</strong> and <strong>Accessibility</strong>.</li>
|
||||
<li>With the menu-bar icon present, place the cursor in any app, <strong>hold Option</strong> to speak, release to insert.</li>
|
||||
</ol>
|
||||
<p class="note">More detail: <a href="../mac-dictation/">Mac global dictation</a>.</p>
|
||||
</div>
|
||||
|
||||
<h2>4. Optional: API key polish</h2>
|
||||
<p>Local ASR works without a key. Add your own LLM key only for AI punctuation and polish. Keys stay in Keychain on device.</p>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<span>© OSGKeyboard</span>
|
||||
<span class="footer-links">
|
||||
<a href="../">Home</a>
|
||||
<a href="../privacy/">Privacy</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard" rel="noopener">GitHub</a>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<p><a href="../#start">OSGKeyboard — setup</a></p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+4
-5
@@ -36,11 +36,10 @@ OSGKeyboard is a custom keyboard (iOS/iPadOS) and menu-bar global dictation app
|
||||
|
||||
## Docs for humans and agents
|
||||
|
||||
- Home (ZH): https://hkgood.github.io/OSGKeyboard/
|
||||
- Home (EN): https://hkgood.github.io/OSGKeyboard/en/
|
||||
- Install guide: https://hkgood.github.io/OSGKeyboard/install/
|
||||
- Compare / alternatives: https://hkgood.github.io/OSGKeyboard/compare/
|
||||
- Mac global dictation: https://hkgood.github.io/OSGKeyboard/mac-dictation/
|
||||
- Home (ZH/EN toggle): https://hkgood.github.io/OSGKeyboard/
|
||||
- Home (EN): https://hkgood.github.io/OSGKeyboard/?lang=en
|
||||
- Setup steps: https://hkgood.github.io/OSGKeyboard/#start
|
||||
- Product comparison: https://hkgood.github.io/OSGKeyboard/#vs
|
||||
- Privacy policy: https://hkgood.github.io/OSGKeyboard/privacy/
|
||||
- GitHub README (ZH): https://github.com/hkgood/OSGKeyboard/blob/main/README.md
|
||||
- GitHub README (EN): https://github.com/hkgood/OSGKeyboard/blob/main/README.en.md
|
||||
|
||||
@@ -3,128 +3,13 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Mac 全局听写 · OSGKeyboard Option 按住说话</title>
|
||||
<meta name="description" content="OSGKeyboard Mac 全局听写:菜单栏常驻,按住 Option 开口,文字插入当前 App。本地识别可选,BYOK 润色,底部浮层实时反馈。">
|
||||
<meta name="keywords" content="Mac 听写, Mac 语音输入, Option 听写, 全局语音输入, OSGKeyboard Mac, 开源 Mac dictation">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/mac-dictation/">
|
||||
<link rel="icon" href="../assets/app-icon.png" type="image/png">
|
||||
<meta property="og:title" content="Mac 全局听写 · OSGKeyboard">
|
||||
<meta property="og:description" content="按住 Option,在任意 Mac App 开口落字。开源、可本地、BYOK。">
|
||||
<meta property="og:url" content="https://hkgood.github.io/OSGKeyboard/mac-dictation/">
|
||||
<meta property="og:image" content="https://hkgood.github.io/OSGKeyboard/assets/screenshots/zh/dark/mac-dashboard.png">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "TechArticle",
|
||||
"headline": "OSGKeyboard Mac global dictation — hold Option to speak",
|
||||
"description": "Menu-bar Mac app with Option-hold global dictation, on-device ASR options, BYOK polish, and a floating live overlay.",
|
||||
"author": { "@type": "Organization", "name": "OSGKeyboard" },
|
||||
"dateModified": "2026-07-29"
|
||||
}
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="../assets/site-pages.css">
|
||||
<title>Redirecting · OSGKeyboard</title>
|
||||
<meta name="robots" content="noindex">
|
||||
<link rel="canonical" href="https://hkgood.github.io/OSGKeyboard/">
|
||||
<meta http-equiv="refresh" content="0; url=../">
|
||||
<script>location.replace("../");</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="nav">
|
||||
<div class="nav-inner">
|
||||
<a class="brand" href="../">
|
||||
<img src="../assets/app-icon.png" alt="" width="28" height="28">
|
||||
OSGKeyboard
|
||||
</a>
|
||||
<nav class="nav-links" aria-label="主导航">
|
||||
<a href="../">首页</a>
|
||||
<a href="../install/">安装</a>
|
||||
<a href="../compare/">对比</a>
|
||||
<a href="../en/">EN</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div class="wrap">
|
||||
<p class="lang-switch"><a href="#zh">中文</a><a href="#en">English</a></p>
|
||||
|
||||
<section id="zh">
|
||||
<p class="eyebrow">macOS</p>
|
||||
<h1>Mac 全局听写:按住 Option,开口即字</h1>
|
||||
<p class="lead">OSGKeyboard 在 Mac 上是菜单栏应用。光标在哪个 App,文字就落到哪——邮件、浏览器、IDE、备忘录都行。</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-zh.svg" width="109" height="40" alt="在 App Store 下载">
|
||||
</a>
|
||||
|
||||
<h2>怎么用</h2>
|
||||
<ol>
|
||||
<li>从 App Store 安装并启动 OSGKeyboard(Mac)。</li>
|
||||
<li>授予 <strong>麦克风</strong> 与 <strong>辅助功能</strong>。</li>
|
||||
<li>把光标放到任意可输入处,<strong>按住 Option</strong> 说话,松开后插入润色/转写结果。</li>
|
||||
</ol>
|
||||
|
||||
<h2>体验要点</h2>
|
||||
<div class="card">
|
||||
<ul>
|
||||
<li><strong>底部胶囊浮层</strong> — 录音与状态实时反馈,不抢焦点。</li>
|
||||
<li><strong>本地模型可选</strong> — SenseVoice / Qwen3 等路径,音频默认不必上云。</li>
|
||||
<li><strong>BYOK 润色</strong> — 用你已有的 LLM 额度整理标点与结构。</li>
|
||||
<li><strong>与 iOS 同源产品语言</strong> — 词库与习惯可跨端延续(可选 iCloud)。</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2>适合谁</h2>
|
||||
<p>写代码注释、回邮件、记会议要点、在 Cursor / Notion 里口述长文——任何「手慢嘴快」的时刻。若你也需要手机端,同一 App 提供 iOS 自定义键盘,见 <a href="../install/">安装指南</a>。</p>
|
||||
|
||||
<div class="cta-row">
|
||||
<a class="btn btn-primary" href="../install/#zh">去安装</a>
|
||||
<a class="btn" href="../compare/">和其他工具对比</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr style="border:none;border-top:1px solid var(--line);margin:3rem 0">
|
||||
|
||||
<section id="en">
|
||||
<p class="eyebrow">macOS</p>
|
||||
<h1>Mac global dictation: hold Option to speak</h1>
|
||||
<p class="lead">OSGKeyboard on Mac is a menu-bar app. Wherever the cursor is — Mail, browser, IDE, Notes — polished text lands there.</p>
|
||||
|
||||
<a class="store-badge" href="https://apps.apple.com/app/osgkeyboard/id6781553267" rel="noopener">
|
||||
<img src="../assets/badges/appstore-en.svg" width="120" height="40" alt="Download on the App Store">
|
||||
</a>
|
||||
|
||||
<h2>How to use it</h2>
|
||||
<ol>
|
||||
<li>Install OSGKeyboard from the App Store and launch the Mac app.</li>
|
||||
<li>Grant <strong>Microphone</strong> and <strong>Accessibility</strong>.</li>
|
||||
<li>Focus any text field, <strong>hold Option</strong> while speaking, release to insert.</li>
|
||||
</ol>
|
||||
|
||||
<h2>What you get</h2>
|
||||
<div class="card">
|
||||
<ul>
|
||||
<li><strong>Floating pill overlay</strong> — live feedback without stealing focus.</li>
|
||||
<li><strong>Optional local models</strong> — SenseVoice / Qwen3 paths; audio need not leave the device by default.</li>
|
||||
<li><strong>BYOK polish</strong> — reuse LLM credits you already pay for.</li>
|
||||
<li><strong>Same product language as iOS</strong> — optional iCloud dictionary continuity.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p>Also need the phone? The same app ships an iOS custom keyboard — see the <a href="../install/#en">install guide</a>.</p>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<span>© OSGKeyboard</span>
|
||||
<span class="footer-links">
|
||||
<a href="../">Home</a>
|
||||
<a href="../privacy/">Privacy</a>
|
||||
<a href="https://github.com/hkgood/OSGKeyboard" rel="noopener">GitHub</a>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<p><a href="../">OSGKeyboard</a></p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-29
@@ -3,40 +3,13 @@
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>https://hkgood.github.io/OSGKeyboard/</loc>
|
||||
<lastmod>2026-07-29</lastmod>
|
||||
<lastmod>2026-07-30</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hkgood.github.io/OSGKeyboard/"/>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/en/"/>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/?lang=en"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://hkgood.github.io/OSGKeyboard/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://hkgood.github.io/OSGKeyboard/en/</loc>
|
||||
<lastmod>2026-07-29</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.95</priority>
|
||||
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hkgood.github.io/OSGKeyboard/"/>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://hkgood.github.io/OSGKeyboard/en/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://hkgood.github.io/OSGKeyboard/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://hkgood.github.io/OSGKeyboard/install/</loc>
|
||||
<lastmod>2026-07-29</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.85</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://hkgood.github.io/OSGKeyboard/compare/</loc>
|
||||
<lastmod>2026-07-29</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.85</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://hkgood.github.io/OSGKeyboard/mac-dictation/</loc>
|
||||
<lastmod>2026-07-29</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://hkgood.github.io/OSGKeyboard/privacy/</loc>
|
||||
<lastmod>2026-07-29</lastmod>
|
||||
|
||||
Reference in New Issue
Block a user