{"id":13831203,"url":"https://github.com/openvanilla/openvanilla","last_synced_at":"2026-03-07T02:35:02.683Z","repository":{"id":5172014,"uuid":"6345256","full_name":"openvanilla/openvanilla","owner":"openvanilla","description":"Providing common input methods to Mac users","archived":false,"fork":false,"pushed_at":"2025-12-05T04:12:05.000Z","size":104641,"stargazers_count":496,"open_issues_count":3,"forks_count":131,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-12-08T11:51:49.529Z","etag":null,"topics":["input-method","keyboard","macos"],"latest_commit_sha":null,"homepage":"https://openvanilla.org/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"vpulim/node-soap","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openvanilla.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-10-23T01:44:32.000Z","updated_at":"2025-12-05T04:12:06.000Z","dependencies_parsed_at":"2022-07-16T09:46:13.586Z","dependency_job_id":"93c60299-97c2-4113-89b1-5ce5c3eee556","html_url":"https://github.com/openvanilla/openvanilla","commit_stats":{"total_commits":3307,"total_committers":29,"mean_commits":"114.03448275862068","dds":0.7348049591775023,"last_synced_commit":"108e2bd4c465b1fcc85aa20abf4fcdb117739477"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/openvanilla/openvanilla","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openvanilla%2Fopenvanilla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openvanilla%2Fopenvanilla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openvanilla%2Fopenvanilla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openvanilla%2Fopenvanilla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openvanilla","download_url":"https://codeload.github.com/openvanilla/openvanilla/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openvanilla%2Fopenvanilla/sbom","scorecard":{"id":710695,"data":{"date":"2025-08-11","repo":{"name":"github.com/openvanilla/openvanilla","commit":"ecf87170f02e321e87be305617bbfcd6a24894e8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 6/11 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/codeium-pr-agent.yml:13","Warn: no topLevel permission defined: .github/workflows/codeium-pr-agent.yml:1","Warn: no topLevel permission defined: .github/workflows/continuous-integration-workflow.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/codeium-pr-agent.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/openvanilla/openvanilla/codeium-pr-agent.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/openvanilla/openvanilla/continuous-integration-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/continuous-integration-workflow.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/openvanilla/openvanilla/continuous-integration-workflow.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 1.8.2 not signed: https://api.github.com/repos/openvanilla/openvanilla/releases/203424313","Warn: release artifact 1.8.1 not signed: https://api.github.com/repos/openvanilla/openvanilla/releases/202477156","Warn: release artifact 1.8.0 not signed: https://api.github.com/repos/openvanilla/openvanilla/releases/198292918","Warn: release artifact 1.7.2 not signed: https://api.github.com/repos/openvanilla/openvanilla/releases/193517528","Warn: release artifact 1.7.1 not signed: https://api.github.com/repos/openvanilla/openvanilla/releases/192142143","Warn: release artifact 1.8.2 does not have provenance: https://api.github.com/repos/openvanilla/openvanilla/releases/203424313","Warn: release artifact 1.8.1 does not have provenance: https://api.github.com/repos/openvanilla/openvanilla/releases/202477156","Warn: release artifact 1.8.0 does not have provenance: https://api.github.com/repos/openvanilla/openvanilla/releases/198292918","Warn: release artifact 1.7.2 does not have provenance: https://api.github.com/repos/openvanilla/openvanilla/releases/193517528","Warn: release artifact 1.7.1 does not have provenance: https://api.github.com/repos/openvanilla/openvanilla/releases/192142143"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T08:08:36.765Z","repository_id":5172014,"created_at":"2025-08-22T08:08:36.766Z","updated_at":"2025-08-22T08:08:36.766Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"online","status_checked_at":"2026-03-07T02:00:06.765Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["input-method","keyboard","macos"],"created_at":"2024-08-04T10:01:21.777Z","updated_at":"2026-03-07T02:35:02.656Z","avatar_url":"https://github.com/openvanilla.png","language":"C++","readme":"# OpenVanilla 輸入法套件\n\n最新版本[由此處下載](https://github.com/openvanilla/openvanilla/releases)\n\n僅以此 README 紀念李士傑 (Shih-Chieh Ilya Li, 1973-2019)。\n\n## 簡介\n\nOpenVanilla 是一套為 Mac 設計的輸入法套件。內建的輸入法包括了倉頡、簡易（速成）、大易、行列、符號與日文假名共五種。使用者可透過偏好設定，匯入其他輸入法的表格，來建立符合自己需要的輸入法。\n\n注音輸入法（包括傳統注音以及自動選字注音）的使用者，可安裝「[小麥注音](http://mcbopomofo.openvanilla.org)」。\n\n## 安裝方式\n\n下載最新版本，瀏覽器解壓縮安裝包後，會看到「安裝 OpenVanilla」的安裝程式。執行安裝程式後，即可從螢幕右上方的輸入法選單（所謂的國旗選單）選取 OpenVanilla。\n\n第一次安裝，預設的輸入法為倉頡。使用者可依需要選取內建輸入法，或是從「OpenVanilla 偏好設定…」中匯入自己所需的輸入法。\n\n## 系統需求\n\nmacOS 10.15 Catalina 或更高版本。\n\n## 軟體授權\n\n本專案採用 MIT License 釋出，使用者可自由使用、散播本軟體，惟散播時必須保持軟體完整、不得修改版權文字。[授權全文在此](https://github.com/lukhnos/openvanilla/blob/master/LICENSE.txt)。\n\n## 卸載方式\n\n要卸載 OpenVanilla，請在 Finder 視窗中按著  鍵 (Command 鍵) 不放，繼續按 Shift 鍵和 G 鍵 (Cmd-Shift-G)，這時會出現對話框，打入 `~/Library/Input Methods/` 按下 Enter 鍵，這時會跳出一個資料夾，將裡面的 `OpenVanilla` 檔拖入垃圾桶，登出目前帳號再登入即可。\n\n## 線上論壇\n\n有使用上的問題，可在 OpenVanilla 的 [Google Groups 線上論壇](https://groups.google.com/forum/?fromgroups/openvanilla#!forum/openvanilla)上提出。\n\n## 常見問題\n\n### Q: 注音輸入法要去哪裡安裝？\n\n小麥注音是 OpenVanilla 作者群開發的新輸入法，提供自動選字的注音（類似微軟新注音或漢音）以及俗稱「ㄅ半」的傳統注音。小麥注音可從[此處](http://mcbopomofo.openvanilla.org)取得。\n\n### Q: 舊版安裝程式要去哪邊找？\n\nOpenVanilla 的歷來版本都可從[GitHub 的釋出版本頁面](https://github.com/openvanilla/openvanilla/releases)找到。要注意的是，1.0 之前的舊版，由於年代久遠，不保證能在現在的 macOS 上正確安裝，請參閱各版本的釋出說明。\n\n### Q: 如何取得其他輸入法表格？\n\n常用的輸入法表格可從 OpenVanilla 的[原始碼網站](https://github.com/lukhnos/openvanilla/tree/master/DataTables)下載，例如[大字集的倉頡](https://raw.github.com/lukhnos/openvanilla/master/DataTables/cj-ext.cin)、[粵語拼音](https://raw.github.com/lukhnos/openvanilla/master/DataTables/jyutping.cin)、[電信碼](https://raw.github.com/lukhnos/openvanilla/master/DataTables/telecode.cin)、[五筆](https://raw.github.com/lukhnos/openvanilla/master/DataTables/wubizixing.cin)等。\n\n（註：粵拼自 OpenVanilla 1.3.0 開始內建，同時內建有調號及無調號兩種版本。）\n\n在 Chinese Open Desktop 專案中，也提供許多可以使用的[輸入法表格](https://github.com/chinese-opendesktop/cin-tables)。\n\n### Q: 如何匯入輸入法表格？\n\n將 OpenVanilla 輸入法選單拉下來，選「OpenVanilla 偏好設定…」，然後選「加入新輸入法」，按「匯入…」按鈕，然後選取下載來的 .cin 檔案就可以了。\n\n### Q: 如何製作自己的 .cin 輸入法表格檔？\n\n請參考這份[舊文件](CinHowTo.markdown)。請注意文件內容已經有許多地方過時。OpenVanilla 1.0 版不再需要使用者自行複製檔案到特定目錄（目錄也已經改名），現在從偏好設定就可以加入或移除自訂的輸入法了。\n\n### Q: 其他非表格類的輸入法，要去哪裡取得？\n\n以下是一些 OpenVanilla 過去支援，從 1.0 開始不再提供的輸入法，以及替代方案：\n\n- 注音輸入法（自動選字注音及傳統注音）：請下載[小麥注音](http://mcbopomofo.openvanilla.org)\n- 藏文輸入法：macOS 已經內建\n- POJ: 請使用[信望愛台語客語輸入法](http://taigi.fhl.net/TaigiIME/)或[教育部臺灣閩南語漢字輸入法](https://language.moe.gov.tw/result.aspx?classify_sn=23\u0026subclassify_sn=442\u0026content_sn=28)；這些輸入法都有 Mac 版本。另外也可以參考基於 RIME 的[萌台語](https://github.com/whyjz/rime-moetaigi)輸入法\n\n另外，嘸蝦米輸入法的使用者，請前往[嘸蝦米官方網站](http://boshiamy.com)取得 Mac 版本。\n\n### Q: 輸入法在有的程式可以用，有的程式卻顯示灰色的圖示，怎麼辦？\n\n這可能是 macOS 的 bug。要解決此問題，請先完全卸載 OpenVanilla（卸載方式請參考上面），重新登入後，再重新安裝一次 OpenVanilla。\n\n\u003ca id=\"why-logout-is-needed\"\u003e\u003c/a\u003e\n\n### Q: 要如何參與開發？\n\nOpenVanilla 是開放原始碼的計畫，歡迎從 [GitHub](https://github.com/lukhnos/openvanilla/) 取得原始碼。\n\n有開發上的疑問，歡迎透過 GitHub 的[追蹤系統](https://github.com/lukhnos/openvanilla/issues)或 [Google Groups 論壇](https://groups.google.com/forum/?fromgroups/openvanilla#!forum/openvanilla)回報。\n\n### Q: 要如何從原始碼建立 OpenVanilla 執行檔？\n\n請先至 GitHub 取得 [OpenVanilla 原始碼](https://github.com/lukhnos/openvanilla)，並安裝最新版的 [Xcode](https://itunes.apple.com/us/app/xcode/id497799835?mt=12)。打開其中的 `OpenVanilla.xcodeproj` 計畫檔，在 Xcode 內選擇 Build 指令就可以編譯出 `OpenVanilla.app`。要注意的是這個 target 並不會自動安裝輸入法（因此不會覆蓋你現有的版本）。如果要安裝輸入法，可另行 build `OpenVanillaInstaller` 這個 target（會自動 build 其相依的 `OpenVanilla` target），然後執行 installer 就可以安裝了。\n\n### Q: 為什麼叫 OpenVanilla?\n\nOpenVanilla 的前身是一個名叫 VanillaInput 的輸入法軟體，原先 (2004 年時) 設計來取代 macOS 內建的傳統注音。\n\n由於 macOS 內建的倉頡輸入法當時有許多與習慣不合處，VanillaInput 後來加入了倉頡輸入法。之後幾個朋友一起擴充了這個架構，變成可以用來開發新輸入法的軟體專案。\n\n因為是開放原始碼的計畫，又採取開放架構，因此稱之為 OpenVanilla。雖然一般俗稱「香草輸入法」，但 OpenVanilla 本身並不是一套輸入法，而是用來提供像倉頡、簡易等輸入法的套件，因此本站通稱 OpenVanilla。\n\n### Q: 有使用上的問題，要去哪裡問？\n\nOpenVanilla 的 [Google Groups 線上論壇](https://groups.google.com/forum/?fromgroups/openvanilla#!forum/openvanilla)。\n\n### Q: 如果要基於 OpenVanilla 開發新的輸入法，有什麼要注意的地方？\n\n您如果想要基於 OpenVanilla，開發新的 macOS 上的輸入方案，在您從 OpenVanilla 的程式碼建立新的開發分支的時候，請注意以下事項：\n\n1. 修改 Info.plist 裡面的 `CFBundleIdentifier`、`CFBundleName`、`InputMethodConnectionName`，避免與 OpenVanilla 本身衝突。如果您沒有修改這些設定，那麼，在同一台 macOS 主機上，同時安裝了 OpenVanilla 與您自己修改過的輸入法軟體，可能會導致系統無法正確辨識輸入法，造成無法使用、甚至無法安裝的情況。\n2. OpenVanilla 內建一套版本更新機制，方便用戶升級到最新的版本。在您基於 OpenVanilla 開發新的輸入法軟體的時候，請務必移除這個版本更新機制，避免您的輸入法軟體誤用 OpenVanilla 的版本更新機制。請參考 `UpdateChecker` 的相關程式碼。\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenvanilla%2Fopenvanilla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenvanilla%2Fopenvanilla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenvanilla%2Fopenvanilla/lists"}