Files
OSGKeyboard/docs/index.html
T
2026-08-20 15:15:22 +08:00

687 lines
42 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-Hans" data-theme="light" data-lang="zh">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>OSGKeyboard — 语音、打字与 AI 助手键盘</title>
<meta
name="description"
content="OSGKeyboard 是适用于 iPhone、iPad 和 Mac 的语音输入工具。iOS 键盘集成语音听写、中英打字、AI 助手、剪贴板技能与可选托管积分;默认使用端侧识别。"
data-zh-content="OSGKeyboard 是适用于 iPhone、iPad 和 Mac 的语音输入工具。iOS 键盘集成语音听写、中英打字、AI 助手、剪贴板技能与可选托管积分;默认使用端侧识别。"
data-en-content="OSGKeyboard brings voice input to iPhone, iPad, and Mac. Its iOS keyboard combines dictation, Chinese and English typing, an AI assistant, clipboard skills, and optional managed credits—with on-device recognition by default."
>
<meta name="robots" content="index, follow">
<meta name="theme-color" content="#eef2f6">
<meta name="color-scheme" content="light dark">
<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/?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">
<meta property="og:type" content="website">
<meta property="og:site_name" content="OSGKeyboard">
<meta property="og:url" content="https://hkgood.github.io/OSGKeyboard/">
<meta
property="og:title"
content="OSGKeyboard — 开口即文字"
data-zh-content="OSGKeyboard — 开口即文字"
data-en-content="OSGKeyboard — Speak it. It's typed."
>
<meta
property="og:description"
content="一个键盘,完成听写、中英打字、AI 问答与剪贴板技能。默认端侧识别,也支持 BYOK 和可选托管积分。"
data-zh-content="一个键盘,完成听写、中英打字、AI 问答与剪贴板技能。默认端侧识别,也支持 BYOK 和可选托管积分。"
data-en-content="One keyboard for dictation, Chinese and English typing, AI answers, and clipboard skills. On-device by default, with BYOK and optional managed credits."
>
<meta property="og:image" content="https://hkgood.github.io/OSGKeyboard/assets/app-icon.png">
<meta name="twitter:card" content="summary">
<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.css">
<script>
(function () {
const saved = localStorage.getItem("osg-site-theme");
const dark = window.matchMedia("(prefers-color-scheme: dark)").matches;
document.documentElement.dataset.theme = saved || (dark ? "dark" : "light");
})();
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "SoftwareApplication",
"name": "OSGKeyboard",
"operatingSystem": "iOS 26, iPadOS 26, macOS 15",
"applicationCategory": "UtilitiesApplication",
"softwareVersion": "2.0.0",
"description": "A source-available voice and typing keyboard with on-device speech recognition by default, Chinese and English typing, an AI assistant, clipboard skills, BYOK providers, and optional managed credits.",
"downloadUrl": "https://apps.apple.com/app/osgkeyboard/id6781553267",
"url": "https://hkgood.github.io/OSGKeyboard/",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"featureList": [
"On-device iOS speech recognition by default",
"Chinese full pinyin and double pinyin typing",
"English autocomplete, autocorrect, and next-word suggestions",
"Unified dictation and AI assistant keyboard",
"Clipboard history and AI skills",
"Voice editing of the last verified insertion",
"Optional Sign in with Apple and managed credits on iOS",
"Bring-your-own-key cloud speech and AI",
"Mac Option-key global dictation with local Qwen3 MLX on Apple Silicon",
"Personal dictionary and optional iCloud sync"
],
"license": "https://github.com/hkgood/OSGKeyboard/blob/main/LICENSE"
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Does OSGKeyboard require an account?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No account is required for local dictation or providers you configure yourself. Sign in with Apple is optional and is used for managed credits, purchases, and referrals."
}
},
{
"@type": "Question",
"name": "Does OSGKeyboard upload recordings?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Local recognition keeps audio on the device. Audio leaves the device only after you explicitly choose a user-configured cloud engine or the managed-credit cloud path."
}
},
{
"@type": "Question",
"name": "Is OSGKeyboard open source?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The code is source available for audit and personal, non-commercial local use. It is not an open-source or MIT license."
}
}
]
}
]
}
</script>
</head>
<body>
<a
class="skip-link"
href="#main"
data-zh="跳到主要内容"
data-en="Skip to main content"
>跳到主要内容</a>
<header class="site-nav">
<nav class="nav-shell" aria-label="Primary">
<a class="brand" href="#top" aria-label="OSGKeyboard">
<img src="assets/app-icon.png" width="30" height="30" alt="">
<span>OSGKeyboard</span>
</a>
<div class="nav-links">
<a href="#assistant" data-zh="体验" data-en="Experience">体验</a>
<a href="#typing" data-zh="输入" data-en="Typing">输入</a>
<a href="#privacy" data-zh="隐私" data-en="Privacy">隐私</a>
<a href="#platforms" data-zh="平台" data-en="Platforms">平台</a>
</div>
<div class="nav-actions">
<button
class="icon-button mobile-menu-button"
id="menuToggle"
type="button"
aria-expanded="false"
aria-controls="mobileNav"
aria-label="打开导航"
data-zh-label="打开导航"
data-en-label="Open navigation"
>
<span class="material-symbols-rounded" aria-hidden="true">menu</span>
</button>
<button class="language-button" id="languageToggle" type="button" aria-label="Switch to English">EN</button>
<button class="icon-button" id="themeToggle" type="button" aria-label="切换到深色模式">
<span class="material-symbols-rounded" aria-hidden="true">dark_mode</span>
</button>
</div>
</nav>
<nav class="mobile-nav" id="mobileNav" aria-label="Mobile" hidden>
<a href="#assistant" data-zh="体验" data-en="Experience">体验</a>
<a href="#typing" data-zh="输入" data-en="Typing">输入</a>
<a href="#privacy" data-zh="隐私" data-en="Privacy">隐私</a>
<a href="#platforms" data-zh="平台" data-en="Platforms">平台</a>
</nav>
</header>
<main id="main">
<!-- Hero: one promise, one primary action -->
<section class="hero" id="top">
<div class="hero-orb" aria-hidden="true"></div>
<div class="hero-inner">
<p class="launch-pill">
<span class="launch-dot" aria-hidden="true"></span>
<span data-zh="OSGKeyboard 2.0 · 为 iOS 26 而生" data-en="OSGKeyboard 2.0 · Built for iOS 26">
OSGKeyboard 2.0 · 为 iOS 26 而生
</span>
</p>
<h1>
<span data-zh="声音,直达输入框。" data-en="From voice to text.">声音,直达输入框。</span>
<span class="hero-muted" data-zh="不用离开正在做的事。" data-en="Right where you type.">不用离开正在做的事。</span>
</h1>
<p
class="hero-copy"
data-zh="在任意 App 里听写、打字、提问和编辑。OSGKeyboard 把语音识别、中英输入与 AI 助手放进同一个键盘。"
data-en="Dictate, type, ask, and edit in any app. OSGKeyboard brings voice recognition, bilingual typing, and an AI assistant into one keyboard."
>在任意 App 里听写、打字、提问和编辑。OSGKeyboard 把语音识别、中英输入与 AI 助手放进同一个键盘。</p>
<div class="hero-actions">
<a
class="store-badge"
href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267"
data-zh-href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267"
data-en-href="https://apps.apple.com/app/osgkeyboard/id6781553267"
rel="noopener"
>
<img
src="assets/badges/ios-zh.svg"
data-zh-src="assets/badges/ios-zh.svg"
data-en-src="assets/badges/ios-en.svg"
data-zh-alt="立即下载 App Store 版"
data-en-alt="Download on the App Store"
alt="立即下载 App Store 版"
width="171"
height="48"
>
</a>
<a
class="text-action"
href="https://github.com/hkgood/OSGKeyboard"
data-zh="查看源码"
data-en="View source"
>查看源码</a>
</div>
<p
class="hero-note"
data-zh="iOS / iPadOS 26+ · 核心功能无需 OSG 账号 · 默认端侧识别"
data-en="iOS / iPadOS 26+ · No OSG account for core features · On-device by default"
>iOS / iPadOS 26+ · 核心功能无需 OSG 账号 · 默认端侧识别</p>
</div>
<a class="scroll-cue" href="#assistant" aria-label="Explore">
<span data-zh="看看它如何工作" data-en="See how it works">看看它如何工作</span>
<span class="material-symbols-rounded" aria-hidden="true">south</span>
</a>
</section>
<!-- Unified assistant: demonstrate the core interaction before listing features -->
<section class="section product-section" id="assistant">
<div class="section-inner">
<div class="center-heading">
<p class="eyebrow" data-zh="统一助手键盘" data-en="Unified assistant keyboard">统一助手键盘</p>
<h2 data-zh="一句话,从想法直接到输入框。" data-en="One thought. Ready to use where you are.">一句话,从想法直接到输入框。</h2>
<p
data-zh="轻点麦克风开始听写,长按直接向 AI 提问。结果先显示、后插入,让每一步都可见、可控。"
data-en="Tap the microphone to dictate, or hold it to ask AI. Results appear before insertion, so every step stays visible and under your control."
>轻点麦克风开始听写,长按直接向 AI 提问。结果先显示、后插入,让每一步都可见、可控。</p>
</div>
<div class="product-stage">
<div class="stage-bar">
<span class="stage-dots" aria-hidden="true"><i></i><i></i><i></i></span>
<span data-zh="任意 App · 功能示意" data-en="Any app · Product illustration">任意 App · 功能示意</span>
<span class="stage-status" data-zh="本地优先" data-en="Local first">本地优先</span>
</div>
<div class="stage-content">
<div class="conversation">
<span class="conversation-label" data-zh="当前输入" data-en="Current input">当前输入</span>
<div class="message-bubble">
<span data-zh="帮我把刚才的内容整理清楚,但保留我的语气。" data-en="Make that clearer, but keep it in my voice.">
帮我把刚才的内容整理清楚,但保留我的语气。
</span>
</div>
<div class="insert-preview">
<span class="preview-kicker" data-zh="准备插入" data-en="Ready to insert">准备插入</span>
<p
data-zh="内容已经整理得更清楚,同时保留了原本的表达方式。"
data-en="The message is clearer while preserving your original tone."
>内容已经整理得更清楚,同时保留了原本的表达方式。</p>
<span class="text-cursor" aria-hidden="true"></span>
</div>
</div>
<div class="keyboard-demo" aria-hidden="true">
<div class="assistant-tabs">
<span class="assistant-logo">OSG</span>
<span class="assistant-tab active" data-zh="助手" data-en="Assistant">助手</span>
<span class="assistant-tab">中文</span>
<span class="assistant-tab">EN</span>
<span class="material-symbols-rounded">more_horiz</span>
</div>
<div class="keyboard-keys">
<span>Q</span><span>W</span><span>E</span><span>R</span><span>T</span><span>Y</span><span>U</span><span>I</span><span>O</span><span>P</span>
<span>A</span><span>S</span><span>D</span><span>F</span><span>G</span><span>H</span><span>J</span><span>K</span><span>L</span>
</div>
<div class="assistant-controls">
<span class="round-control"><span class="material-symbols-rounded">undo</span></span>
<span class="mic-control"><span class="material-symbols-rounded">mic</span></span>
<span class="round-control"><span class="material-symbols-rounded">arrow_upward</span></span>
</div>
</div>
</div>
</div>
<div class="gesture-grid">
<article>
<span class="gesture-number">01</span>
<span class="material-symbols-rounded" aria-hidden="true">mic</span>
<h3 data-zh="说出意图" data-en="Express intent">说出意图</h3>
<p data-zh="轻点听写,长按提问。" data-en="Tap to dictate, hold to ask.">轻点听写,长按提问。</p>
</article>
<article>
<span class="gesture-number">02</span>
<span class="material-symbols-rounded" aria-hidden="true">auto_fix_high</span>
<h3 data-zh="理解并处理" data-en="Understand and process">理解并处理</h3>
<p data-zh="润色、问答或编辑上次输入。" data-en="Polish, answer, or edit the last input.">润色、问答或编辑上次输入。</p>
</article>
<article>
<span class="gesture-number">03</span>
<span class="material-symbols-rounded" aria-hidden="true">text_fields</span>
<h3 data-zh="确认后插入" data-en="Preview, then insert">确认后插入</h3>
<p data-zh="只有光标和上下文匹配时才自动上屏。" data-en="Auto-insert only when cursor context still matches.">只有光标和上下文匹配时才自动上屏。</p>
</article>
</div>
</div>
</section>
<!-- Voice scenario -->
<section class="section scene-section">
<div class="section-inner scene-layout">
<div class="scene-copy">
<p class="eyebrow" data-zh="语音输入" data-en="Voice input">语音输入</p>
<h2 data-zh="开口即文字,不打断思路。" data-en="Speak naturally. Keep your train of thought.">开口即文字,不打断思路。</h2>
<p
data-zh="本地识别可以直接开始。热词、个人词典与上下文补偿,让名字、术语和常用表达更准确。"
data-en="Start immediately with local recognition. Hotwords, a personal dictionary, and context compensation improve names, terminology, and phrases you use often."
>本地识别可以直接开始。热词、个人词典与上下文补偿,让名字、术语和常用表达更准确。</p>
<ul class="quiet-list">
<li data-zh="默认使用 Apple 端侧语音识别" data-en="Apple on-device recognition by default">默认使用 Apple 端侧语音识别</li>
<li data-zh="云端识别和 AI 润色始终由你选择" data-en="Cloud recognition and AI polish are always your choice">云端识别和 AI 润色始终由你选择</li>
<li data-zh="可用语音重写上一次已验证输入" data-en="Rewrite the last verified insertion by voice">可用语音重写上一次已验证输入</li>
</ul>
</div>
<div class="voice-stage">
<div class="voice-meta">
<span data-zh="本地 · Apple 语音识别" data-en="Local · Apple Speech">本地 · Apple 语音识别</span>
<span class="live-indicator"><i></i><span data-zh="听写中" data-en="Listening">听写中</span></span>
</div>
<div class="transcript-card">
<span class="transcript-before" data-zh="今天下午把新版本上线计划" data-en="This afternoon, review the launch plan">今天下午把新版本上线计划</span>
<strong data-zh="和产品团队确认一下。" data-en="with the product team.">和产品团队确认一下。</strong>
</div>
<div class="waveform" aria-hidden="true">
<i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i>
</div>
<div class="voice-footer">
<span data-zh="已识别 18 个字" data-en="18 words recognized">已识别 18 个字</span>
<span data-zh="完成" data-en="Done">完成</span>
</div>
</div>
</div>
</section>
<!-- Chinese and English typing -->
<section class="section typing-section" id="typing">
<div class="section-inner">
<div class="center-heading compact">
<p class="eyebrow" data-zh="中文与英文输入" data-en="Chinese and English typing">中文与英文输入</p>
<h2 data-zh="不想说时,也是一把完整键盘。" data-en="A complete keyboard when you would rather type.">不想说时,也是一把完整键盘。</h2>
</div>
<div class="typing-stories">
<article class="typing-story">
<div class="typing-visual chinese-visual">
<span class="typing-label" data-zh="全拼 / 双拼" data-en="Full / double pinyin">全拼 / 双拼</span>
<div class="composition-row"><strong>jintian</strong><span class="text-cursor" aria-hidden="true"></span></div>
<div class="candidate-row">
<span class="selected">今天</span><span>今天的</span><span>近天</span><span>金田</span>
</div>
<div class="mini-keyboard" aria-hidden="true">
<span>q</span><span>w</span><span>e</span><span>r</span><span>t</span><span>y</span><span>u</span><span>i</span><span>o</span><span>p</span>
</div>
</div>
<div class="story-copy">
<span class="story-index">01</span>
<h3 data-zh="中文输入,熟悉而完整。" data-en="Chinese typing that feels complete.">中文输入,熟悉而完整。</h3>
<p
data-zh="全拼、自然码、小鹤、微软与搜狗双拼;候选分页、数字选词、滑动选词与中英混输一并具备。"
data-en="Full pinyin plus Natural Code, Xiaohe, Microsoft, and Sogou double pinyin—with candidate paging, number selection, swiping, and mixed Chinese-English input."
>全拼、自然码、小鹤、微软与搜狗双拼;候选分页、数字选词、滑动选词与中英混输一并具备。</p>
</div>
</article>
<article class="typing-story reverse">
<div class="typing-visual english-visual">
<span class="typing-label">English</span>
<div class="suggestion-row"><span>Meet</span><span class="selected">Meeting</span><span>Meetings</span></div>
<div class="english-line">Let's schedule a meetign<span class="correction-mark"></span></div>
<div class="correction-chip"><span class="material-symbols-rounded">spellcheck</span><span>meeting</span></div>
</div>
<div class="story-copy">
<span class="story-index">02</span>
<h3 data-zh="英文输入,越用越顺手。" data-en="English typing that gets out of your way.">英文输入,越用越顺手。</h3>
<p
data-zh="前缀补全、自动纠错、下一词预测、候选撤销与句首大小写,让双语切换保持同样流畅。"
data-en="Prefix completion, autocorrect, next-word prediction, candidate undo, and sentence capitalization keep bilingual typing fluid."
>前缀补全、自动纠错、下一词预测、候选撤销与句首大小写,让双语切换保持同样流畅。</p>
</div>
</article>
</div>
</div>
</section>
<!-- Clipboard and skill scenarios -->
<section class="section skills-section" id="skills">
<div class="section-inner">
<div class="scene-layout skills-layout">
<div class="skills-stage">
<div class="clipboard-source">
<span class="material-symbols-rounded" aria-hidden="true">content_copy</span>
<div>
<small data-zh="刚刚复制" data-en="Just copied">刚刚复制</small>
<p data-zh="明天下午三点和产品团队确认新版上线计划。" data-en="Confirm the launch plan with the product team tomorrow at 3 PM.">
明天下午三点和产品团队确认新版上线计划。
</p>
</div>
</div>
<span class="stage-arrow material-symbols-rounded" aria-hidden="true">south</span>
<div class="skill-actions">
<span class="primary"><span class="material-symbols-rounded">reply</span><span data-zh="回复" data-en="Reply">回复</span></span>
<span><span class="material-symbols-rounded">summarize</span><span data-zh="总结" data-en="Summarize">总结</span></span>
<span><span class="material-symbols-rounded">translate</span><span data-zh="翻译" data-en="Translate">翻译</span></span>
<span><span class="material-symbols-rounded">task_alt</span><span data-zh="待办" data-en="Tasks">待办</span></span>
<span><span class="material-symbols-rounded">event</span><span data-zh="日程" data-en="Events">日程</span></span>
<span><span class="material-symbols-rounded">near_me</span><span data-zh="导航" data-en="Navigate">导航</span></span>
</div>
</div>
<div class="scene-copy">
<p class="eyebrow" data-zh="剪贴板与快捷技能" data-en="Clipboard and quick skills">剪贴板与快捷技能</p>
<h2 data-zh="复制之后,直接行动。" data-en="After copy comes action.">复制之后,直接行动。</h2>
<p
data-zh="从剪贴板历史继续工作,把已有文字变成回复、总结、翻译、待办、日程或导航。所有读取都由你主动开启。"
data-en="Continue from clipboard history and turn existing text into a reply, summary, translation, task, event, or navigation. Clipboard access remains opt-in."
>从剪贴板历史继续工作,把已有文字变成回复、总结、翻译、待办、日程或导航。所有读取都由你主动开启。</p>
</div>
</div>
<div class="styles-strip">
<div>
<p class="eyebrow" data-zh="个性化润色" data-en="Personalized polish">个性化润色</p>
<h3 data-zh="整理表达,但不要改掉你的语气。" data-en="Improve the writing without erasing your voice.">整理表达,但不要改掉你的语气。</h3>
</div>
<div class="style-options">
<span data-zh="轻度清理" data-en="Light cleanup">轻度清理</span>
<span class="selected" data-zh="清晰结构" data-en="Clear structure">清晰结构</span>
<span data-zh="正式表达" data-en="Formal">正式表达</span>
<span data-zh="日常聊天" data-en="Casual">日常聊天</span>
</div>
</div>
</div>
</section>
<!-- Privacy and service paths -->
<section class="section privacy-section" id="privacy">
<div class="section-inner">
<div class="center-heading inverse">
<p class="eyebrow" data-zh="隐私与选择" data-en="Privacy and choice">隐私与选择</p>
<h2 data-zh="输入路径,由你决定。" data-en="You choose how your input is processed.">输入路径,由你决定。</h2>
<p
data-zh="先使用本地能力。需要更强模型时,再选择自己的 API Key 或可选托管积分。路径透明,决定权始终在你。"
data-en="Start locally. When you need a stronger model, choose your own API key or optional managed credits. The path stays explicit, and the decision stays yours."
>先使用本地能力。需要更强模型时,再选择自己的 API Key 或可选托管积分。路径透明,决定权始终在你。</p>
</div>
<div class="service-paths">
<article>
<span class="path-number">01</span>
<span class="material-symbols-rounded" aria-hidden="true">memory</span>
<h3 data-zh="端侧优先" data-en="On-device first">端侧优先</h3>
<p data-zh="默认 Apple 本地识别;Mac Apple Silicon 还可使用 Qwen3 MLX。" data-en="Apple local recognition by default; Qwen3 MLX is also available on Apple Silicon Macs.">
默认 Apple 本地识别;Mac Apple Silicon 还可使用 Qwen3 MLX。
</p>
<span class="path-note" data-zh="无需账号 · 音频留在设备" data-en="No account · Audio stays on device">无需账号 · 音频留在设备</span>
</article>
<article>
<span class="path-number">02</span>
<span class="material-symbols-rounded" aria-hidden="true">key</span>
<h3 data-zh="自备 API Key" data-en="Bring your own key">自备 API Key</h3>
<p data-zh="连接你选择的语音或 AI 服务商。凭证保存在 Keychain。" data-en="Connect the speech or AI provider you choose. Credentials stay in Keychain.">
连接你选择的语音或 AI 服务商。凭证保存在 Keychain。
</p>
<span class="path-note" data-zh="无需 OSG 账号 · 服务商直接处理" data-en="No OSG account · Provider processes directly">无需 OSG 账号 · 服务商直接处理</span>
</article>
<article>
<span class="path-number">03</span>
<span class="material-symbols-rounded" aria-hidden="true">toll</span>
<h3 data-zh="托管积分" data-en="Managed credits">托管积分</h3>
<p data-zh="iOS / iPadOS 可选 Apple 登录与积分服务,无需自行管理 Key。" data-en="Optional Sign in with Apple and managed credits on iOS / iPadOS, with no key to manage.">
iOS / iPadOS 可选 Apple 登录与积分服务,无需自行管理 Key。
</p>
<span class="path-note" data-zh="明确同意后使用 · 可注销账号" data-en="Explicit opt-in · Account deletion available">明确同意后使用 · 可注销账号</span>
</article>
</div>
<div class="privacy-proof">
<div>
<span class="material-symbols-rounded" aria-hidden="true">shield_lock</span>
<h3 data-zh="普通击键不采集,剪贴板需主动开启。" data-en="No ordinary keystroke collection. Clipboard access is opt-in.">
普通击键不采集,剪贴板需主动开启。
</h3>
</div>
<a class="inverse-link" href="privacy/">
<span data-zh="阅读完整隐私政策" data-en="Read the full privacy policy">阅读完整隐私政策</span>
<span class="material-symbols-rounded" aria-hidden="true">arrow_outward</span>
</a>
</div>
</div>
</section>
<!-- Platform capabilities -->
<section class="section platforms-section" id="platforms">
<div class="section-inner">
<div class="center-heading compact">
<p class="eyebrow" data-zh="跨平台" data-en="Across platforms">跨平台</p>
<h2 data-zh="在手机上输入,在 Mac 上继续。" data-en="Type on mobile. Keep going on Mac.">在手机上输入,在 Mac 上继续。</h2>
</div>
<div class="platform-stories">
<article>
<div class="platform-symbol ios-symbol" aria-hidden="true">
<span class="material-symbols-rounded">keyboard</span>
</div>
<div>
<span class="platform-label">iOS / iPadOS 26+</span>
<h3 data-zh="系统键盘里的完整输入工作区" data-en="A complete input workspace in the system keyboard">系统键盘里的完整输入工作区</h3>
<p data-zh="听写、AI 助手、中文与英文输入、剪贴板技能、个人词典和可选 iCloud 同步。" data-en="Dictation, AI assistant, Chinese and English typing, clipboard skills, personal dictionary, and optional iCloud sync.">
听写、AI 助手、中文与英文输入、剪贴板技能、个人词典和可选 iCloud 同步。
</p>
</div>
</article>
<article>
<div class="platform-symbol mac-symbol" aria-hidden="true">
<span class="option-key"></span>
</div>
<div>
<span class="platform-label">macOS 15+</span>
<h3 data-zh="按住 Option,在任何位置开始听写" data-en="Hold Option to dictate anywhere">按住 Option,在任何位置开始听写</h3>
<p data-zh="全局热键、底部实时浮层、Apple Speech 回退,以及 Apple Silicon 上的 Qwen3 MLX 本地模型。" data-en="Global hotkey, live bottom overlay, Apple Speech fallback, and a local Qwen3 MLX model on Apple Silicon.">
全局热键、底部实时浮层、Apple Speech 回退,以及 Apple Silicon 上的 Qwen3 MLX 本地模型。
</p>
</div>
</article>
</div>
<p class="platform-footnote">
<span data-zh="公开 Mac DMG 仍为历史版 1.1;最新 Mac 2.0 能力可从源码构建。" data-en="The public Mac DMG remains historical version 1.1; build from source for the latest Mac 2.0 capabilities.">
公开 Mac DMG 仍为历史版 1.1;最新 Mac 2.0 能力可从源码构建。
</span>
</p>
</div>
</section>
<!-- Getting started and stable capabilities -->
<section class="section start-section" id="start">
<div class="section-inner">
<div class="split-heading">
<div>
<p class="eyebrow" data-zh="开始使用" data-en="Get started">开始使用</p>
<h2 data-zh="两分钟,让声音进入键盘。" data-en="Put your voice in the keyboard in two minutes.">两分钟,让声音进入键盘。</h2>
</div>
<p data-zh="本地路径可以直接开始。只有在选择云端能力时,才需要进一步配置。" data-en="The local path works immediately. Additional setup is needed only when you choose cloud capabilities.">
本地路径可以直接开始。只有在选择云端能力时,才需要进一步配置。
</p>
</div>
<ol class="setup-steps">
<li>
<h3 data-zh="安装并授权" data-en="Install and authorize">安装并授权</h3>
<p data-zh="iOS 添加键盘并开启完全访问;Mac 授予麦克风与辅助功能权限。" data-en="Add the keyboard and enable Full Access on iOS; grant microphone and Accessibility permissions on Mac.">
iOS 添加键盘并开启完全访问;Mac 授予麦克风与辅助功能权限。
</p>
</li>
<li>
<h3 data-zh="选择服务路径" data-en="Choose a service path">选择服务路径</h3>
<p data-zh="直接使用本地识别,或按需添加自己的 Key、登录托管积分。" data-en="Use local recognition, add your own key, or sign in for managed credits as needed.">
直接使用本地识别,或按需添加自己的 Key、登录托管积分。
</p>
</li>
<li>
<h3 data-zh="开口或打字" data-en="Speak or type">开口或打字</h3>
<p data-zh="轻点听写、长按提问,或切换到中文 / English 键盘。" data-en="Tap to dictate, hold to ask, or switch to Chinese / English typing.">
轻点听写、长按提问,或切换到中文 / English 键盘。
</p>
</li>
</ol>
<div class="stable-strip">
<span data-zh="稳定性同样是功能" data-en="Reliability is a feature">稳定性同样是功能</span>
<ul>
<li data-zh="扩展冷启动保护" data-en="Extension cold-start protection">扩展冷启动保护</li>
<li data-zh="内存压力降级" data-en="Memory-pressure fallback">内存压力降级</li>
<li data-zh="上下文安全插入" data-en="Context-safe insertion">上下文安全插入</li>
<li data-zh="中断后恢复" data-en="Recovery after interruption">中断后恢复</li>
</ul>
</div>
</div>
</section>
<!-- FAQ: quotable product and privacy boundaries -->
<section class="section faq-section" id="faq">
<div class="section-inner faq-layout">
<div>
<p class="eyebrow" data-zh="常见问题" data-en="FAQ">常见问题</p>
<h2 data-zh="把重要边界说清楚。" data-en="The important boundaries, clearly stated.">把重要边界说清楚。</h2>
</div>
<div class="faq-list">
<details class="faq-item">
<summary data-zh="必须注册 OSG 账号吗?" data-en="Do I need an OSG account?">必须注册 OSG 账号吗?</summary>
<p data-zh="不需要。本地听写和自备服务商无需 OSG 账号。Apple 登录仅用于可选托管积分、购买、邀请与资料管理。" data-en="No. Local dictation and providers you configure yourself need no OSG account. Sign in with Apple is only for optional managed credits, purchases, referrals, and profile controls.">
不需要。本地听写和自备服务商无需 OSG 账号。Apple 登录仅用于可选托管积分、购买、邀请与资料管理。
</p>
</details>
<details class="faq-item">
<summary data-zh="录音会上传吗?" data-en="Does my audio get uploaded?">录音会上传吗?</summary>
<p data-zh="默认本地识别不会上传录音。只有你明确选择自备云端识别或托管积分云端识别时,音频才会发送到对应服务路径。" data-en="Default local recognition does not upload audio. Audio leaves the device only when you explicitly select a user-configured cloud engine or managed-credit cloud recognition.">
默认本地识别不会上传录音。只有你明确选择自备云端识别或托管积分云端识别时,音频才会发送到对应服务路径。
</p>
</details>
<details class="faq-item">
<summary data-zh="为什么键盘需要“完全访问”?" data-en="Why does the keyboard need Full Access?">为什么键盘需要“完全访问”?</summary>
<p data-zh="完全访问让键盘扩展与主 App 通过 App Group 协作、读取共享 Keychain 中的用户凭证,并在你主动开启后访问剪贴板。它不代表我们会收集普通击键。" data-en="Full Access lets the keyboard work with the host app through App Group, read user credentials from the shared Keychain, and access the clipboard only after you opt in. It does not mean ordinary keystrokes are collected.">
完全访问让键盘扩展与主 App 通过 App Group 协作、读取共享 Keychain 中的用户凭证,并在你主动开启后访问剪贴板。它不代表我们会收集普通击键。
</p>
</details>
<details class="faq-item">
<summary data-zh="OSGKeyboard 是开源软件吗?" data-en="Is OSGKeyboard open source?">OSGKeyboard 是开源软件吗?</summary>
<p data-zh="不是。项目采用源码可见许可,允许个人学习与非商用本地使用;再分发、公开衍生版本和商业使用需要获得许可。" data-en="No. It uses a source-available license for personal learning and non-commercial local use. Redistribution, public derivatives, and commercial use require permission.">
不是。项目采用源码可见许可,允许个人学习与非商用本地使用;再分发、公开衍生版本和商业使用需要获得许可。
</p>
</details>
<details class="faq-item">
<summary data-zh="Mac 下载为什么是 1.1" data-en="Why is the Mac download version 1.1?">Mac 下载为什么是 1.1</summary>
<p data-zh="当前公开、已签名并公证的 DMG 是历史版 1.1。仓库中的 Mac target 随整体源码演进到 2.0;需要最新源码能力时可在 macOS 与 Xcode 26 中自行构建。" data-en="The currently public, signed, and notarized DMG is historical version 1.1. The Mac target in source evolves with the 2.0 codebase; build it with macOS and Xcode 26 for the latest source capabilities.">
当前公开、已签名并公证的 DMG 是历史版 1.1。仓库中的 Mac target 随整体源码演进到 2.0;需要最新源码能力时可在 macOS 与 Xcode 26 中自行构建。
</p>
</details>
</div>
</div>
</section>
<!-- Download CTA -->
<section class="section download-section" id="download">
<div class="section-inner">
<div class="download-panel">
<div>
<p class="eyebrow" data-zh="开口即文字" data-en="Speak it. It's typed.">开口即文字</p>
<h2 data-zh="下一段文字,从一句话开始。" data-en="Your next sentence starts with your voice.">下一段文字,从一句话开始。</h2>
<p data-zh="先从免费、本地的核心能力开始。需要时,再选择自己的服务商或托管积分。" data-en="Start with the free, local core. Add your own provider or managed credits only when you need them.">
先从免费、本地的核心能力开始。需要时,再选择自己的服务商或托管积分。
</p>
</div>
<div class="download-actions">
<a
class="store-badge"
href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267"
data-zh-href="https://apps.apple.com/cn/app/osgkeyboard/id6781553267"
data-en-href="https://apps.apple.com/app/osgkeyboard/id6781553267"
rel="noopener"
>
<img
src="assets/badges/ios-zh.svg"
data-zh-src="assets/badges/ios-zh.svg"
data-en-src="assets/badges/ios-en.svg"
data-zh-alt="立即下载 App Store 版"
data-en-alt="Download on the App Store"
alt="立即下载 App Store 版"
width="171"
height="48"
>
</a>
<a class="store-badge" href="https://github.com/hkgood/OSGKeyboard/releases/download/v1.1-mac/OSGKeyboard-1.1.dmg">
<img
src="assets/badges/macos-zh.svg"
data-zh-src="assets/badges/macos-zh.svg"
data-en-src="assets/badges/macos-en.svg"
data-zh-alt="下载 macOS 历史版本 1.1"
data-en-alt="Download historical macOS version 1.1"
alt="下载 macOS 历史版本 1.1"
width="171"
height="48"
>
</a>
<a
class="outline-action"
href="https://github.com/hkgood/OSGKeyboard#从源码构建"
data-zh-href="https://github.com/hkgood/OSGKeyboard#从源码构建"
data-en-href="https://github.com/hkgood/OSGKeyboard/blob/main/README.en.md#build-from-source"
>
<span class="material-symbols-rounded" aria-hidden="true">terminal</span>
<span data-zh="从源码构建" data-en="Build from source">从源码构建</span>
</a>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="footer-inner">
<span data-zh="OSGKeyboard 2.0.0 · 源码可见,非开源软件" data-en="OSGKeyboard 2.0.0 · Source available, not open source">
OSGKeyboard 2.0.0 · 源码可见,非开源软件
</span>
<div class="footer-links">
<a href="privacy/" data-zh="隐私政策" data-en="Privacy">隐私政策</a>
<a href="https://github.com/hkgood/OSGKeyboard/blob/main/LICENSE" data-zh="许可" data-en="License">许可</a>
<a href="https://github.com/hkgood/OSGKeyboard/issues" data-zh="支持" data-en="Support">支持</a>
<a href="https://github.com/hkgood/OSGKeyboard" data-zh="源码" data-en="Source">源码</a>
</div>
</div>
</footer>
<script src="assets/site.js"></script>
</body>
</html>