diff --git a/docs/add-ons/socd-selection-slider.mdx b/docs/add-ons/socd-selection-slider.mdx index 08c4eba..cd1b720 100644 --- a/docs/add-ons/socd-selection-slider.mdx +++ b/docs/add-ons/socd-selection-slider.mdx @@ -24,7 +24,7 @@ The pin(s) are now configured on the [GPIO Pin Mapping page](../web-configurator - [Up Priority SOCD Cleaning](../hotkeys.mdx#socd-up-priority) - [Neutral SOCD Cleaning](../hotkeys.mdx#socd-neutral) - [Last Win SOCD Cleaning](../hotkeys.mdx#socd-last-win) -- [First Wins SOCD Cleaning](../hotkeys.mdx#socd-first-wins) +- [First Wins SOCD Cleaning](../hotkeys.mdx#socd-first-win) - [SOCD Cleaning Off](../hotkeys.mdx#socd-cleaning-off) ::: @@ -33,7 +33,7 @@ The pin(s) are now configured on the [GPIO Pin Mapping page](../web-configurator - [Up Priority](../hotkeys.mdx#socd-up-priority) - [Neutral](../hotkeys.mdx#socd-neutral) - [Last Win](../hotkeys.mdx#socd-last-win) - - [First Wins](../hotkeys.mdx#socd-first-wins) + - [First Wins](../hotkeys.mdx#socd-first-win) - [SOCD Cleaning Off](../hotkeys.mdx#socd-cleaning-off) ## Hardware diff --git a/docs/web-configurator/menu-pages/02-gpio-pin-mapping.mdx b/docs/web-configurator/menu-pages/02-gpio-pin-mapping.mdx index e49282f..9530035 100644 --- a/docs/web-configurator/menu-pages/02-gpio-pin-mapping.mdx +++ b/docs/web-configurator/menu-pages/02-gpio-pin-mapping.mdx @@ -21,7 +21,7 @@ The following options are available for assignment to each GPIO Pin. - [Up Priority SOCD Cleaning](../../hotkeys.mdx#socd-up-priority) - [Neutral SOCD Cleaning](../../hotkeys.mdx#socd-neutral) - [Last Win SOCD Cleaning](../../hotkeys.mdx#socd-last-win) -- [First Wins SOCD Cleaning](../../hotkeys.mdx#socd-first-wins) +- [First Wins SOCD Cleaning](../../hotkeys.mdx#socd-first-win) - [SOCD Cleaning Off](../../hotkeys.mdx#socd-cleaning-off) - [Turbo](../../add-ons/turbo.mdx) - [Macro](./09-macros.mdx) diff --git a/docs/web-configurator/menu-pages/07-display-configuration.mdx b/docs/web-configurator/menu-pages/07-display-configuration.mdx index 6ccb25a..b71d66b 100644 --- a/docs/web-configurator/menu-pages/07-display-configuration.mdx +++ b/docs/web-configurator/menu-pages/07-display-configuration.mdx @@ -125,7 +125,7 @@ Going from left to right, the display elements are - `SOCD-U` - [SOCD Up Priority](../../hotkeys.mdx#socd-up-priority) - `SOCD-N` - [SOCD Neutral](../../hotkeys.mdx#socd-neutral) - `SOCD-L` - [SOCD Last Win](../../hotkeys.mdx#socd-last-win) - - `SOCD-F` - [SOCD First Wins](../../hotkeys.mdx#socd-first-wins) + - `SOCD-F` - [SOCD First Wins](../../hotkeys.mdx#socd-first-win) - `SOCD-X` - [SOCD Cleaning Off](../../hotkeys.mdx#socd-cleaning-off) - [Macros](./09-macros.mdx) - `M` will appear if Macros are enabled and this cannot be disabled. diff --git a/docusaurus.config.js b/docusaurus.config.js index 6c8c5f5..085019f 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -6,6 +6,12 @@ const darkCodeTheme = require("prism-react-renderer").themes.dracula; const releaseVersion = "0.7.12"; +const releaseLink = `GP2040-CE Releases`; +const announcementContent = { + en: `New Version Available! To get the v${releaseVersion} update, go to ${releaseLink}`, + zh: `新版本已发布!请前往 ${releaseLink} 获取 v${releaseVersion} 更新`, +}; + /** @type {import('@docusaurus/types').Config} */ const config = { title: "GP2040-CE", @@ -23,7 +29,7 @@ const config = { i18n: { defaultLocale: "en", - locales: ["en"], + locales: ['en', 'zh'], }, markdown: { mermaid: true, @@ -52,6 +58,7 @@ const config = { highlightSearchTermsOnTargetPage: true, docsRouteBasePath: "/", indexBlog: false, + language: ["en", "zh"], }, ], "@docusaurus/theme-mermaid", @@ -66,7 +73,7 @@ const config = { }, announcementBar: { id: "new_release", - content: `New Version Available! To get the v${releaseVersion} update, go to GP2040-CE Releases`, + content: announcementContent.en, backgroundColor: "#ec008c", textColor: "#FFFFFF", isCloseable: true, @@ -107,6 +114,10 @@ const config = { // position: "left", // dropdownActiveClassDisabled: true, // }, + { + type: 'localeDropdown', + position: 'right', + }, { "aria-label": "Discord Invite", className: "navbar-discord-link", @@ -180,4 +191,11 @@ const config = { ], }; -module.exports = config; +// Exported as a function: Docusaurus caches this module but re-invokes the function for each +// locale build, after setting DOCUSAURUS_CURRENT_LOCALE, so the banner can be localized. +module.exports = () => { + const locale = process.env.DOCUSAURUS_CURRENT_LOCALE; + config.themeConfig.announcementBar.content = + announcementContent[locale] ?? announcementContent.en; + return config; +}; diff --git a/i18n/zh/code.json b/i18n/zh/code.json new file mode 100644 index 0000000..488277d --- /dev/null +++ b/i18n/zh/code.json @@ -0,0 +1,1052 @@ +{ + "theme.ErrorPageContent.title": { + "message": "页面已崩溃。", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "回到顶部", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "历史博文", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "历史博文", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "博文列表分页导航", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "较新的博文", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "较旧的博文", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "博文分页导航", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "较新一篇", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "较旧一篇", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.tags.tagsPageLink": { + "message": "查看所有标签", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "切换浅色/暗黑模式(当前为{mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "暗黑模式", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "浅色模式", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "页面路径", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "{count} 个项目", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "文件选项卡", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "上一页", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "下一页", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "{count} 篇文档带有标签", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged}「{tagName}」", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "版本:{versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "此为 {siteTitle} {versionLabel} 版的文档,现已不再积极维护。", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "最新的文档请参阅 {latestVersionLink} ({versionLabel})。", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "最新版本", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "编辑此页", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "{heading}的直接链接", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": "于 {date} ", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": "由 {user} ", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "最后{byUser}{atDate}更新", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "选择版本", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.NotFound.title": { + "message": "找不到页面", + "description": "The title of the 404 page" + }, + "theme.tags.tagsListLabel": { + "message": "标签:", + "description": "The label alongside a tag list" + }, + "theme.admonition.caution": { + "message": "警告", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "危险", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "信息", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "备注", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "提示", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "注意", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "关闭", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "最近博文导航", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "复制成功", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "复制代码到剪贴板", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "复制", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "切换自动换行", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "展开侧边栏分类 '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "折叠侧边栏分类 '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.NavBar.navAriaLabel": { + "message": "主导航", + "description": "The ARIA label for the main navigation" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "选择语言", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.NotFound.p1": { + "message": "我们找不到您要找的页面。", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "请联系原始链接来源网站的所有者,并告知他们链接已损坏。", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "本页总览", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "阅读更多", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "阅读 {title} 的全文", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "阅读需 {readingTime} 分钟", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.breadcrumbs.home": { + "message": "主页面", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "收起侧边栏", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "收起侧边栏", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "文档侧边栏", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "关闭导航栏", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← 回到主菜单", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "切换导航栏", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "展开侧边栏", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "展开侧边栏", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.SearchBar.noResultsText": { + "message": "没有找到任何文档" + }, + "theme.SearchBar.seeAllOutsideContext": { + "message": "查看“{context}”以外的全部结果" + }, + "theme.SearchBar.searchInContext": { + "message": "查看“{context}”以内的全部结果" + }, + "theme.SearchBar.seeAll": { + "message": "查看全部结果" + }, + "theme.SearchBar.label": { + "message": "搜索", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "“{query}”的搜索结果", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "搜索文档", + "description": "The search page title for empty query" + }, + "theme.SearchPage.searchContext.everywhere": { + "message": "所有" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "共找到 {count} 篇文档", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.noResultsText": { + "message": "没有找到任何文档", + "description": "The paragraph for empty search result" + }, + "theme.blog.post.plurals": { + "message": "{count} 篇博文", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} 含有标签「{tagName}」", + "description": "The title of the page for a blog tag" + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View All Authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "未列出页", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "重试", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "跳到主要内容", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "标签", + "description": "The title of the tag list page" + }, + "GP2040.name": { + "message": "GP2040" + }, + "GP2040.Up": { + "message": "上" + }, + "GP2040.Down": { + "message": "下" + }, + "GP2040.Left": { + "message": "左" + }, + "GP2040.Right": { + "message": "右" + }, + "GP2040.B1": { + "message": "B1" + }, + "GP2040.B2": { + "message": "B2" + }, + "GP2040.B3": { + "message": "B3" + }, + "GP2040.B4": { + "message": "B4" + }, + "GP2040.L1": { + "message": "L1" + }, + "GP2040.R1": { + "message": "R1" + }, + "GP2040.L2": { + "message": "L2" + }, + "GP2040.R2": { + "message": "R2" + }, + "GP2040.S1": { + "message": "S1" + }, + "GP2040.S2": { + "message": "S2" + }, + "GP2040.L3": { + "message": "L3" + }, + "GP2040.R3": { + "message": "R3" + }, + "GP2040.A1": { + "message": "A1" + }, + "GP2040.A2": { + "message": "A2" + }, + "GP2040.Function": { + "message": "Function" + }, + "XInput.name": { + "message": "XInput" + }, + "XInput.Up": { + "message": "上" + }, + "XInput.Down": { + "message": "下" + }, + "XInput.Left": { + "message": "左" + }, + "XInput.Right": { + "message": "右" + }, + "XInput.B1": { + "message": "A" + }, + "XInput.B2": { + "message": "B" + }, + "XInput.B3": { + "message": "X" + }, + "XInput.B4": { + "message": "Y" + }, + "XInput.L1": { + "message": "LB" + }, + "XInput.R1": { + "message": "RB" + }, + "XInput.L2": { + "message": "LT" + }, + "XInput.R2": { + "message": "RT" + }, + "XInput.S1": { + "message": "Back" + }, + "XInput.S2": { + "message": "Start" + }, + "XInput.L3": { + "message": "LS" + }, + "XInput.R3": { + "message": "RS" + }, + "XInput.A1": { + "message": "Home" + }, + "XInput.A2": { + "message": "(A2)" + }, + "XInput.Function": { + "message": "Function" + }, + "DirectInput.name": { + "message": "DirectInput" + }, + "DirectInput.Up": { + "message": "上" + }, + "DirectInput.Down": { + "message": "下" + }, + "DirectInput.Left": { + "message": "左" + }, + "DirectInput.Right": { + "message": "右" + }, + "DirectInput.B1": { + "message": "2" + }, + "DirectInput.B2": { + "message": "3" + }, + "DirectInput.B3": { + "message": "1" + }, + "DirectInput.B4": { + "message": "4" + }, + "DirectInput.L1": { + "message": "5" + }, + "DirectInput.R1": { + "message": "6" + }, + "DirectInput.L2": { + "message": "7" + }, + "DirectInput.R2": { + "message": "8" + }, + "DirectInput.S1": { + "message": "9" + }, + "DirectInput.S2": { + "message": "10" + }, + "DirectInput.L3": { + "message": "11" + }, + "DirectInput.R3": { + "message": "12" + }, + "DirectInput.A1": { + "message": "13" + }, + "DirectInput.A2": { + "message": "14" + }, + "DirectInput.Function": { + "message": "Function" + }, + "NintendoSwitch.name": { + "message": "Nintendo Switch" + }, + "NintendoSwitch.Up": { + "message": "上" + }, + "NintendoSwitch.Down": { + "message": "下" + }, + "NintendoSwitch.Left": { + "message": "左" + }, + "NintendoSwitch.Right": { + "message": "右" + }, + "NintendoSwitch.B1": { + "message": "B" + }, + "NintendoSwitch.B2": { + "message": "A" + }, + "NintendoSwitch.B3": { + "message": "Y" + }, + "NintendoSwitch.B4": { + "message": "X" + }, + "NintendoSwitch.L1": { + "message": "L" + }, + "NintendoSwitch.R1": { + "message": "R" + }, + "NintendoSwitch.L2": { + "message": "ZL" + }, + "NintendoSwitch.R2": { + "message": "ZR" + }, + "NintendoSwitch.S1": { + "message": "减号" + }, + "NintendoSwitch.S2": { + "message": "加号" + }, + "NintendoSwitch.L3": { + "message": "LS" + }, + "NintendoSwitch.R3": { + "message": "RS" + }, + "NintendoSwitch.A1": { + "message": "Home" + }, + "NintendoSwitch.A2": { + "message": "截屏" + }, + "NintendoSwitch.Function": { + "message": "Function" + }, + "PS4.name": { + "message": "PS4" + }, + "PS4.Up": { + "message": "上" + }, + "PS4.Down": { + "message": "下" + }, + "PS4.Left": { + "message": "左" + }, + "PS4.Right": { + "message": "右" + }, + "PS4.B1": { + "message": "交叉" + }, + "PS4.B2": { + "message": "圆圈" + }, + "PS4.B3": { + "message": "四方" + }, + "PS4.B4": { + "message": "三角" + }, + "PS4.L1": { + "message": "L1" + }, + "PS4.R1": { + "message": "R1" + }, + "PS4.L2": { + "message": "L2" + }, + "PS4.R2": { + "message": "R2" + }, + "PS4.S1": { + "message": "分享" + }, + "PS4.S2": { + "message": "选项" + }, + "PS4.L3": { + "message": "L3" + }, + "PS4.R3": { + "message": "R3" + }, + "PS4.A1": { + "message": "PS" + }, + "PS4.A2": { + "message": "触摸板按下" + }, + "PS4.Function": { + "message": "Function" + }, + "PS3.name": { + "message": "PS3" + }, + "PS3.Up": { + "message": "上" + }, + "PS3.Down": { + "message": "下" + }, + "PS3.Left": { + "message": "左" + }, + "PS3.Right": { + "message": "右" + }, + "PS3.B1": { + "message": "交叉" + }, + "PS3.B2": { + "message": "圆圈" + }, + "PS3.B3": { + "message": "四方" + }, + "PS3.B4": { + "message": "三角" + }, + "PS3.L1": { + "message": "L1" + }, + "PS3.R1": { + "message": "R1" + }, + "PS3.L2": { + "message": "L2" + }, + "PS3.R2": { + "message": "R2" + }, + "PS3.S1": { + "message": "Select" + }, + "PS3.S2": { + "message": "Start" + }, + "PS3.L3": { + "message": "L3" + }, + "PS3.R3": { + "message": "R3" + }, + "PS3.A1": { + "message": "PS" + }, + "PS3.A2": { + "message": "(A2)" + }, + "PS3.Function": { + "message": "Function" + }, + "Arcade.name": { + "message": "Arcade" + }, + "Arcade.Up": { + "message": "上" + }, + "Arcade.Down": { + "message": "下" + }, + "Arcade.Left": { + "message": "左" + }, + "Arcade.Right": { + "message": "右" + }, + "Arcade.B1": { + "message": "K1" + }, + "Arcade.B2": { + "message": "K2" + }, + "Arcade.B3": { + "message": "P1" + }, + "Arcade.B4": { + "message": "P2" + }, + "Arcade.L1": { + "message": "P4" + }, + "Arcade.R1": { + "message": "P3" + }, + "Arcade.L2": { + "message": "K4" + }, + "Arcade.R2": { + "message": "K3" + }, + "Arcade.S1": { + "message": "Select" + }, + "Arcade.S2": { + "message": "Start" + }, + "Arcade.L3": { + "message": "LS" + }, + "Arcade.R3": { + "message": "RS" + }, + "Arcade.A1": { + "message": "Home" + }, + "Arcade.A2": { + "message": "(A2)" + }, + "Arcade.Function": { + "message": "Function" + }, + "downloads.link.download": { + "message": "下载", + "description": "Download link text" + }, + "downloads.link.pinout": { + "message": "引脚", + "description": "Pinout link text" + }, + "downloads.link.website": { + "message": "网站", + "description": "Website link text" + }, + "boards.microcontroller.pico.name": { + "message": "树莓派 Pico" + }, + "boards.microcontroller.pico.desc": { + "message": "树莓派 Pico 是基于树莓派 RP2040 微控制器的功能强大且低成本的开发板。此构建为 GP2040-CE 的参考实现。" + }, + "boards.microcontroller.pico_w.name": { + "message": "树莓派 Pico W" + }, + "boards.microcontroller.pico_w.desc": { + "message": "树莓派 Pico W 是基于树莓派 RP2040 微控制器的功能强大且低成本的开发板。" + }, + "boards.microcontroller.pico2.name": { + "message": "树莓派 Pico 2" + }, + "boards.microcontroller.pico2.desc": { + "message": "树莓派 Pico 2 是基于树莓派 RP2350 微控制器的功能强大且低成本的开发板。" + }, + "boards.microcontroller.kb2040.name": { + "message": "Adafruit KB2040" + }, + "boards.microcontroller.kb2040.desc": { + "message": "另一款采用 RP2040 的 Pro Micro 规格开发板,具有两个用于 USB 数据的额外引脚。该构建面向 DIY 游戏手柄改装。" + }, + "boards.microcontroller.liatris.name": { + "message": "Liatris" + }, + "boards.microcontroller.liatris.desc": { + "message": "由 {SplitKB} 提供的可直接替换 Pro Micro 的 RP2040 模块。" + }, + "boards.microcontroller.seeed_xiao.name": { + "message": "Seeed XAIO RP2040" + }, + "boards.microcontroller.seeed_xiao.desc": { + "message": "Seeed Studio 的 XIAO RP2040 是一款小型的 RP2040 开发板。" + }, + "boards.microcontroller.sparkfun_pm.name": { + "message": "SparkFun Pro Micro" + }, + "boards.microcontroller.sparkfun_pm.desc": { + "message": "一款 Pro Micro 规格的 RP2040 开发板。此构建可作为 Daemonbite Arcade Encoder 的直接替代。" + }, + "boards.microcontroller.waveshare_zero.name": { + "message": "Waveshare RP2040-Zero" + }, + "boards.microcontroller.waveshare_zero.desc": { + "message": "Waveshare RP2040-Zero 是一款小巧的开发板,具有包边引脚和 USB-C,适合在无需表面贴装组装的情况下用于定制 PCB。" + }, + "boards.community.arc.name": { + "message": "ARC 无障碍控制器" + }, + "boards.community.arc.desc": { + "message": "ARC 控制器是一款无障碍控制器。由 {TheTrain} 设计,借鉴了 {jfedor2} 的一些设计理念以及通用的无障碍控制器连接标准。" + }, + "boards.community.asi_lvl_abc.name": { + "message": "ASi LVL ABC" + }, + "boards.community.asi_lvl_abc.desc": { + "message": "ASi LVL ABC 是由 ASIndo 推出的一款紧凑型无摇杆控制器。" + }, + "boards.community.asi_lvl_wasd.name": { + "message": "ASi LVL WASD" + }, + "boards.community.asi_lvl_wasd.desc": { + "message": "ASi LVL WASD 是由 ASIndo 推出的一款紧凑型无摇杆控制器。" + }, + "boards.community.flatbox_rev4.name": { + "message": "Flatbox Rev 4" + }, + "boards.community.flatbox_rev4.desc": { + "message": "由 {jfedor2} 设计的无摇杆 PCB,采用嵌入式 RP2040 芯片。" + }, + "boards.community.flatbox_rev5.name": { + "message": "Flatbox Rev 5" + }, + "boards.community.flatbox_rev5.desc": { + "message": "由 {jfedor2} 设计的无摇杆 PCB,使用 Waveshare RP2040-Zero。" + }, + "boards.community.flatbox_rev5_southpaw.name": { + "message": "Flatbox Rev 5 Southpaw" + }, + "boards.community.flatbox_rev5_southpaw.desc": { + "message": "由 {SkylaHila} 制作的 Flatbox Rev 5 镜像版本。基于 {jfedor2} 的 Flatbox Rev 5。" + }, + "boards.community.flatbox_rev5_rgb.name": { + "message": "Flatbox Rev 5 RGB" + }, + "boards.community.flatbox_rev5_rgb.desc": { + "message": "由 {jfedor2} 和 {TheTrain} 设计的无摇杆 PCB,使用 Waveshare RP2040-Zero。" + }, + "boards.community.flatbox_rev5_passthrough.name": { + "message": "Flatbox Rev 5 USB Passthrough" + }, + "boards.community.flatbox_rev5_passthrough.desc": { + "message": "由 {jfedor2} 和 {TheTrain} 设计的无摇杆 PCB,使用 Waveshare RP2040-Zero。" + }, + "boards.community.keyboard_converter.name": { + "message": "GP2040-CE 键盘转换器" + }, + "boards.community.keyboard_converter.desc": { + "message": "GP2040-CE 键盘转换器盒子旨在作为 USB 主机设备,供 GP2040-CE 项目使用键盘。" + }, + "boards.community.granola.name": { + "message": "Granola Summit" + }, + "boards.community.granola.desc": { + "message": "用于 {granola} 的配置。PCB 和设计文件可在 {repo} 找到。" + }, + "boards.community.granola_beacon.name": { + "message": "Granola Beacon" + }, + "boards.community.granola_beacon.desc": { + "message": "适用于 {site} 的配置" + }, + "boards.community.haute42.name": { + "message": "Haute42 系列" + }, + "boards.community.haute42.desc": { + "message": "适用于 Haute42 系列的配置。Haute42 产品均兼容相同的配置文件,包含 Haute42 Pad 的多个系列型号。" + }, + "boards.community.hautepad_m_lite.name": { + "message": "HautePad M Lite" + }, + "boards.community.hautepad_m_lite.desc": { + "message": "适用于 {site} 的配置。HautePad M Lite 包含针对 M-Lite 的特殊外壳 RGB 代码。固件 uf2 会自动设置外壳 RGB 和模式以启用全部 LED。" + }, + "boards.community.hautepad_m_ultra.name": { + "message": "HautePad M Ultra" + }, + "boards.community.hautepad_m_ultra.desc": { + "message": "适用于 {site} 的配置。HautePad M Ultra 包含针对 M Ultra 的特殊外壳 RGB 代码。固件 uf2 会自动设置外壳 RGB 和模式以启用全部 LED。" + }, + "boards.community.hautepad_x_analog.name": { + "message": "HautePad X (Analog Configuration)" + }, + "boards.community.hautepad_x_analog.desc": { + "message": "适用于 {site} 的配置。带模拟附件的 HautePad X 系列需要特殊配置文件才能立即工作。" + }, + "boards.community.mavercade_rev1.name": { + "message": "Mavercade Rev1" + }, + "boards.community.mavercade_rev1.desc": { + "message": "适用于 {site} 的配置。这些版本使用 Waveshare RP2040-Zero 板。" + }, + "boards.community.mavercade_rev2.name": { + "message": "Mavercade Rev2" + }, + "boards.community.mavercade_rev2.desc": { + "message": "适用于 {site} 的配置。这些版本使用 Waveshare RP2040-Zero 板。" + }, + "boards.community.mavercade_rev3.name": { + "message": "Mavercade Rev3" + }, + "boards.community.mavercade_rev3.desc": { + "message": "适用于 {site} 的配置。这些版本使用 Waveshare RP2040-Zero 板。" + }, + "boards.community.mistercade_v2.name": { + "message": "MiSTercadeV2" + }, + "boards.community.mistercade_v2.desc": { + "message": "适用于 {site} 的配置。MiSTercade 是 MiSTer FPGA 的原始 JAMMA 扩展。" + }, + "boards.community.opencore0.name": { + "message": "Open Core0" + }, + "boards.community.opencore0.desc": { + "message": "由 {TheTrain} 设计的开源无摇杆控制器。" + }, + "boards.community.opencore0_wasd.name": { + "message": "Open Core0 WASD" + }, + "boards.community.opencore0_wasd.desc": { + "message": "由 {TheTrain} 设计的开源无摇杆 WASD 控制器。" + }, + "boards.community.osumgp.name": { + "message": "OSUMGP-RP2040" + }, + "boards.community.osumgp.desc": { + "message": "OSUMGP-RP2040:由 {NickGuyver} 制作的开源通用现代游戏手柄(RP2040 版本)。" + }, + "boards.community.pico_fighting.name": { + "message": "Pico Fighting Board" + }, + "boards.community.pico_fighting.desc": { + "message": "由 {FeralAI} 设计的街机编码器板,使用树莓派 Pico 或引脚等效的 RP2040 开发板。" + }, + "boards.community.pxp_gamepad.name": { + "message": "PXP-Gamepad" + }, + "boards.community.pxp_gamepad.desc": { + "message": "由 {MegaBitmap} 制作的 DIY 通用口袋游戏手柄,使用焊接在定制 PCB 上的 RP2040-Zero MCU。" + }, + "boards.community.reflex_encode_v1_2.name": { + "message": "Reflex Encode v1.2" + }, + "boards.community.reflex_encode_v1_2.desc": { + "message": "由 {MiSTerAddons} 设计并销售的街机编码器板,使用嵌入式 RP2040 芯片。" + }, + "boards.community.reflex_encode_v2.name": { + "message": "Reflex Encode v2.0" + }, + "boards.community.reflex_encode_v2.desc": { + "message": "由 MiSTerAddons 设计并销售的街机编码器板,使用嵌入式 RP2040 芯片。" + }, + "boards.community.reflex_ctrl_genesis6.name": { + "message": "Reflex CTRL Genesis 6" + }, + "boards.community.reflex_ctrl_genesis6.desc": { + "message": "Reflex 开源 PCB,用于 Sega Genesis 6 按钮控制器替换,由 MiSTerAddons 设计并销售,使用嵌入式 RP2040 芯片。" + }, + "boards.community.reflex_ctrl_nes.name": { + "message": "Reflex CTRL NES" + }, + "boards.community.reflex_ctrl_nes.desc": { + "message": "Reflex 开源 PCB,用于 NES 控制器替换,由 MiSTerAddons 设计并销售,使用嵌入式 RP2040 芯片。" + }, + "boards.community.reflex_ctrl_snes.name": { + "message": "Reflex CTRL SNES" + }, + "boards.community.reflex_ctrl_snes.desc": { + "message": "Reflex 开源 PCB,用于 SNES 控制器替换,由 MiSTerAddons 设计并销售,使用嵌入式 RP2040 芯片。" + }, + "boards.community.reflex_ctrl_saturn.name": { + "message": "Reflex CTRL Saturn" + }, + "boards.community.reflex_ctrl_saturn.desc": { + "message": "Reflex 开源 PCB,用于 Sega Saturn 控制器替换,由 MiSTerAddons 设计并销售,使用嵌入式 RP2040 芯片。" + }, + "boards.community.reflex_ctrl_vb.name": { + "message": "Reflex CTRL Virtual Boy" + }, + "boards.community.reflex_ctrl_vb.desc": { + "message": "Reflex 开源 PCB,用于 Virtual Boy 控制器替换,由 MiSTerAddons 设计并销售,使用嵌入式 RP2040 芯片。" + }, + "boards.community.rp2040_advanced_breakout.name": { + "message": "RP2040 Advanced Breakout" + }, + "boards.community.rp2040_advanced_breakout.desc": { + "message": "由 {TheTrain} 设计、使用嵌入式 RP2040 的街机编码器板,并且是 GP2040-CE 项目的官方板。" + }, + "boards.community.rp2040_passthrough.name": { + "message": "RP2040 Advanced Breakout (USB Passthrough)" + }, + "boards.community.rp2040_passthrough.desc": { + "message": "Open Stick 项目的官方 USB 透传板。更新版的 RP2040 Advanced Breakout Board,板上包含 USB 透传功能。" + }, + "boards.community.rp2040_mini_breakout.name": { + "message": "RP2040 Mini Breakout Board" + }, + "boards.community.rp2040_mini_breakout.desc": { + "message": "由 {TheTrain} 设计的精简版 RP2040 Advanced Breakout Board。" + }, + "boards.community.bentobox.name": { + "message": "ScrubTier BentoBox" + }, + "boards.community.bentobox.desc": { + "message": "适用于 {ScrubTier} 的配置。" + }, + "boards.community.sgf_devices.name": { + "message": "SGF Devices" + }, + "boards.community.sgf_devices.desc": { + "message": "SGF 无摇杆控制器的设计灵感来自 jfedor 的开源 Flatbox Rev4。" + }, + "boards.community.stress.name": { + "message": "Stress" + }, + "boards.community.stress.desc": { + "message": "由 {GroooveBob} 设计的小型便携式 PCB 控制器,使用 Waveshare RP-2040-Zero。" + }, + "boards.community.zero_rhythm.name": { + "message": "Zero Rhythm" + }, + "boards.community.zero_rhythm.desc": { + "message": "Zero Rhythm 是为 Nintendo Switch 上的 Theatrhythm 游戏设计的控制器。它支持节奏游戏和双摇杆游戏,采用双 WASD 布局。" + } +} diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current.json b/i18n/zh/docusaurus-plugin-content-docs-development/current.json new file mode 100644 index 0000000..9bbace2 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current.json @@ -0,0 +1,22 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.development.category.Firmware Development": { + "message": "固件开发", + "description": "The label for category Firmware Development in sidebar development" + }, + "sidebar.development.category.Build, Compile, Debug": { + "message": "构建、编译、调试", + "description": "The label for category Build, Compile, Debug in sidebar development" + }, + "sidebar.development.category.Add-ons": { + "message": "插件", + "description": "The label for category Add-ons in sidebar development" + }, + "sidebar.development.category.Documentation": { + "message": "文档", + "description": "The label for category Documentation in sidebar development" + } +} diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/add-on-basics.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/add-on-basics.mdx new file mode 100644 index 0000000..be0ac9f --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/add-on-basics.mdx @@ -0,0 +1,17 @@ +--- +title: 基础知识 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on the minimum requirements for a GP2040-CE add-on." +--- + +# 基础知识 + +## 一般流程 + +1. 在源文件中使用基于附加功能头文件中的 `#define` 宏的直接硬编码值完成核心附加功能。 +2. 确认基本附加功能后,在 `config.proto` 中创建必要的枚举,用于将附加选项保存到 protobuf,然后在 `config_utils.cpp` 中设置它们。 +3. 使用在 `config_utils.cpp` 中设置的值替换源文件中直接硬编码的 `#define` 宏值。 +4. 创建 Web 配置器页面、组件和接口,以操作和保存用户设置的值到 protobuf。 diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/add-on-core-functionality.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/add-on-core-functionality.mdx new file mode 100644 index 0000000..b77d6ad --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/add-on-core-functionality.mdx @@ -0,0 +1,205 @@ +--- +title: 核心功能 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on the minimum requirements for a GP2040-CE add-on to function. Note: This does not include web configuration functionality and saving post-compile options to protobuf." +--- + +# 核心功能 + +### CMAKE + +首先要确保 CMAKE 能够看到并添加你的附加组件源文件,链接你创建的任何库,并包含你为附加组件功能添加的头文件子文件夹。 + +```cpp +add_executable(${PROJECT_NAME} +... +src/addons/addon_name.h +... +) + +target_link_libraries(${PROJECT_NAME} +... +AdditionalLibraryName +... +) + +target_include_directories(${PROJECT_NAME} PUBLIC +... +headers/folder/subfolder +... +) +``` + +#### 附加组件 + +将所有必要文件包含到 `/CMakeLists.txt` + +1. 在 `add_executable(${PROJECT_NAME}` 下添加附加组件可执行文件(例如 `src/addons/addon_name.cpp`) + - 如果在 `src/addons/` 之外的文件夹中创建了任何用于操作附加组件的 .cpp 文件,它们也必须包含在 `add_executable(${PROJECT_NAME}` 下。 +2. 将任何附加组件头文件和 `/headers/addons` 之外的文件夹(例如 `/headers/folder/subfolder/addonHeader.h`)添加到 `target_include_directories(${PROJECT_NAME} PUBLIC` + +#### 附加库 + +1. 将库添加到 `CMakeLists.txt` +2. 将库添加到 `lib/CMakeLists.txt` +3. 创建 `lib/AdditionalLibrary/CMakeLists.txt` +4. 将必要的源文件和头文件添加到 `lib/AdditionalLibrary/` + +### 主程序 (gp2040.cpp) + +#### 添加附加组件包含 + +```cpp +#include "addons/addon_name.cpp" +``` + +#### 加载附加组件 + +```cpp +addons.LoadAddon(new AddonName(), CORE0_Input) +``` + +:::info CORE0_Input vs CORE1_Input + +- `CORE0_Input` 通常是输入或与输入相关的任务 +- `CORE1_Input` 主要是辅助输出过程(显示、RGB LED 等)和包含额外 USB 处理的输入。 + +::: + +### 头文件 + +需要在 `/headers/addons/ADDON_NAME.h` 中为附加组件创建一个头文件 + +```cpp +#ifndef ADDON_NAME_H +#define ADDON_NAME_H + +#include "gpaddon.h" +#include "GamepadEnums.h" +#include "BoardConfig.h" +#include "enums.pb.h" + +#ifndef ADDON_NAME_ENABLED +#define ADDON_NAME_ENABLED 0 +#endif + +#define ADDON_PIN -1 + +// IO 模块名称 +#define AddonName "Add-on Name" + +class AddonNameAddon : public GPAddon +{ +public: + virtual void bootProcess() {} + virtual bool available(); + virtual void setup(); + virtual void preprocess(); + virtual void process(); + virtual std::string name() { return AddonName; } + +private: + +}; + +``` + +### 源文件 + +需要在 `/src/addons/ADDON_NAME.cpp` 中为附加组件创建一个源文件。这将是附加组件功能的主要部分。 + +```cpp +#include "addons/ADDON_NAME.h" +#include "storagemanager.h" +#include "config.pb.h" + +bool AddonNameAddon::available() +{ + return Storage::getInstance().getAddonOptions().addonNameOptions.enabled; +} + +void AddonNameAddon::setup() +{ +} + +void AddonNameAddon::preprocess() +{ +} + +void AddonNameAddon::process() +{ +} +``` + +#### `available()` + +此函数在创建时调用一次,以确定附加组件是否会包含在处理循环中。通常会检查选项中附加组件的启用标志是否已切换,然后返回该布尔标志。可能还需要查看其他选项,但这取决于在打开附加组件之前需要了解的重要事项(例如,首先检查 GPIO 引脚是否正确设置)。 + +#### `setup()` + +如果 `available()` 返回 true,则此函数会调用一次,以设置主循环之前需要的任何对象/变量。在这里需要准备任何 GPIO 引脚分配或创建处理循环在调用 `preprocess()` 和 `process()` 时需要的对象。 + +#### `preprocess()` + +此函数在处理游戏手柄状态之前在 `GP2040::run()` 循环中调用。这是根据附加组件的预期功能更改和修改游戏手柄状态的地方。 + +#### `process()` + +此函数在处理游戏手柄状态之后在 `GP2040::run()` 或 `GP2040Aux::run()` 循环中调用。这是根据附加组件的预期功能更改和修改游戏手柄状态的地方。 + +### Protobuf + +:::warning + +除非绝对必要,否则不要重命名或重新排列 `config.proto` 和 `enums.proto` 中的枚举。这样做会破坏与以前版本固件的兼容性。如果需要更多枚举,只需追加新的枚举。 + +::: + +#### `config.proto` + +一旦使用直接硬编码的 `#define` 宏在 `addonName.h` 中使附加组件工作,就需要将选项添加到 `/proto/config.proto` 中,以便这些选项在 protobuf 中正确分配内存空间。通过这样做,可以稍后使用 Web 配置器和网络接口读取和写入保存到 protobuf 的值。 + +除了开发附加组件的特定选项之外,还需要为新的附加组件添加一个枚举到 `AddonOptions`。 + +```cpp +message AddOnNameOptions { + optional bool enabled = 1; + optional uint32 addonSetting = 2; +} + +message AddonOptions { + ... + optional AddonOptions addonNameOptions = XX; +} +``` + +#### `enums.proto` + +当变量可以取某些值时,使用枚举是有用的。它封装了特定组中的所有可能值。为了使用枚举,需要将这些枚举添加到 `proto/enums.proto` 中,以便在附加组件以及固件的其他部分中使用。 + +```cpp +enum AddonEnum +{ + options (nanopb_enumopt).long_names = false; + + ENUM_OPTION_1 = 0; + ENUM_OPTION_2 = 1; + ... +} +``` + +#### `configs_utils.cpp` + +- 将设置属性添加到 `src/configs_utils.cpp` + - 记得将所有属性添加到 `config.proto` + +```cpp +#include "addons/addon_name.h" + +// addonOptions.addonNameOptions +INIT_UNSET_PROPERTY(config.addonOptions.addonNameOptions, enabled, ADDON_NAME_ENABLED); + +``` \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/board-configuration.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/board-configuration.mdx new file mode 100644 index 0000000..17d4f79 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/board-configuration.mdx @@ -0,0 +1,79 @@ +--- +title: 板配置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on creating a board configuration for GP2040-CE Firmware" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + +# 板配置 + +:::note + +我们希望从编译时配置转向运行时配置。 + +::: + +构建 GP2040-CE 的板有两种简单的方法。您可以编辑现有的板定义,或者创建自己的定义。仓库的 **[configs](https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs)** 文件夹中包含了几个示例配置。本文档将概述如何设置新的构建配置。 + +## 板配置文件夹 + +[`configs`](https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs) 中的每个子文件夹包含一个独立的板配置,具体包括以下内容: + +| 名称 | 必须? | 描述 | +|------------------|--------|----------------------------------------------------------------------| +| `BoardConfig.h` | 是 | 用于为特定控制器/板构建 GP2040-CE 的配置文件。包含初始 GPIO 引脚映射、LED 配置等。 | +| `README.md` | 是 | 提供与此板配置相关的信息。新板配置的拉取请求必须包含此文件。必须包含主引脚映射配置。建议还包含到您仓库的链接和图片。 | +| `assets/` | 否 | 包含在 `README.md` 中的资产文件夹。构建过程不需要。 | +| `` | 否 | 以板命名的板定义文件,用于 Pico SDK 配置板特定的 SDK 功能。[Pico 示例](https://github.com/raspberrypi/pico-sdk/blob/master/src/boards/include/boards/pico.h) | + +### BoardConfig.h + +`BoardConfig.h` 文件中需要以下板选项: + +| 名称 | 描述 | +|--------------------|-----------------------------------------------| +| **BOARD_CONFIG_LABEL** | 您的板的名称。 | +| **GPIO_PIN_***X* | 您希望的动作的 GPIO 引脚。将 _`X`_ 替换为 GPIO 引脚编号,然后分配给 `GpioAction::` 动作。 | + +创建 `configs/NewBoard/BoardConfig.h` 并添加您的引脚配置和选项。以下是一个最低要求的 `BoardConfig.h` 文件示例: + +```cpp +// BoardConfig.h + +#ifndef PICO_BOARD_CONFIG_H_ +#define PICO_BOARD_CONFIG_H_ + +#include "enums.pb.h" +#include "class/hid/hid.h" + +#define BOARD_CONFIG_LABEL "New Board" + +// Main pin mapping Configuration +// // GP2040 | Xinput | Switch | PS3/4/5 | Dinput | Arcade | +#define GPIO_PIN_19 GpioAction::BUTTON_PRESS_UP // UP | UP | UP | UP | UP | UP | +#define GPIO_PIN_18 GpioAction::BUTTON_PRESS_DOWN // DOWN | DOWN | DOWN | DOWN | DOWN | DOWN | +#define GPIO_PIN_17 GpioAction::BUTTON_PRESS_RIGHT // RIGHT | RIGHT | RIGHT | RIGHT | RIGHT | RIGHT | +#define GPIO_PIN_16 GpioAction::BUTTON_PRESS_LEFT // LEFT | LEFT | LEFT | LEFT | LEFT | LEFT | +#define GPIO_PIN_08 GpioAction::BUTTON_PRESS_B1 // B1 | A | B | Cross | 2 | K1 | +#define GPIO_PIN_07 GpioAction::BUTTON_PRESS_B2 // B2 | B | A | Circle | 3 | K2 | +#define GPIO_PIN_06 GpioAction::BUTTON_PRESS_R2 // R2 | RT | ZR | R2 | 8 | K3 | +#define GPIO_PIN_05 GpioAction::BUTTON_PRESS_L2 // L2 | LT | ZL | L2 | 7 | K4 | +#define GPIO_PIN_12 GpioAction::BUTTON_PRESS_B3 // B3 | X | Y | Square | 1 | P1 | +#define GPIO_PIN_11 GpioAction::BUTTON_PRESS_B4 // B4 | Y | X | Triangle | 4 | P2 | +#define GPIO_PIN_10 GpioAction::BUTTON_PRESS_R1 // R1 | RB | R | R1 | 6 | P3 | +#define GPIO_PIN_09 GpioAction::BUTTON_PRESS_L1 // L1 | LB | L | L1 | 5 | P4 | +#define GPIO_PIN_15 GpioAction::BUTTON_PRESS_S1 // S1 | Back | Minus | Select | 9 | Coin | +#define GPIO_PIN_13 GpioAction::BUTTON_PRESS_S2 // S2 | Start | Plus | Start | 10 | Start | +#define GPIO_PIN_21 GpioAction::BUTTON_PRESS_L3 // L3 | LS | LS | L3 | 11 | LS | +#define GPIO_PIN_22 GpioAction::BUTTON_PRESS_R3 // R3 | RS | RS | R3 | 12 | RS | +#define GPIO_PIN_14 GpioAction::BUTTON_PRESS_A1 // A1 | Guide | Home | PS | 13 | ~ | +#define GPIO_PIN_20 GpioAction::BUTTON_PRESS_A2 // A2 | ~ | Capture | ~ | 14 | ~ | + +#endif +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/build-environment.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/build-environment.mdx new file mode 100644 index 0000000..75783c3 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/build-environment.mdx @@ -0,0 +1,328 @@ +--- +title: 搭建构建环境 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on setting up the build environment for GP2040-CE firmware development" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# 固件开发 + +GP2040-CE 是用 C++ 编写的,并设置为标准的 Pico SDK 项目。 + +参考 [树莓派 Pico 入门指南](https://rptl.io/pico-get-started)。 + +## 环境设置 + +以下内容大部分是复述上面链接的树莓派基金会 PDF。 + + + + +1. 下载并安装 [NodeJS](https://nodejs.org/en/download) +2. 下载并安装 [Python 3.x](https://www.python.org/downloads/windows/) + - 在安装过程中,勾选 **"Add python.exe to PATH"** + - 运行以下命令安装 virtualenv + ```console + pip install virtualenv + ``` +3. 下载并安装一个 git 客户端 [git for windows](https://gitforwindows.org/) 或 [GitHub Desktop](https://desktop.github.com/download/) +4. 下载并安装 [VS Code](https://code.visualstudio.com/Download) +5. 运行 VS Code + - 转到 **Extensions**,搜索并安装 **"Raspberry Pi Pico"** 插件 + - 转到插件的 **Settings**,将 **"Raspberry-pi-pico: Python3 Path"** 设置为你在步骤 2 中安装的版本的路径 +6. 重启 VS Code + - 选择 **Open Folder**,导航到你克隆了代码库的 gp2040-ce 路径 + - 确认提示 **"Do you want to import this project as a Raspberry Pi Pico project?"** 时 + - 选择 Pico SDK 版本 **"v2.1.1"** + - 在 CMake Tool 下勾选 **"Enable CMake-Tools extension integration"** +7. 测试构建项目 + - 进入 Cmake 并展开 **PROJECT OUTLINE** + - 点击 **Build All Projects** 并从 **Kits** 列表中选择 **Pico** + + + + +1. 安装最新的 [Arm GNU Toolchain](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads) +2. 安装最新版本的 [CMake](https://cmake.org/download/) +3. 安装 [Visual Studio Build tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022),或完整的 [Visual Studio Community Edition IDE](https://visualstudio.microsoft.com/downloads/#visual-studio-community-2022) + - 确保勾选“使用 C++ 进行桌面开发”工作负载 + - 从单个组件中选择最新的 Windows 10 或 Windows 11 SDK +4. 安装 [Python 3.10](https://www.python.org/downloads/windows/) + - 在安装末尾,有一个选项可以禁用最大文件路径长度。请选择此项。 +5. 安装 [Visual Studio Code](https://code.visualstudio.com/) - 可选 +6. 安装 git + - 将默认编辑器设置为 VIM 以外的任何东西,如 Visual Studio Code +7. 安装 [NodeJS](https://nodejs.org/en/download) 和 NPM +8. 将 Pico SDK 克隆到本地计算机 + + ```console + git clone https://github.com/raspberrypi/pico-sdk.git + cd pico-sdk + git submodule update --init + cd .. + ``` + +9. 从命令提示符克隆 GP2040-CE 到本地计算机 + + ```console + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + ``` + + + + +#### Ubuntu + +此设置假定了解 Linux 终端的使用。 + +1. 获取 SDK + + ```bash + cd ~/ + mkdir pico + cd pico + git clone https://github.com/raspberrypi/pico-sdk.git --branch master + cd pico-sdk + git submodule update --init + cd .. + ``` + +2. 安装工具链 + + ```bash + sudo apt update + sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential + ``` + + - 可能还需要安装 `libstdc++-arm-none-eabi-newlib` + +3. 安装 NodeJS 和 NPM + + ```bash + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ + sudo apt-get install -y nodejs + ``` + +4. 获取 GP2040-CE + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + +#### 树莓派 + +此设置脚本需要大约 2.5GB 的 SD 卡磁盘空间。 + +1. 下载设置脚本 + + ```bash + wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh + ``` + +2. 让脚本可执行并运行它。 + + ```bash + chmod +x pico_setup.sh + ``` + +3. 安装 NodeJS 和 NPM + + ```bash + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ + sudo apt-get install -y nodejs + ``` + +4. 重启你的 Pi + + ```bash + sudo reboot + ``` + +5. 获取 GP2040-CE + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + + + + +此设置假定了解 macOS 终端的使用。 +我们将使用 Homebrew 和 nvm(Node 版本管理器)来安装所需工具。 + +1. 安装 [Homebrew](https://brew.sh/) + +2. 使用 Homebrew 安装所需工具: + + ```bash + brew install cmake + brew install picotool + ``` + +3. 安装 [Node.js](https://nodejs.org/en/download) + +4. 克隆 Pico SDK: + + ```bash + cd ~/ + mkdir pico + cd pico + git clone https://github.com/raspberrypi/pico-sdk.git --branch master + cd pico-sdk + git submodule update --init + cd .. + ``` + +5. 获取 GP2040-CE: + + ```bash + git clone https://github.com/OpenStickCommunity/GP2040-CE.git + cd GP2040-CE + git submodule update --init + ``` + + + + +## 构建 + +### 环境变量 + +设置了一些新的环境变量来控制构建流程的各个部分。 + +| 名称 | 默认值 | 描述 | +| ------------------ | ------- | ------------------------------------------------------------------------------------------------------- | +| GP2040_BOARDCONFIG | Pico | 构建时使用的 boards.h 配置文件。 | +| SKIP_WEBBUILD | FALSE | 确定在 cmake 配置步骤中是否构建网页配置器。 | +| SKIP_SUBMODULES | FALSE | 确定在 cmake 配置步骤中是否自动运行子模块初始化命令。 | + +#### SDK 变量 + +我们利用了一些 SDK 变量来进行构建。 + +| 名称 | 默认值 | 描述 | +| ---------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| PICO_BOARD | pico | 这是 RP2040 芯片所属的嵌入式板。默认情况下,它假设是 Pico。此变量应与板配置文件夹中的 `` 文件匹配。 | + + + + +安装树莓派 Pico SDK 后,你应该有一个 "Pico-Visual Studio Code" 的快捷方式(使用 Windows 搜索)。这个快捷方式应该已经配置好,**允许你跳到步骤 7**。如果遇到编译问题,可以考虑按照这里的手动步骤进行。 + +确保设置 `PICO_SDK_PATH` 环境变量: + +1. 在 Windows 中搜索 "Edit environment variables for your account"。 +2. 在 "用户变量" 下,点击 "新建..."。 +3. 在出现的对话框中,输入 `PICO_SDK_PATH` 作为变量名。 +4. 点击 "浏览目录" 并导航到 `C:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk` 作为变量值。 +5. 创建另一个新变量。 +6. 输入 `GP2040_BOARDCONFIG` 作为变量名。 +7. 输入 `Pico`(或你编辑的配置文件夹的名称)作为变量值。 + +你也可以在 VSCode 中设置变量: + +1. 按 `Ctrl + ,` 打开设置。 +2. 使用搜索栏找到 "CMake"。 +3. 滚动直到看到 "CMake: Configure Environment"。 +4. 点击 "Add Item"。 +5. 键:`GP2040_BOARDCONFIG` +6. 值:`Pico`(或你的工作文件夹名称)。 + +当被提示时,为 "Select a kit for GP2040-CE" 选择 `GCC 10.3.1 ARM NONE EABI` + +在 VSCode 内: + +1. 点击 VSCode 左侧栏的 CMake 图标。 +2. 在 CMake 项目概览的右上角,你会看到三个图标。点击 "Configure All Projects" 图标(看起来像一个带箭头的页面)。 +3. 等待配置过程完成。如果进度不可见,点击 "Terminal" 菜单,然后 "New Terminal" 打开一个新的终端。新终端窗口将在底部打开,导航到 "Output" 标签。 +4. 点击 CMake 项目概览中的 "Build All Projects"。 +5. 文件应该在 GP2040-CE 文件夹中的新 "build" 文件夹里。 + + + + +从 GP2040-CE 文件夹开始。**从开发者 Powershell 或开发者命令提示符**: + +:::note + +设置环境变量后需要一个新的 Powershell 或命令提示符会话。 + +::: + +1. 确保你设置了 `PICO_SDK_PATH` 环境变量到你的 pico-sdk 文件夹路径。 +2. (可选)设置 `GP2040_BOARDCONFIG` 环境变量到你的板配置文件夹名称。 + + - 默认值是 `Pico` + +3. 创建构建目录,配置构建并执行构建。 + + ```console + mkdir build + cd build + cmake -G "NMake Makefiles" .. + nmake + ``` + +4. 你的 UF2 文件应该在构建目录中。 + + + + +从 GP2040-CE 文件夹开始 + +1. 确保你设置了 `PICO_SDK_PATH` 环境变量到你的 pico-sdk 文件夹路径。 +2. (可选)设置 `GP2040_BOARDCONFIG` 环境变量到你的板配置文件夹名称。 + - 默认值是 `Pico` +3. 创建构建目录,配置构建并执行构建。 + + ```bash + mkdir build + cd build + cmake .. + make + ``` + +4. 你的 UF2 文件应该在构建目录中。 + + + + +从 GP2040-CE 文件夹开始 + +1. 确保你设置了 `PICO_SDK_PATH` 环境变量到你的 pico-sdk 文件夹路径: + + ```bash + export PICO_SDK_PATH=~/pico/pico-sdk + ``` + +2. (可选)设置 `GP2040_BOARDCONFIG` 环境变量到你的板配置文件夹名称: + + ```bash + export GP2040_BOARDCONFIG=Pico + ``` + + - 默认值是 `Pico` + +3. 创建构建目录,配置构建并执行构建: + + ```bash + mkdir build + cd build + cmake .. + make + ``` + +4. 你的 UF2 文件应该在构建目录中。 + + + diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/compile-firmware.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/compile-firmware.mdx new file mode 100644 index 0000000..2ac8b29 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/compile-firmware.mdx @@ -0,0 +1,113 @@ +--- +title: 编译固件 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on creating a board configuration for GP2040-CE Firmware" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# 构建 + +## 环境变量 + +设置了一些新的环境变量来控制构建流程的各个部分。 + +| 名称 | 默认值 | 描述 | +| ------------------ | ------- | ------------------------------------------------------------------------------------------------- | +| GP2040_BOARDCONFIG | Pico | 用于构建的 `boards.h` 配置文件。 | +| SKIP_WEBBUILD | FALSE | 是否在 CMake 配置步骤中构建 web 配置器。 | +| SKIP_SUBMODULES | FALSE | 是否在 CMake 配置步骤中自动运行子模块初始化命令。 | + +### SDK 变量 + +我们利用了几个 SDK 变量来进行构建。 + +| 名称 | 默认值 | 描述 | +| ---------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| PICO_BOARD | pico | RP2040 芯片所属的嵌入式板。默认情况下,它假设为 Pico。此变量应与板配置文件夹中的 `` 文件匹配。 | + + + + +安装 Raspberry Pi Pico SDK 后,您应该有一个 "Pico-Visual Studio Code" 的快捷方式(可以通过 Windows 搜索找到)。这个快捷方式应该已经配置好,**允许您直接跳到步骤 7**。如果遇到编译问题,可以考虑按照这里的手动步骤进行操作。 + +确保设置 `PICO_SDK_PATH` 环境变量: + +1. 在 Windows 中搜索 "Edit environment variables for your account"。 +2. 在 "用户变量" 下点击 "新建..."。 +3. 在出现的对话框中,输入 `PICO_SDK_PATH` 作为变量名。 +4. 点击 "浏览目录" 并导航到 `C:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk` 作为变量值。 +5. 创建另一个新变量。 +6. 输入 `GP2040_BOARDCONFIG` 作为变量名。 +7. 输入 `Pico`(或您编辑的配置文件夹名称)作为变量值。 + +您也可以在 VSCode 中设置变量: + +1. 按 `Ctrl + ,` 打开设置。 +2. 使用搜索栏查找 "CMake"。 +3. 滚动直到看到 "CMake: Configure Environment"。 +4. 点击 "Add Item"。 +5. 键:`GP2040_BOARDCONFIG` +6. 值:`Pico`(或您的工作文件夹名称)。 + +当被提示时,选择 `GCC 10.3.1 ARM NONE EABI` 作为 "Select a kit for GP2040-CE" + +在 VSCode 中: + +1. 点击 VSCode 左侧栏的 CMake 图标。 +2. 您会看到 CMake 项目大纲右上角的三个图标。点击 "Configure All Projects" 图标(看起来像一个带箭头的页面)。 +3. 等待配置过程完成。如果进度不可见,点击 "终端" 菜单,然后选择 "新终端" 打开一个新终端窗口。在底部导航到 "输出" 选项卡。 +4. 在 CMake 项目大纲中点击 "Build All Projects"。 +5. 文件应该在 GP2040-CE 文件夹内的新文件夹 "build" 中。 + + + + +从 GP2040-CE 文件夹开始。**从 Developer Powershell 或 Developer Command Command Prompt**: + +:::note + +设置环境变量后需要启动新的 Powershell 或命令提示符会话。 + +::: + +1. 确保您已将 `PICO_SDK_PATH` 环境变量设置为 pico-sdk 文件夹的路径。 +2. (可选)设置 `GP2040_BOARDCONFIG` 环境变量为您的板配置文件夹名称。 + - 默认值为 `Pico` + +3. 创建构建目录,配置构建并执行构建。 + + ```console + mkdir build + cd build + cmake -G "NMake Makefiles" .. + nmake + ``` + +4. 您的 UF2 文件应该在构建目录中。 + + + + +从 GP2040-CE 文件夹开始 + +1. 确保您已将 `PICO_SDK_PATH` 环境变量设置为 pico-sdk 文件夹的路径。 +2. (可选)设置 `GP2040_BOARDCONFIG` 环境变量为您的板配置文件夹名称。 + - 默认值为 `Pico` +3. 创建构建目录,配置构建并执行构建。 + + ```bash + mkdir build + cd build + cmake .. + make + ``` + +4. 您的 UF2 文件应该在构建目录中。 + + + \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/contribution-guide.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/contribution-guide.mdx new file mode 100644 index 0000000..9c381b6 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/contribution-guide.mdx @@ -0,0 +1,59 @@ +--- +title: 如何贡献 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to contribute to the GP2040-CE Project" +--- + +# 如何贡献 + +感谢您抽出时间阅读本文并为项目做出贡献! + +第三方贡献帮助我们发展和改进 GP2040-CE。我们希望让拉取请求和贡献过程对贡献者和维护者都变得有用和简单。 + +为此,我们制定了一些指南,帮助您的拉取请求在无需重大更改的情况下被接受。 + +## 项目概览 + +GP2040-CE 主要用 C/C++ 编写,Web 配置器的大部分是用 JavaScript 在 React 框架中编写的。 + +## 如何进行贡献? + +从未进行过开源贡献?想知道在 GP2040-CE 中如何进行贡献?以下是快速概述! + +1. 注册一个 GitHub 账户。 +2. 找到您感兴趣的问题或想要添加的功能。 +3. 将与问题相关的仓库 fork 到您的 GitHub 账户。这意味着您将在 `your-GitHub-username/GP2040-CE` 下拥有一个仓库副本。 +4. 使用 `git clone https://github.com/your-GitHub-username/GP2040-CE` 将仓库克隆到您的本地机器。 +5. 如果您正在开发新功能,请考虑打开一个 issue,与我们讨论您将要进行的工作。 +6. 使用 `git checkout -b branch-name-here` 为您的修复创建一个新分支。 +7. 针对您要解决的问题或要添加的功能进行适当更改。 +8. 使用 `git add insert-paths-of-changed-files-here` 将更改文件的内容添加到 Git 用于管理项目状态的“快照”(也称为索引)。 +9. 使用 `git commit -m "Insert a short message of the changes made here"` 将索引内容与描述性消息一起存储。 +10. 使用 `git push origin branch-name-here` 将更改推送到您在 GitHub 上的仓库。 +11. 向 [OpenStickCommunity/GP2040-CE](https://github.com/OpenStickCommunity/GP2040-CE) 提交一个拉取请求。 +12. 用对所做更改的简短描述和与更改相关的问题或错误编号为拉取请求命名。例如,您可以这样命名问题:“Added more log outputting to resolve #4352”。 +13. 在拉取请求的描述中,解释您所做的更改、您认为存在的任何问题以及您对维护者的任何问题。如果您的拉取请求不完美(没有拉取请求是完美的),也没关系,审阅者会帮助您修复任何问题并改进它! +14. 等待维护者审阅拉取请求。 +15. 如果审阅的维护者建议进行更改,请对拉取请求进行更改。 +16. 在您的拉取请求合并后庆祝成功! + +## 开发环境 + +您可以在[此处](/development/build-environment)找到有关如何为 Windows 或 Linux 设置开发环境的详细指南。也有关于如何[编译固件](/development/compile-firmware)和如何[调试](/development/debugging)的指南。 + +## 编码约定 + +## 一般指南 + +- **在您贡献之前**:请确保您的分叉与上游 `GP2040-CE` 仓库保持同步。这将有助于最小化在本地编译时可能不会发生的 CI 失败。 +- 将 PR 分成逻辑单元。例如,不要提交一个 PR 涵盖两个单独的功能,而是为每个功能提交一个单独的 PR。 +- 在提交之前使用 `git diff --check` 检查不必要的空白。 +- 确保您的代码更改实际可以编译。 +- 确保提交消息本身是可理解的。您应该在第一行放置简短描述(不超过 70 个字符),第二行应为空,如果需要,在第 3 行及以后详细描述您的提交。 + +## 文档 + +文档是开始为 GP2040-CE 贡献的最简单方法之一。找到文档错误或不完整的地方并修复它们是很容易的!我们也非常需要有人来编辑我们的文档,所以如果您有编辑技能但不确定从哪里或如何入手,请[联系我们寻求帮助](/getting-help-support)! diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/debugging.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/debugging.mdx new file mode 100644 index 0000000..7fdb1e9 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/debugging.mdx @@ -0,0 +1,63 @@ +--- +title: 调试 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Documentation on how to set up a GP2040-CE device for debugging while developing firmware features and add-ons." +--- + +## 调试 + +调试在固件开发中至关重要,因为它帮助识别和修复错误,确保代码正确运行。调试可以检测语法、逻辑和运行时问题,这些问题可能导致程序崩溃或行为异常。RP2040与各种外设(例如GPIO、I2C、SPI)交互,调试确保这些交互正常工作,特别是在处理时间敏感操作时。 + +通过尽早解决问题,调试有助于构建更可靠和高效的代码,节省时间并防止后期出现复杂问题。 + +## UART (TTL) 到 USB 串口监视器 + +要设置RP2040微控制器在GPIO 00和01上通过USB进行UART通信,请按照以下步骤进行: + +### 引脚配置 + +RP2040有两个UART外设(UART0和UART1)。要使用GPIO 00和01进行UART通信,请确保在所有GPIO分配中,包括I2C附加组件、显示器、USB主机分配或按钮分配中保持这些引脚空闲: + +- **GPIO 00:** UART0 TX(发送) +- **GPIO 01:** UART0 RX(接收) + +### 电路设置 + +![USB - UART 连接](https://hackster.imgix.net/uploads/attachments/1284607/image_eiE7x8afXR.png?auto=compress%2Cformat&w=740&h=555&fit=max) + +- 将USB主机连接到您的PC作为控制器。 +- 将GPIO 00 (TX)连接到USB到UART串口模块的RX引脚。 +- 将GPIO 01 (RX)连接到USB到UART串口模块的TX引脚。 +- 确保RP2040的地线(GND)连接到USB到UART串口模块的地线以建立共同参考。 + +:::tip +如果串口监视器中没有消息出现,请尝试反转引脚连接。 +::: + +### 软件配置 + +在固件中,您需要: + +1. 在您的功能或附加组件的`process()`函数中添加`stdio_init_all();`。 +2. 在可执行文件中包含`iostream` C++库(例如`file.cpp`)。 +3. 使用`printf()`输出到您选择的串口监视器。 + +有关串口消息格式,请参阅[printf文档](https://cplusplus.com/reference/cstdio/printf/)。 + +### 通过串口监视器读取消息 + +有多种串口监视器应用程序可以读取打印消息,包括: + +- [PuTTY](https://www.putty.org/)(Windows或Linux) +- [iTerm2](https://iterm2.com/)(MacOS) +- [picocom](https://github.com/npat-efault/picocom)(Linux) +- [Serial Monitor](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-serial-monitor) VS Code 扩展(Windows, MacOS, Linux) +- [Windows Terminal](https://github.com/microsoft/terminal)(Windows) +- 默认终端应用程序(Linux或MacOS) + +:::note 波特率 +默认波特率设置为115200Hz。 +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-preview.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-preview.mdx new file mode 100644 index 0000000..7913640 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-preview.mdx @@ -0,0 +1,67 @@ +--- +title: 文档预览 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to preview documentation locally" +--- + +# 文档预览 + +在撰写和开发文档时,您会希望在本地构建,以便在不更新主仓库的情况下查看更改。然而,当您准备好进行拉取请求测试时,请进行生产编译,因为这将构建用于实时网站的文件,并揭示在本地构建时可能不存在的问题。 + +## 清除本地构建 + +此过程将清除 docs 文件夹中生成的资产、缓存和构建工件。建议在本地构建或生产编译时遇到 Docusaurus 网站问题时进行清除。 + +1. 在 GP2040-CE 项目的根目录中打开终端 +2. 运行以下命令 + +```shell +cd site/ +npm run docusaurus clear +``` + +## 本地构建 + +这将在本地使用 [Webpack Dev Server](https://webpack.js.org/configuration/dev-server/) 构建并服务您的网站。 + +:::note + +在开发服务器运行时对文档进行的更改将在保存时更新实时网站。 + +::: + +1. 在 GP2040-CE 项目的根目录中打开终端 +2. 运行以下命令 + +```shell +cd site/ +npm install +npm start +``` + +3. 在默认的网络浏览器中,`http://localhost:port` 应自动打开并允许您预览网站。 + +## 生产预览 + +这将为生产编译您的网站,创建一个用于静态网站的构建文件夹。 + +:::note + +在开发服务器运行时对文档进行的更改将**不会**在保存时更新实时网站。 + +::: + +1. 在 GP2040-CE 项目的根目录中打开终端 +2. 运行以下命令 + +```shell +cd site/ +npm install +npm run build +npm run serve +``` + +3. 在默认的网络浏览器中,`http://localhost:port` 应自动打开并允许您预览网站。 diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-style-guide.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-style-guide.mdx new file mode 100644 index 0000000..fd480ba --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-style-guide.mdx @@ -0,0 +1,547 @@ +--- +title: 样式指南 +# tags: +# - +pagination_next: null +pagination_prev: null +toc_max_heading_level: 4 +description: "A style guide on how to write documentation for GP2040-CE using Docusaurus" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# 样式指南 + +GP2040-CE 欢迎您为我们的文档做出贡献。本文件描述了创建网站内容的可用选项,以及指南和惯例。 + +## Markdown + +本网站使用 Docusaurus 版本 2。Docusaurus 使用 MDX 作为解析引擎,可以解析标准的 Markdown 语法并在文档中渲染 React 组件。 + +[Docusaurus Markdown](https://docusaurus.io/docs/markdown-features) 支持 [基本 Markdown 语法](https://www.markdownguide.org/basic-syntax) 和大多数 [扩展语法](https://www.markdownguide.org/extended-syntax)。您可以在 [这里](https://www.markdownguide.org/tools/docusaurus/) 查看支持的功能。 + +## Frontmatter + +在每个文档页面的顶部,您需要包含以下内容: + +| 变量 | 描述 | +| :------------------------------- | ------------------------------------------------------------------------------------------------ | +| `title` | 页面主要标题。此值将出现在页面的左侧导航树中。 | +| `pagination_prev` (可选) | 您希望“上一页”分页链接到的文档 ID。使用 null 来禁用此页面的“上一页”显示。 | +| `pagination_next` (可选) | 您希望“下一页”分页链接到的文档 ID。使用 null 来禁用此页面的“下一页”显示。 | +| `toc_min_heading_level` (可选) | 目录中显示的最低标题级别。必须在 2 到 6 之间,并小于或等于最大值。 | +| `toc_max_heading_level` (可选) | 目录中显示的最高标题级别。必须在 2 到 6 之间。 | +| `description` | 当页面在 Google 搜索结果中引用时显示的内容,以及当页面嵌入到其他地方时显示的内容。 | +| `keywords` (可选) | 有助于为 SEO 目的对页面进行分类的术语列表。 | + +以上字段对于大多数文档页面来说已经足够。然而,其他 Frontmatter 字段可以在 Docusaurus [plugin-content-docs 文档](https://docusaurus.io/docs/2.x/api/plugins/@docusaurus/plugin-content-docs#markdown-front-matter)中找到。 + +Frontmatter 在文档开头看起来像这样: + +``` +--- +title: Documentation Style Guide +pagination_next: null +pagination_prev: null +description: "A style guide on how to write documentation for GP2040-CE using Docusaurus" +--- +``` + +## 介绍 + +文档的第一段应设置用户对页面内容的期望。描述对用户的主要好处,但不要包含链接。 + +## 标题 + +出于可访问性和 SEO 的原因,H4 标题不能在 H3 标题之外,H3 标题不能在 H2 标题之外。 + +- 文档中不应使用 H1 标题,因为标题会自动生成为 H1。 +- H2 标题用于 SEO,因此请确保它们简洁地代表用户在该部分页面中会找到的内容。 +- H3 标题包含在页面右侧的目录中,因此请确保标题描述了用户可能希望直接导航到的内容。 +- H4 标题用于强调页面子部分内的内容;如果需要,它们可以比其他标题更长,因为它们不包含在目录中。 + +Markdown 代码: + +``` +## H2 Header + +### H3 Header + +#### H4 Header +``` + +## 内容 + +### 换行 + +即使有换行符,只要没有空行,所有单词都会在同一段中渲染。因此,最好每行少于 120 个字符,以提高可读性。 + +如果文本包含在 Markdown 表格单元格中,则需要使用 `
`。 + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +This +will +all +be +on +one +line. + +The empty line above creates a new paragraph. + +This forces a soft return
+rather than creating a new paragraph + +| Column1 | Column2 | +| ------- | ------------------------------------- | +| Row 1 | - Line 1
- Line 2
- Line3 | +``` + +
+ +**显示** + + + +This +will +all +be +on +one +line. + +The empty line above creates a new paragraph. + +This forces a soft return
+rather than creating a new paragraph + +| Column1 | Column2 | +| ------- | ------------------------------------- | +| Row 1 | - Line 1
- Line 2
- Line3 | + +
+ +### 链接 + +#### 页面和资源 + +链接到页面或资源时,您需要使用相对链接来导航到所需的页面和资源。 + +:::caution + +将文件移动到不同的子目录时,请确保更新该页面内对其他页面/资源的引用,以及任何引用移动页面的其他页面。如果不这样做,将导致链接断裂和构建过程中的错误。 + +::: + + + + + + + + + + + + + + +如果 Markdown 语法不够,可以在 JSX 图像标签中使用内联 CommonJS require 或 ES import 语法和 JSX 图像标签。有关更多信息,请参阅 [Docusaurus 文档](https://docusaurus.io/docs/2.x/markdown-features/assets#images)。 + +#### 组件 + +链接到组件时,您需要使用绝对链接来导航到所需的页面和资源。通过在任何子目录中的任何页面中使用 `@site`,它将定位到 repo 的根目录(即“/”)。 + +:::caution + +将组件移动到不同的子目录时,请确保更新任何使用该组件的页面。如果不这样做,可能会导致页面断裂和构建过程中的错误,或者可能无法呈现。 + +::: + +```md +import Component from "@site/src/components/ComponentName.tsx"; +``` + +### 热键组合 + +当您需要向用户展示单个输入或输入组合时,您需要在屏幕顶部包含一个标签选择器,并使用 Hotkey 组件来显示输入或输入组合。通过使用此组件,用户将能够选择相关的输入模式标签来呈现标签。 + +要使用热键组合,您需要在 [Frontmatter](#frontmatter) 下方但在 [Introduction](#介绍) 上方导入两个组件: + +```typescript +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +``` + +在页面的顶部标题下方,包含此标签选择器以允许用户选择热键组合标签的输入模式。 + + + + + + + + + + + + + + +### 选项卡 + +当示例、说明或其他文本在不同上下文中会有所不同时,选项卡是一个很好的选择。本网站上选项卡的主要用途是展示在多种上下文中相似的内容。 + +:::tip +当页面包含多个选项卡集时,使用 `groupId`,以便用户选择特定选项卡时,所有具有该 ID 的选项卡将切换到选定的选项卡。 +::: + +要使用选项卡,您需要在 [Frontmatter](#frontmatter) 下方但在 [Introduction](#介绍) 上方导入两个特殊方法: + +```typescript +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +``` + +然后按如下方式使用选项卡: + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown + + + This would include information or examples for context 1. + + + This would include information or examples for context 2. + + +``` + +
+ +**显示** + + + + + + This would include information or examples for context 1. + + + This would include information or examples for context 2. + + + +
+ +### 内联代码 + +要在句子中强调单个类、方法名称、变量、方向、文件名等,请在名称周围加上单引号。 + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +This comment refers to the `GP2040-CE_X.X.X_Pico.uf2` file. +``` + +
+ +**显示** + + + +This comment refers to the `GP2040-CE_X.X.X_Pico.uf2` file. + +
+ +### 代码块 + +显示代码或 Markdown 文本以供复制的最佳方式是使用代码块。Markdown 将对每种语言进行不同的高亮显示,因此指定您使用的语言很有帮助,并且最好在代码块中包含一个标题。 + + + + + + + + + + + + +
+ +**Markdown** + + + + ```md title="Example Markdown Page" + --- + title: TITLE + # tags: + # - + pagination_next: null + pagination_prev: null + description: "PAGE DESCRIPTION" + --- + + # Document Title + + CONTENT + ``` + +
+ +**显示** + + + +```md title="Example Markdown Page" +--- +title: TITLE +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Document Title + +CONTENT +``` + +
+ +### 提示框 + +有四种类型的 [Docusaurus 提示框](https://docusaurus.io/docs/markdown-features/admonitions): + +- Note - 相关信息。 +- Tip - 用户应该这样做。 +- Caution - 用户应该注意这一点。 +- Warning - 用户可能会做一些危险的事情。 + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +:::note + +给您的相关信息。 + +::: + +:::tip + +您应该这样做。 + +::: + +:::caution + +您可能需要注意这些事。 + +::: + +:::warning + +您可能会进行危险操作。 + +::: +``` + +
+ +**显示** + + + +:::note + +给您的相关信息。 + +::: + +:::tip + +您应该这样做。 + +::: + +:::caution + +您可能需要注意这些事。 + +::: + +:::warning + +您可能会进行危险操作。 + +::: + +
+ +您还可以通过在提示框类型旁边包含文本来更改提示框的文本。 + + + + + + + + + + + + +
+ +**Markdown** + + + +```markdown +:::note 这是一个标记 + +给您的相关信息。 + +::: +``` + +
+ +**显示** + + + +:::note 这是一个标记 + +给您的相关信息。 + +::: + +
+ +## 向仓库添加图像 + +所有图像文件应包含在 `docs/assets` 目录中,在一个与内容类型对应的子目录中。 + +| 子目录 | 内容 | +| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `boards` | RP2040 板的图像(商业可用或社区设计),将被引用在 `src/config/boards.tsx` 中以包含在下载页面中 | +| `images` | 文档的通用图像类别
- 附加组件:文件名以 `gpc-add-ons-` 开头
- Web 配置页面:文件名以 `gpc-` 开头 | +| `wiring` | 包含在 `docs/controller-build/wiring.mdx` 中的微控制器板引脚图像 | \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-update-downloads.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-update-downloads.mdx new file mode 100644 index 0000000..0e006dc --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/documentation-update-downloads.mdx @@ -0,0 +1,46 @@ +--- +title: 更新下载页面 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to update the Downloads Page to add a new microcontroller board or controller" +--- + +# 更新下载页面 + +要将微控制器板或设备添加到 [下载](/downloads) 页面,需要更新 `src/config/boards.tsx` 文件。所需信息取决于您是添加微控制器板还是控制器。 + +| 键 | 值 | +| ------------ | ---------------------------------------------------------------------------------------------------------------- | +| `name` | 将在下载页面列出的设备名称 | +| `configName` | 用于生成 .uf2 文件并用于生成固件链接的设备名称 | +| `pinout` | 设备引脚图的链接 | +| `website` | 包含设备信息的网站链接 | +| `image` | 设备使用的资源的绝对链接,仅更改 `BoardName` 以匹配 `static/img/boards/` 中的文件名 | +| `supported` | (仅限微控制器板)设备当前是否被项目支持 | +| `category` | (仅限游戏控制器)遵循以下约定的类别分类 | +| `desc` | 设备和制造商的简短描述,将显示在下载页面上 | + +## 微控制器板 + +微控制器板的模板可以在 [模板 - 微控制器板](./templates.mdx#微控制器板) 找到。 + +要将微控制器板添加到下载列表中,请填写模板中的所有信息,并将其添加到数组 `boards['Microcontroller Boards']` 中。板列出的顺序决定了它们在页面上的显示顺序,因此请注意以下板的顺序。 + +- Raspberry Pi Pico +- Raspberry Pi Pico W +- 其他微控制器板按字母顺序排列 + +## 游戏控制器 + +游戏控制器的模板可以在 [模板 - 游戏控制器](./templates.mdx#游戏控制器) 找到。 + +要将游戏控制器添加到下载列表中,请填写模板中的所有信息,并将其添加到数组 `boards['Controllers']` 中。此数组中游戏控制器的顺序应按字母顺序排列。 + +类别的约定如下: + +- `official` - 项目的官方板 +- `open` - 开源设备 +- `closed` - 闭源设备 +- `legacy` - 不支持或不再受项目支持的设备 diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/modifying-gamepad-state.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/modifying-gamepad-state.mdx new file mode 100644 index 0000000..de798b8 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/modifying-gamepad-state.mdx @@ -0,0 +1,127 @@ +--- +title: 修改游戏控制器状态 +# tags: +# - +pagination_next: null +pagination_prev: null +description: Documentation on how to modify gamepad state when developing firmware features and add-ons" +--- + +# 修改游戏控制器状态 + +在任何希望修改游戏控制器状态的函数中,都需要使用指向游戏控制器的指针。这是更改游戏控制器状态任何方面的绝对必要条件。 + +```cpp +Gamepad *gamepad = Storage::getInstance().GetGamepad(); +``` + +可以在 `headers/gamepad/GamepadState.h` 中找到合适的游戏控制器宏和按钮掩码。 + +## 方向键 + +要修改游戏控制器的方向键(DPad)状态,使用按位或赋值和相应的 `GAMEPAD_MASK` 枚举来激活输入。 + +```cpp +Gamepad *gamepad = Storage::getInstance().GetGamepad(); +gamepad->state.dpad |= GAMEPAD_MASK_UP; +gamepad->state.dpad |= GAMEPAD_MASK_DOWN; +gamepad->state.dpad |= GAMEPAD_MASK_LEFT; +gamepad->state.dpad |= GAMEPAD_MASK_RIGHT; +``` + +:::note 插件的 SOCD 覆盖 + +所有插件都需要在插件中处理相对的同时方向,因为它们在标准 GPIO 输入已经被 SOCD 覆盖之后才出现。 + +请考虑在 `src/gamepad/GamepadState.cpp` 中使用 `runSOCDCleaner(SOCDMode mode, uint8_t dpad)` 来接收方向键输入,然后在插件的 `process()` 函数中一次性解决它们。 + +::: + +## 按钮 + +要修改游戏控制器的按钮状态,使用按位或赋值和相应的 `GAMEPAD_MASK` 枚举来激活输入。 + +```cpp +Gamepad *gamepad = Storage::getInstance().GetGamepad(); +gamepad->state.buttons |= GAMEPAD_MASK_B1; +gamepad->state.buttons |= GAMEPAD_MASK_B2; +gamepad->state.buttons |= GAMEPAD_MASK_B3; +gamepad->state.buttons |= GAMEPAD_MASK_B4; +gamepad->state.buttons |= GAMEPAD_MASK_L1; +gamepad->state.buttons |= GAMEPAD_MASK_R1; +gamepad->state.buttons |= GAMEPAD_MASK_L2; +gamepad->state.buttons |= GAMEPAD_MASK_R2; +gamepad->state.buttons |= GAMEPAD_MASK_S1; +gamepad->state.buttons |= GAMEPAD_MASK_S2; +gamepad->state.buttons |= GAMEPAD_MASK_L3; +gamepad->state.buttons |= GAMEPAD_MASK_R3; +gamepad->state.buttons |= GAMEPAD_MASK_A1; +gamepad->state.buttons |= GAMEPAD_MASK_A2; +gamepad->state.buttons |= AUX_MASK_FUNCTION; +``` + +## 摇杆 + +要修改游戏控制器的模拟摇杆状态,每个摇杆的 X 轴和 Y 轴必须设置为 0 到 65535 之间的无符号整数。 + +```cpp +GAMEPAD_JOYSTICK_MIN = 0 +GAMEPAD_JOYSTICK_MID = 0x7FFF +GAMEPAD_JOYSTICK_MAX = 0xFFFF +``` + +| 轴 | 值范围 | 摇杆位置 | +| :----- | :------------- | :----------------------- | +| X轴 | 0 - 32767 | 方向左 100% - 0% | +| X轴 | 32767 | 居中 | +| X轴 | 32767 - 65535 | 方向右 0% - 100% | +| Y轴 | 0 - 32767 | 方向上 100% - 0% | +| Y轴 | 32767 | 居中 | +| Y轴 | 32767 - 65535 | 方向下 0% - 100% | + +```cpp +Gamepad *gamepad = Storage::getInstance().GetGamepad(); +gamepad->state.ly = value; +gamepad->state.lx = value; +gamepad->state.ry = value; +gamepad->state.rx = value; +``` + +:::note 模拟输入的 SOCD 覆盖 + +所有插件需要处理模拟摇杆上的相对同时方向,因为固件中没有现有机制来解决此类问题。 + +::: + +## 扳机 + +对于 L2 和 R2 扳机,有两种不同的方法来设置扳机的值。可以使用数字方式或模拟值设置它们。 + +### 数字扳机 + +与其他数字输入类似,使用按位或赋值和相应的 `GAMEPAD_MASK` 枚举来激活输入。 + +```cpp +Gamepad *gamepad = Storage::getInstance().GetGamepad(); +gamepad->state.buttons |= GAMEPAD_MASK_L2; +gamepad->state.buttons |= GAMEPAD_MASK_R2; +``` + +### 模拟扳机 + +要将 L2 和 R2 扳机设置为模拟值,首先必须将游戏控制器的 `hasAnalogTriggers` 标志设置为 `true`,以指示游戏控制器是否具有模拟扳机。默认情况下,此标志设置为 `false`,建议在操作模拟扳机值时设置此标志。 + +然后,应为每个模拟扳机设置适当的轴。模拟扳机的值范围为 0 到 255,其中 0 是完全释放,255 是完全按下。 + +```cpp +GAMEPAD_TRIGGER_MIN = 0; +GAMEPAD_TRIGGER_MID = 0x7F; +GAMEPAD_TRIGGER_MAX = 0xFF; +``` + +```cpp +Gamepad *gamepad = Storage::getInstance().GetGamepad(); +gamepad->hasAnalogTriggers = true; +gamepad->state.lt = value; +gamepad->state.rt = value; +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs-development/current/templates.mdx b/i18n/zh/docusaurus-plugin-content-docs-development/current/templates.mdx new file mode 100644 index 0000000..150eb2b --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-development/current/templates.mdx @@ -0,0 +1,156 @@ +--- +title: 模板 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# 模板 + +## 配置模板 + +### README 模板 + +```md +# 板名 + +![Image of Board](site/docs/assets/gp2040-ce-placeholder.png) + +Basic description of the board + +(RP2040 Pinout as a markdown table) +| GPIO Pin | Input/Function | +|:--------:|:--------------:| +| 0 | | +| 1 | | +| 2 | | +| 3 | | +| 4 | | +| 5 | | +| 6 | | +| 7 | | +| 8 | | +| 9 | | +| 10 | | +| 11 | | +| 12 | | +| 13 | | +| 14 | | +| 15 | | +| 16 | | +| 17 | | +| 18 | | +| 19 | | +| 20 | | +| 21 | | +| 22 | | +| 23 | | +| 24 | | +| 25 | | +| 26 | | +| 27 | | +| 28 | | +| 29 | | + +Device Maintainer: [Name, Username, or Business Name](https://github.com/username) +Supported Hardware Variations: List versions/variations that share this configuration +Hardware Availability: List where one can purchase the boards that share this configuration +``` + +## 文档模板 + +### 页面模板 + +```md +--- +title: TITLE +# tags: +# - +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Document Title + +CONTENT +``` + +### 插件模板 + +```md +--- +title: ADD-ON NAME +# tags: +# - +pagination_next: null +pagination_prev: null +description: "PAGE DESCRIPTION" +--- + +# Add-On Name + +Purpose: The intended function and purpose of this add-on for an end user. + +![Web Configurator Image](../assets/gp2040-ce-placeholder.png) + +## Web Configurator Options + +- Web Configurator Option 1 +- Web Configurator Option 2 +- Web Configurator Option 3 + +## Hardware + +### Requirements + +TODO: List any hardware that is required for the intended functioning of this add-on. + +### Installation + +TODO: List instructions on how to install the hardware for use with this add-on. + +## Miscellaneous Notes + +TODO: Provide any miscellaneous notes that an end user may want or need to know with regard to this add-on. +``` + +### 下载页面设置 + +#### 微控制器板 + +```tsx +{ + name: 'Microcontroller Board Name', + configName: 'ConfigName', + pinout: null, + website: 'http://www.example.com/index.html', + image: require('@site/docs/assets/gp2040-ce-placeholder.png').default, + supported: true, + desc: () => ( +

+ Description of Microcontroller board and manufacturer +

+ ), +}, + +``` + +#### 游戏控制器 + +```tsx +{ + name: 'Controller Name', + configName: 'ConfigName', + pinout: null, + website: 'http://www.example.com/index.html', + image: require('@site/docs/gp2040-ce-placeholder.png').default, + category: 'official/open/closed/legacy', + desc: () => +

+ Description of the device and maker. +

, +}, +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/current.json b/i18n/zh/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..d92ba73 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,30 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.docSidebar.category.General": { + "message": "通用", + "description": "The label for category General in sidebar docSidebar" + }, + "sidebar.docSidebar.category.FAQ": { + "message": "疑难解答", + "description": "The label for category FAQ in sidebar docSidebar" + }, + "sidebar.docSidebar.category.Controller Building": { + "message": "游戏控制器组装", + "description": "The label for category Controller Building in sidebar docSidebar" + }, + "sidebar.docSidebar.doc.Web Configurator": { + "message": "网页配置器", + "description": "The label for the doc item Web Configurator in sidebar docSidebar, linking to the doc web-configurator/web-configurator" + }, + "sidebar.webConfigSidebar.category.Web Configurator Menu": { + "message": "网页配置器菜单", + "description": "The label for category Web Configurator Menu in sidebar webConfigSidebar" + }, + "sidebar.webConfigSidebar.category.Add-Ons": { + "message": "插件", + "description": "The label for category Add-Ons in sidebar webConfigSidebar" + } +} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/analog.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/analog.mdx new file mode 100644 index 0000000..4d0b20f --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/analog.mdx @@ -0,0 +1,74 @@ +--- +title: 模拟摇杆 (Analog) +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use hardware analog joysticks with GP2040-CE" +--- + +# 模拟摇杆 (Analog) + +:::info + +此页面“模拟摇杆”指可以输出向量信号的摇杆硬件,又称类比摇杆,而非对摇杆的“模拟”。 + +::: + +用途:此插件旨在通过 GP2040-CE 使用硬件模拟摇杆,用于游戏控制器的左模拟摇杆和右模拟摇杆。 + +![GP2040-CE 配置器 - 插件 模拟摇杆](../assets/images/gpc-add-ons-analog.png) + +## 网页配置器选项 + +- `模拟摇杆 1 X 引脚` - 用于模拟摇杆 1 的 X 值的 GPIO 引脚。此处仅允许使用 ADC 引脚 26、27、28 和 29。 +- `模拟摇杆 1 Y 引脚` - 用于模拟摇杆 1 的 Y 值的 GPIO 引脚。此处仅允许使用 ADC 引脚 26、27、28 和 29。 +- `模拟摇杆 1 模式` - 选择模拟摇杆 1 用作左模拟摇杆或右模拟摇杆。 +- `模拟摇杆 1 反转` - 选择是否翻转模拟摇杆 1 的 X 或 Y 轴输入(或同时翻转)。 +- `模拟摇杆 2 X 引脚` - 用于模拟摇杆 2 的 X 值的 GPIO 引脚。此处仅允许使用 ADC 引脚 26、27、28 和 29。 +- `模拟摇杆 2 Y 引脚` - 用于模拟摇杆 2 的 Y 值的 GPIO 引脚。此处仅允许使用 ADC 引脚 26、27、28 和 29。 +- `模拟摇杆 2 模式` - 选择模拟摇杆 2 用作左模拟摇杆或右模拟摇杆(必须与模拟摇杆 1 不同)。 +- `模拟摇杆 2 反转` - 选择是否反转模拟摇杆 2 的 X 或 Y 轴输入(或同时反转)。 +- `内部死区范围 (%)` - 输入您希望在模拟摇杆上设置的内死区百分比值。 +- `外部死区范围 (%)` - 输入您希望在模拟摇杆上设置的外死区百分比值。 +- `强制圆形` - 强制将模拟摇杆限制在完美圆形内。这对某些游戏可能有益,但请注意,这可能会对某些允许摇杆超出圆形移动的游戏产生负面影响。 +- `自动校准` - 自动校准模拟摇杆。这通过在启动时读取中心偏移并在下次电源循环之前进行补偿来工作。这对存在漂移问题的模拟摇杆可能非常有用。 + +## 硬件 + +### 要求 + +至少需要一个硬件模拟摇杆才能使用此插件。每个摇杆至少有以下 4 个引脚: + +- 参考电压 (ADC_VREF/3.3V) +- X 轴输入电压 (Vx) +- Y 轴输入电压 (Vy) +- 接地 (GND) + +每个轴输入电压引脚都需要一个模拟到数字转换器 (ADC) 引脚来运行。因此,某些板可能对可用摇杆的最大数量有限制(例如,树莓派 Pico 只有 3 个 ADC 引脚可用,因此只能使用 1 个摇杆)。 + +:::note 摇杆按钮 + +模拟摇杆可能有一个额外的引脚用于摇杆按钮。此引脚可以连接到任何 GPIO 引脚,并作为常规按钮使用。 + +::: + +### 安装 + +将模拟摇杆的引脚连接到开发板,如下所示,然后在 `网页配置器 > 功能配置 > 插件配置 > 模拟摇杆` 中设置 GPIO 引脚值: + +- 参考电压 (ADC_VREF/3.3V) -> ADC_VREF/3.3V 引脚 +- X 轴输入电压 (Vx) -> 任意 ADC GPIO 引脚 +- Y 轴输入电压 (Vy) -> 任意 ADC GPIO 引脚 +- 接地 (GND) -> 任意 GND 引脚 + +开发板上的 ADC 引脚具体位置因设计和制造商而异,但在 RP2040 上始终为以下 GPIO 引脚之一: + +- GPIO 26 +- GPIO 27 +- GPIO 28 +- GPIO 29 + +## 其他注意事项 + +支持电位器和霍尔效应类型的摇杆,只要它们使用 3.0-3.3V 的参考电压并输出 0-3.3V 范围内的电压作为 RP2040 的输入即可。这是因为 RP2040 的 GPIO 引脚使用 3.3V 逻辑电平,不支持 5V 电平。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/bootsel-button.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/bootsel-button.mdx new file mode 100644 index 0000000..d9d5cdd --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/bootsel-button.mdx @@ -0,0 +1,38 @@ +--- +title: BOOTSEL 键配置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use the BOOTSEL button as an additional button input" +--- + +# BOOTSEL 键配置 + +用途:此插件旨在允许将 BOOTSEL 键作为额外的按键输入使用。 + +![GP2040-CE 配置器 - 插件 BOOTSEL 键配置](../assets/images/gpc-add-ons-bootsel-button.png) + +## 网页配置器选项 + +- `BOOTSEL 键` - 选择一个输入映射到 BOOTSEL 键。 + +## 硬件 + +### 要求 + +此插件仅适用于具有 BOOTSEL 键的设备。 + +### 安装 + +此插件没有安装说明。 + +## 其他注意事项 + +如果设置了此键,OLED 可能会变得无响应。您可以取消设置以恢复 OLED 功能。 + +:::warning + +`BOOTSEL 键配置` 仅适合有经验的用户使用。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/buzzer-speaker.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/buzzer-speaker.mdx new file mode 100644 index 0000000..3071116 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/buzzer-speaker.mdx @@ -0,0 +1,37 @@ +--- +title: 蜂鸣器 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to add a buzzer to your controller" +--- + +# 蜂鸣器 + +用途:此插件旨在允许您为 GP2040-CE 设备添加蜂鸣器并播放声音。 + +![GP2040-CE 配置器 - 插件 蜂鸣器](../assets/images/gpc-add-ons-buzzer.png) + +## 网页配置器选项 + +- `Use buzzer` - 开启/关闭蜂鸣器模块。 +- `Buzzer Pin` - 用于蜂鸣器的 GPIO 引脚。 +- `Buzzer Volume` - 蜂鸣器的音量,范围为 0-100。 + +## 硬件 + +### 要求 + +- 3-3.3V 压电扬声器 + +扬声器只需要电源 (VCC) 和接地 (GND) 引脚。如果扬声器上有 I/O 引脚,可以将引脚跳线,只使用连接到 RP2040 GPIO 引脚的 VCC。 + +### 安装 + +- 将开发板上的 GPIO 引脚连接到扬声器的 VCC。 +- 在网页配置器中输入 GPIO 引脚。 + +## 其他注意事项 + +无 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/drv8833-rumble.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/drv8833-rumble.mdx new file mode 100644 index 0000000..35f6205 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/drv8833-rumble.mdx @@ -0,0 +1,27 @@ +--- +title: DRV8833 马达震动配置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use the DRV8833 Rumble in Xinput mode" +--- + +# DRV8833 马达震动配置 + +用途:此插件允许您在 Xinput 模式下使用 DRV8833 震动功能。 + +![GP2040-CE 配置器 - 插件 DRV8833 震动](../assets/images/gpc-add-ons-drv8833-rumble.png) + +## 网页配置器选项 + +- `左马达引脚` - DRV8833 上左侧电机 `AIN1` 连接的 GPIO 引脚。 +- `右马达引脚` - DRV8833 上右侧电机 `AIN2` 连接的 GPIO 引脚。 +- `马达休眠引脚` - DRV8833 上 `SLP` 连接的 GPIO 引脚。 +- `PWM 频率` - 电机的 PWM 频率(建议从 10,000 开始,并根据需要调整)。 +- `最小占空比` - 0-255 震动值的最低范围百分比。 +- `最大占空比` - 0-255 震动值的最高范围百分比。 + +### 要求 + +此插件需要一个 DRV8833 电机驱动器或扩展板,以及一个或两个震动电机。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/dual-direction-input.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/dual-direction-input.mdx new file mode 100644 index 0000000..8445cdb --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/dual-direction-input.mdx @@ -0,0 +1,58 @@ +--- +title: 双重方向输入 (DDI) +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to add more digital DPad, left analog stick, and right analog stick directional inputs to your controller" +--- + +# 双重方向输入 (DDI) + +用途:此插件旨在允许使用额外的数字按钮作为方向输入,支持 D-Pad 或左、右模拟摇杆的最大幅度的基本方向输入。 + +![GP2040-CE 配置器 - 插件 双重方向输入](../assets/images/gpc-add-ons-dual-directional.png) + +## 网页配置器选项 + +:::info GPIO 引脚映射已迁移 + +这些引脚现在可以在 [GPIO 引脚映射页面](../web-configurator/menu-pages/02-gpio-pin-mapping.mdx) 中配置,通过为选定引脚选择正确的选项。 + +- DDI 上 +- DDI 下 +- DDI 左 +- DDI 右 + +::: + +- `双十字键模式` - 选择此功能是否作为 D-Pad、左模拟摇杆或右模拟摇杆的附加实例。 +- `混合模式` - 选择这些方向输入与游戏控制器方向的组合方式。 +- `双重 4 向摇杆模式` - 在 DDI 摇杆上启用 4 向摇杆模式,此模式将阻止非基本方向的输入。当接收到第二个基本方向的输入时,游戏控制器方向将切换到最新的基本方向,类似于 [SOCD 后输入优先](../hotkeys.mdx#socd-后输入优先)。 + +### 双十字键模式 + +- `十字键` 用于十字键模式。 +- `左模拟摇杆` 用于左模拟摇杆模式。 +- `右模拟摇杆` 用于右模拟摇杆模式。 + +### 混合模式 + +- `混合` - 将游戏控制器方向与 DDI 方向结合,并允许使用所有 4 种 SOCD 模式。 +- `游戏控制器覆盖` - 游戏控制器方向优先,当按下时覆盖 DDI,否则游戏控制器和 DDI 独立运行。 +- `DDI 覆盖` - DDI 方向优先,当按下时覆盖游戏控制器方向,否则游戏控制器和 DDI 独立运行。 +- `无` - 游戏控制器方向和 DDI 方向相互独立运行。 + +## 硬件 + +### 要求 + +每个额外的方向输入需要额外的按钮。 + +### 安装 + +对于每个按钮,将按钮的一侧连接到其在网页配置器中分配的对应 GPIO 引脚。将按钮的另一侧连接到 GND。 + +## 其他注意事项 + +“游戏控制器方向”指核心方向(如“上”),而“DDI 方向”指此插件使用的方向(如“DDI 上”)。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/focus-mode.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/focus-mode.mdx new file mode 100644 index 0000000..2e0ceed --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/focus-mode.mdx @@ -0,0 +1,36 @@ +--- +title: 专注模式配置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to disable functions and inputs while Focus Mode is enabled" +--- + +# 专注模式配置 + +用途:此插件旨在允许您在启用专注模式时禁用多个功能或输入,但在其他情况下仍可访问它们。 + +![GP2040-CE 配置器 - 专注模式](../assets/images/gpc-add-ons-focus-mode.png) + +## 网页配置器选项 + +- `锁定宏` - 启用后,在专注模式下宏触发将无法激活宏序列。 +- `锁定按键` - 启用后,列出的输入在专注模式下将不会被发送。随着输入的添加,将出现新的下拉菜单以供选择更多输入。 + +请注意,专注模式引脚可以在 [GPIO 引脚映射](../web-configurator/menu-pages/gpio-pin-mapping) 页面上设置。 + +## 硬件 + +### 要求 + +设置为 `Focus Mode Pin` 的 GPIO 引脚需要保持低电平以保持专注模式的激活。需要使用拨动开关、滑动开关或锁定开关才能使用 `Focus Mode Pin`。 + +也可以通过快捷键操作 [专注模式切换](../hotkeys.mdx#专注模式切换)(可在 [快捷键设置](../web-configurator/menu-pages/01-settings.mdx#快捷键设置) 中配置)启用或禁用专注模式。按下该快捷键将激活专注模式,按住该快捷键 3 秒将关闭专注模式。 +### 安装 + +安装方式取决于使用的是拨动开关、滑动开关还是锁定开关。通常情况下,将开关的一侧连接到设置为 `Focus Mode Pin` 的 GPIO 引脚。将开关的另一侧或如果有 3 个触点则连接中心触点到任何 GND 引脚。 + +## 其他注意事项 + +无。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/gamepad-usb-host.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/gamepad-usb-host.mdx new file mode 100644 index 0000000..ebcbcab --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/gamepad-usb-host.mdx @@ -0,0 +1,36 @@ +--- +title: 游戏控制器 USB 主机 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow gamepads to be used inline with GP2040-CE" +--- + +# 游戏控制器 USB 主机 + +用途:此插件旨在允许游戏控制器与 GP2040-CE 一起使用。例如,可以将受支持的 USB 游戏控制器插入可用的 USB 主机端口,然后使用该 USB 游戏控制器进行游戏。此功能可以将受支持的游戏控制器转换为适用于其原本不支持的系统。 + +![GP2040-CE 配置器 - 游戏控制器 USB 主机](../assets/images/gpc-add-ons-keyboard-gamepad-usb-host.png) + +## 网页配置器选项 + +目前,您只能启用或禁用此插件。 + +请注意,目前您必须在 `键盘/鼠标主机` 和 `游戏控制器 USB 主机` 之间进行选择。 + +## 硬件 + +要使用此插件,您需要以下之一的游戏控制器: +- Sony Dualshock 4 无线控制器 +- Google Stadia 控制器 +- Ultrastick 360(2015 年之前版本) +- Ultrastick 360 + +### 要求 + +:::note + +请注意,未来可能会增加更多游戏控制器的支持。目前我们不接受添加额外游戏控制器的请求。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/hall-effect-trigger.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/hall-effect-trigger.mdx new file mode 100644 index 0000000..5d02532 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/hall-effect-trigger.mdx @@ -0,0 +1,67 @@ +--- +title: 霍尔效应按键 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use hall-effect trigger buttons with GP2040-CE" +--- + +# 霍尔效应按键 + +用途:此插件用于单独使用霍尔效应按键,或通过多路复用器扩展板使用霍尔效应按键。 + +![GP2040-CE 配置器 - 插件 霍尔效应按键](../assets/images/gpc-add-ons-hall-effect-trigger.png) + +## 网页配置器选项 + +- `每个多路复用器的通道数` - 多路复用器的通道数量。请注意,如果使用多个多路复用器,它们的通道数必须相同。如果不使用多路复用器而是直接连接,请选择 `直连(无多路复用器)`。 +- `选择引脚 0` - 多路复用器选择引脚所使用的 GPIO 引脚。 +- `选择引脚 1` - 多路复用器选择引脚所使用的 GPIO 引脚。 +- `选择引脚 2` - 多路复用器选择引脚所使用的 GPIO 引脚。 +- `选择引脚 3` - 多路复用器选择引脚所使用的 GPIO 引脚。 +- `ADC 引脚 0` - 第一个多路复用器或单个霍尔效应轴体所使用的 ADC GPIO 引脚。 +- `ADC 引脚 1` - 第二个多路复用器或单个霍尔效应轴体所使用的 ADC GPIO 引脚。 +- `ADC 引脚 2` - 第三个多路复用器或单个霍尔效应轴体所使用的 ADC GPIO 引脚。 +- `ADC 引脚 3` - 第四个多路复用器或单个霍尔效应轴体所使用的 ADC GPIO 引脚。 +- `模拟平滑` - 启用模拟平滑,如果读数存在噪声,此选项可能会有帮助。 +- `平滑系数` - 介于 1 到 99 之间的 EMA(指数移动平均)值。值为 1 时平滑程度最高,值为 99 时平滑程度最低。 + +## 校准 + +![GP2040-CE 配置器 - 插件 霍尔效应按键校准](../assets/images/gpc-add-ons-hall-effect-trigger-calibrate.png) + +### 如何校准霍尔效应轴体 + +所有已连接的霍尔效应轴体都需要校准,可以逐个校准,也可以一次性全部校准。在大多数情况下,建议同时校准所有霍尔效应按键,除非您使用了不同类型的霍尔效应轴体。 + +1 - 点击 `全部校准` 按钮,或点击任意一个多路复用器通道对应的磁铁按钮。 +2 - 在不按下按键的情况下,等待 `空闲电压读数` 稳定。 +3 - 点击 `校准空闲` 按钮。 +4 - 将霍尔效应轴体完全按下,在保持轴体完全按下的同时,点击 `校准按下` 按钮。 + +![GP2040-CE 配置器 - 插件 霍尔效应按键高级校准](../assets/images/gpc-add-ons-hall-effect-trigger-calibrate-advanced.png) + +也可以点击 `手动调整` 按钮,手动进行高级校准。 + +在高级校准中可以使用以下选项: +- `空闲电压` - 轴体处于空闲状态时的电压。 +- `触发电压` - 轴体处于您希望设置的触发点时的电压。 +- `按下电压` - 轴体处于最大按下值时的电压。 +- `翻转极性` - 暂不支持。 + +`触发点读数` 部分会在您按下霍尔效应轴体时实时显示其状态。 + +如果您处于 `全部校准` 界面,将会看到一个 `覆盖所有按键` 按钮,用于覆盖所有之前保存的设置。 + +## 霍尔效应电压表 + +![GP2040-CE 配置器 - 插件 霍尔效应电压表](../assets/images/gpc-add-ons-hall-effect-trigger-voltage-table.png) + +霍尔效应电压表会汇总显示您的霍尔效应轴体当前的所有设置。 + +:::note + +在网页配置器中切换到其他页面或重启进入控制器模式之前,请务必点击 `保存按键数值`,否则您的更改将不会被保存。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/i2c-analog-ads1219.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/i2c-analog-ads1219.mdx new file mode 100644 index 0000000..46612ef --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/i2c-analog-ads1219.mdx @@ -0,0 +1,67 @@ +--- +title: I2C Analog ADS1219 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use an ADS1219 ADC for Left and Right analog joysticks on your controller" +--- + +import I2CTable from "../snippets/_i2c-block-table.mdx"; + +# I2C Analog ADS1219 + +用途:此插件旨在使用 ADS1219 24 位模拟-数字转换器(ADC)添加左右模拟摇杆功能。 + +![GP2040-CE 配置器 - 插件 ADS1219](../assets/images/gpc-add-ons-ads1219.png) + +## 网页配置器选项 + +:::info GPIO 引脚分配 + +I2C 的 SDA 和 SCL 引脚以及速度现在可以在 [`配置 > 外围设备映射 - I2C`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#i2c) 中进行配置。 + +::: + +- `I2C Analog ADS1219 模块` - 要使用的 I2C 块(i2c0 或 i2c1)。 +- `I2C Analog ADS1219 地址` - 根据 SDA 和 SCL 引脚的使用情况设置 I2C 模拟 ADS1219 的地址,详见以下表格。 + +| A0 | A1 | I2C 地址 | +| :-: | --- | :---------: | +| SDA | SCL | 1001110 | +| SCL | SDA | 1001011 | + +## 硬件 + +### 要求 + +此插件需要 ADS1219 模数转换器(ADC)才能正常工作。 + +### 安装 + +根据以下表格连接 ADS1219 的引脚: + +| ADS1219 引脚 | 功能 | +| :----------: | ------------------------ | +| A0 | SDA 或 SCL | +| A1 | SDA 或 SCL | +| AIN0 | 左模拟摇杆 X 轴 | +| AIN1 | 左模拟摇杆 Y 轴 | +| AIN2 | 右模拟摇杆 X 轴 | +| AIN3 | 右模拟摇杆 Y 轴 | + +
+ +:::info A0/A1 GPIO 分配 + +这些引脚需要连接到 RP2040 上的适当 SDA/SCL 引脚,并在网页配置器中设置正确的 I2C 块。 + +有关设置 I2C 的更多信息,请参阅 [外围设备映射](../web-configurator/menu-pages/03-peripheral-mapping.mdx#i2c)。 + +::: + +## 其他注意事项 + +这些安装说明仅涵盖 ADS1219 ADC 的连接,不包括使用 ADS1219 ADC 所需的额外电路。 + +[ADS1219 产品说明](https://www.ti.com/lit/ds/symlink/ads1219.pdf) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/i2c-analog-ads1256-spi.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/i2c-analog-ads1256-spi.mdx new file mode 100644 index 0000000..f4a25d3 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/i2c-analog-ads1256-spi.mdx @@ -0,0 +1,33 @@ +--- +title: Analog ADS1256 (SPI) +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use ADS1256 SPI for compatible accessories (currently in early beta)" +--- + +# Analog ADS1256(SPI) + +用途:此插件旨在允许您使用与 ADS1256 SPI 兼容的配件(目前处于早期测试阶段)。 + +![GP2040-CE 配置器 - 插件 ADS1256](../assets/images/gpc-add-ons-ads1256-spi.png) + +## 网页配置器选项 + +:::info GPIO 引脚分配 + +`SPI 模块`、`Chip Select (CS) 引脚` 和 `Data Ready (DRDY) 引脚` 现在可以在 [`配置 > 外围设备映射 - SPI`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#spi) 中进行配置。 + +::: + +- `SPI 模块` - 要使用的 SPI 模块(spi0 或 spi1)。 +- `Chip Select (CS) 引脚` - 用于片选的 GPIO 引脚。 +- `Data Ready (DRDY) 引脚` - 用于数据准备的 GPIO 引脚。 +- `模拟最大值` - 将使用的最大电压,可在此选择 `3.3V` 或 `5V`。 + +## 硬件 + +### 要求 + +请注意,此插件目前处于早期测试阶段,尚未提供使用示例。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/input-history.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/input-history.mdx new file mode 100644 index 0000000..55f711c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/input-history.mdx @@ -0,0 +1,55 @@ +--- +title: 输入历史 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to show input history" +--- + +# 输入历史 + +用途:此插件旨在允许您显示输入历史。 + +![GP2040-CE 配置器 - 插件 输入历史](../assets/images/gpc-add-ons-input-history.png) + +## 网页配置器选项 + +- `History length` - 设置历史记录的最大字符长度。 +- `Column` - 指定历史记录在显示屏上开始的列位置。(0 - 左侧,20 - 右侧) +- `Row` - 指定历史记录在显示屏上出现的行位置。(0 - 顶部,7 - 底部) + +## 硬件 + +### 要求 + +已配置的 [单色显示屏](../web-configurator/menu-pages/07-display-configuration.mdx)。 + +### 安装 + +无需安装。 + +## 其他说明 + +输入 - 符号映射: + +| GP2040-CE | PS3 | Switch | XINPUT | 键盘 | PS4 | 配置 | +|-----------|:---:|:------:|:------:|:----:|:---:|:----:| +| 上 | U | U | U | U | U | U | +| 下 | D | D | D | D | D | D | +| 左 | L | L | L | L | L | L | +| 右 | R | R | R | R | R | R | +| B1 | X | B | A | B1 | X | B1 | +| B2 | O | A | B | B2 | O | B2 | +| B3 | # | Y | X | B3 | # | B3 | +| B4 | ^ | X | Y | B4 | ^ | B4 | +| L1 | L1 | L | LB | L1 | L1 | L1 | +| R1 | R1 | R | RB | R1 | R1 | R1 | +| L2 | L2 | ZL | LT | L2 | L2 | L2 | +| R2 | R2 | ZR | RT | R2 | R2 | R2 | +| S1 | SL | - | BK | S1 | SH | S1 | +| S2 | ST | + | ST | S2 | OP | S2 | +| L3 | L3 | LS | LS | L3 | L3 | L3 | +| R3 | R3 | RS | RS | R3 | R3 | R3 | +| A1 | PS | H | G | A1 | PS | A1 | +| A2 | A2 | C | A2 | A2 | T | A2 | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/input-reverse.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/input-reverse.mdx new file mode 100644 index 0000000..2f522a5 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/input-reverse.mdx @@ -0,0 +1,43 @@ +--- +title: 输入反转 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use a button to reverse cardinal directions of the DPad of your controller" +--- + +# 输入反转 + +用途:此插件允许用户通过按下或按住一个额外的按钮,细化地反转、置于中立或保持游戏控制器上的基本方向不变,并输入新的方向。 + +![GP2040-CE 配置器 - 插件 输入反转](../assets/images/gpc-add-ons-input-reverse.png) + +## 网页配置器选项 + +- `反转输入引脚` - 用于反转输入按钮的 GPIO 引脚。 +- `反转输入引脚 LED` - 用于反转输入 LED 的 GPIO 引脚。 +- `反转上` - 当按下或按住反转输入按钮时,启用上方向反转。 +- `反转下` - 当按下或按住反转输入按钮时,启用下方向反转。 +- `反转左` - 当按下或按住反转输入按钮时,启用左方向反转。 +- `反转右` - 当按下或按住反转输入按钮时,启用右方向反转。 + +四个方向中的每一个都可以独立设置以下三种行为之一,当按住反转输入引脚时生效: + +- `禁用` - 此方向不发生变化(例如,上 + 反转 = 上)。 +- `启用` - 此方向被反向激活(例如,左 + 反转 = 右)。 +- `中立` - 此方向被置于中立(例如,下 + 反转 = 中立)。 + +## 硬件 + +### 要求 + +此插件需要一个额外的按钮映射到 GPIO 引脚。 + +### 安装 + +对于街机按钮和键盘开关,两侧的触点需要分别连接到 GPIO 引脚(例如,通过导线或 PCB 上的走线)和接地(例如,通过导线或 PCB 上的走线)。 + +## 其他说明 + +无。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/keyboard-mouse-host.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/keyboard-mouse-host.mdx new file mode 100644 index 0000000..8df4fa4 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/keyboard-mouse-host.mdx @@ -0,0 +1,98 @@ +--- +title: 键盘/鼠标主机配置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use a USB keyboard in conjunction with GP2040-CE to send inputs to supported systems" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import InstallUSBHostPort from "../snippets/_add-usb-host-port.mdx"; + +选择要在使用指南中显示的按键标签: + + +
+ +:::info 此页面并非键盘输入模式设置 + +此插件的用法是将键盘插入游戏控制器的 USB 接口上,通过按下键盘上的按键,由 GP2040-CE 将键盘信号转换为其它支持的输入模式信号。 + +如果您想让游戏控制器输出键盘信号,请前往 [`系统设置 > 输入模式设置`](../web-configurator/menu-pages/01-settings.mdx#键盘映射),将 `当前输入模式` 更改为 `键盘`。 + +::: + +用途:此插件旨在允许将键盘和/或鼠标作为 GP2040-CE 的输入,并将其映射为其他输入,发送到受支持的系统。 + +![GP2040-CE 配置器 - 键盘/鼠标主机配置](../assets/images/gpc-add-ons-keyboard-mouse-host-configuration.png) + +## 网页配置器选项 + +:::info GPIO 引脚分配 + +USB 主机端口的 Data、5V Enable 和 Pin Orientation 选项现在在 [`功能配置 > 外围设备映射 - USB 主机`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-主机) 中配置。 + +::: + +## 键盘 + +### 默认按键绑定 + +| GP2040 | 键盘按键 | +| -------------------------------- | ------------ | +| | 上箭头 | +| | 下箭头 | +| | 左箭头 | +| | 右箭头 | +| | 左 Shift | +| | Z | +| | 左 Control | +| | 左 Alt | +| | C | +| | 空格 | +| | V | +| | X | +| | 5 | +| | 1 | +| | 等号 | +| | 减号 | +| | 9 | +| | F2 | +| | 无 | + +## 鼠标 + +鼠标移动默认未映射,可以映射到右摇杆或左摇杆。 + +### 默认绑定 + +| GP2040 | 鼠标 | +| ------ | ---- | +| 无 | 左键 | +| 无 | 中键 | +| 无 | 右键 | + +## 硬件 + +### 要求 + +此插件需要设备上有一个 USB 主机端口,并且该端口连接到 RP2040 板上的 GPIO 引脚。实现此功能有多种方法。 + +请参阅 [USB 主机端口安装](../controller-build/usb-host.mdx) 了解有关将 USB 主机端口添加到游戏控制器的详细要求。 + +### 安装 + + + +## 其他说明 + +只要键盘带有 USB 插头,任何键盘都可以与此插件配合使用,包括无线 USB 键盘。 + +由于当前 Pico-PIO-USB 和插件系统的实现方式,存在以下限制: + +- 键盘仅限于上述列出的输入数量。键盘上的其他按键将无法使用,并且不会向系统发送任何输入信号。 +- 键盘受限于 6 键无冲(6 key rollover),这意味着最多只能同时激活 6 个键盘按键。即使所使用的键盘通常支持全键无冲(NKRO),此限制仍然适用。 +- 键盘无法在启动时影响输入模式。输入模式必须通过 `网页配置器 > 系统设置` 或 GP2040-CE 设备上的额外开关进行设置。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/on-board-led.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/on-board-led.mdx new file mode 100644 index 0000000..13cff8c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/on-board-led.mdx @@ -0,0 +1,38 @@ +--- +title: 板载 LED 配置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use the on-board LED as an mode, input, or PS4/5 authentication status indicator" +--- + +# 板载 LED 配置 + +用途:此插件旨在允许您使用板载 LED 作为模式指示器、输入测试指示器或 PS4/5 认证指示器。 + +![GP2040-CE 配置器 - 插件 板载 LED 配置](../assets/images/gpc-add-ons-onboard-led.png) + +## 网页配置器选项 + +- `关闭` - LED 关闭 +- `模式指示器` + - 如果设备通电并连接数据,LED 为常亮 + - 如果设备通电但未连接数据,LED 快速闪烁 + - 如果设备处于网页配置模式,LED 慢速闪烁 +- `输入测试` - LED 默认关闭,但在按下任何输入时会亮起(释放按钮时 LED 关闭)。 +- `PS4/5 认证` - 当认证调用已触发且成功时,LED 为常亮 + +## 硬件 + +### 要求 + +此插件要求使用的 RP2040 板上已经集成了板载 LED。 + +### 安装 + +无需安装。 + +## 其他说明 + +无。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/pcf8575-io-expander.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/pcf8575-io-expander.mdx new file mode 100644 index 0000000..3aacf0c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/pcf8575-io-expander.mdx @@ -0,0 +1,22 @@ +--- +title: PCF8575 IO 扩展器 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use a PCF8575 based IO Expander" +--- + +# PCF8575 IO 扩展器 + +用途:此插件允许您使用基于 PCF8575 的 IO 扩展器。 + +![GP2040-CE 配置器 - 插件 DRV8833 震动](../assets/images/gpc-add-ons-pcf8575-io-expander.png) + +## 网页配置器选项 + +对于 16 个可用的扩展器引脚中的每一个,您可以将其设置为输入或输出引脚,并选择与之绑定的按钮。 + +### 要求 + +此插件需要一个基于 PCF8575 的 IO 扩展器。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/reactive-led.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/reactive-led.mdx new file mode 100644 index 0000000..5b74710 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/reactive-led.mdx @@ -0,0 +1,28 @@ +--- +title: 响应式 LEDs +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow the setup of individually reactivate LEDs" +--- + +# 响应式 LEDs 配置 + +用途:此插件允许您设置连接到 GPIO 的单色反应式 LED。 + +![GP2040-CE 配置器 - Reactive LEDs](../assets/images/gpc-add-ons-reactive-leds.png) + +## 网页配置器选项 + +通过 网页配置器总共可以配置 10 个 LED。对于每个 LED,您可以进行以下设置: + +LED X +- `LED GPIO Pin` - LED 连接到的 GPIO 引脚。 +- `Action` - 选择触发此 LED 的操作。 +- `Default Mode` - 选择在未启用此操作时的行为。 +- `Active Mode` - 选择在启用此操作时的行为。 + +## 硬件 + +您需要将 LED 连接到 GPIO 引脚和接地(GND)。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/rotary-encoders.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/rotary-encoders.mdx new file mode 100644 index 0000000..af69cab --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/rotary-encoders.mdx @@ -0,0 +1,35 @@ +--- +title: 旋转编码器 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow for the use of rotary encoders." +--- + +# 旋转编码器 + +:::warning Beta + +请注意,旋转编码器功能目前处于测试阶段。 + +::: + +用途:旋转编码器允许在指定引脚上实现连续或有限的最小-最大脉冲。 + +![GP2040-CE 配置器 - 插件 旋转编码器](../assets/images/gpc-add-ons-rotary-encoders.png) + +## 网页配置器选项 + +- `启用` - 启用或禁用 `编码器 1` 或 `编码器 2`。 +- `引脚 A/CLK` - 编码器的 `Clock` 引脚。 +- `引脚 B/DT` - 编码器的 `Data` 引脚。 +- `每圈脉冲数 (PPR)` - 编码器每转的脉冲数。 +- `乘数` - 使用此乘数微调旋转编码器在 GP2040-CE 中的性能。 +- `复位等待时间 (ms)` - 等待的毫秒数,在此时间后将值重置为 `0` 或 `center`。 +- `控制模式` - 选择此编码器的工作模式。 +- `允许回绕` - 允许编码器在达到轴的最大值时回绕到轴的最小值。 + +## 硬件 + +目前我们没有推荐的模块。这是一个新引入的功能。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/snes-input.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/snes-input.mdx new file mode 100644 index 0000000..fe34ec5 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/snes-input.mdx @@ -0,0 +1,84 @@ +--- +title: SNES 输入 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use various NES and SNES controllers/peripherals in conjunction with GP2040-CE to send inputs to supported systems" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# SNES 输入 + +选择要在使用指南中显示的按键标签: + + +
+ +用途:此插件旨在允许您使用 GP2040-CE 作为适配器,将 NES 游戏控制器、SNES 游戏控制器或 Super NES 鼠标连接到支持的系统。 + +![GP2040-CE 配置器 - SNES 输入](../assets/images/gpc-add-ons-snespad-input.png) + +## 网页配置器选项 + +- `CLOCK Pin` - 用于 SNES CLOCK 的 GPIO 引脚。 +- `LATCH Pin` - 用于 SNES LATCH 的 GPIO 引脚。 +- `DATA Pin` - 用于 SNES DATA 的 GPIO 引脚。 + +支持的游戏控制器类型及其映射如下: + +| GP2040 | NES | SNES | Super NES Mouse | +| ----------------------------- | ------ | ------ | --------------- | +| | Up | Up | | +| | Down | Down | | +| | Left | Left | | +| | Right | Right | | +| | B | B | 左键点击 | +| | A | A | 右键点击 | +| | | Y | | +| | | X | | +| | | L | | +| | | R | | +| | | | | +| | | | | +| | Select | Select | | +| | Start | Start | | +| | | | | +| `Analog` | | | 鼠标移动 | + +## 硬件 + +### 要求 + +SNES 延长线带有独立的导线,或者直接从游戏控制器接线。 + +### 安装 + +![GP2040-CE 配置器 - SNES 游戏控制器电缆连接器针脚图](../assets/images/gpc-add-ons-snespad-input-pinout.svg) + +请参考 [Super Nintendo Entertainment System: pinouts & protocol](https://www.repairfaq.org/REPAIR/F_SNES.html) 中的 SNES 游戏控制器电缆连接器针脚图。此针脚图的方向是从电缆连接器的背面“往里看”。 + +:::caution + +延长线的颜色可能不一致,因此最好测试导通性。 + +::: + +按照下表将 SNES 针脚连接到 RP2040 板上的 GPIO 针脚。 + +| SNES 针脚 | RP2040 板上的针脚 | +| :------: | ---------------------------- | +| 1 | VBUS | +| 2 | Web 界面中的 `CLOCK Pin` | +| 3 | Web 界面中的 `LATCH Pin` | +| 4 | Web 界面中的 `DATA Pin` | +| 5 | 无连接 | +| 6 | 无连接 | +| 7 | 地线 | + +## 其他备注 + +无。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/socd-selection-slider.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/socd-selection-slider.mdx new file mode 100644 index 0000000..4681ecd --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/socd-selection-slider.mdx @@ -0,0 +1,49 @@ +--- +title: SOCD 覆盖模式选择滑块 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to select SOCD cleaning modes with toggle or slide switch" +--- + +# SOCD 覆盖模式选择滑块 + +用途:此插件旨在允许用户通过两档或三档拨动开关或滑动开关切换 SOCD 覆盖模式。 + +![GP2040-CE 配置器 - SOCD 选择滑块](../assets/images/gpc-add-ons-socd-slider.png) + +## 网页配置器选项 + +:::info GPIO 引脚映射已移动 + +引脚现在可以在 [GPIO 引脚映射页面](../web-configurator/menu-pages/02-gpio-pin-mapping.mdx) 中配置,通过选择所需引脚的正确选项来完成。 + +- [SOCD 上优先](../hotkeys.mdx#socd-上优先) +- [SOCD 回中](../hotkeys.mdx#socd-回中) +- [SOCD 后输入优先](../hotkeys.mdx#socd-后输入优先) +- [SOCD 先输入优先](../hotkeys.mdx#socd-先输入优先) +- [SOCD 关闭](../hotkeys.mdx#socd-关闭) + +::: + +- `SOCD 滑块默认模式` - 当没有 `SOCD 覆盖模式` 引脚被保持时激活的 SOCD 覆盖模式。 + - [上优先](../hotkeys.mdx#socd-上优先) + - [回中](../hotkeys.mdx#socd-回中) + - [后输入优先](../hotkeys.mdx#socd-后输入优先) + - [先输入优先](../hotkeys.mdx#socd-先输入优先) + - [关闭](../hotkeys.mdx#socd-关闭) + +## 硬件 + +### 要求 + +在引脚映射页面设置的 GPIO 引脚需要保持低电平以激活对应模式,而使用默认模式时,所有引脚不能保持低电平。因此,正确使用此插件需要一个两档或三档拨动开关或滑动开关。 + +### 安装 + +安装方法取决于使用拨动开关还是滑动开关。通常情况下,在开关的一侧,将选择引脚连接到设置的 GPIO 引脚。在开关的中心引脚,将其连接到任意 GND 引脚。 + +## 其他备注 + +启用此插件后,将禁用切换 SOCD 覆盖模式的 [快捷键](../hotkeys.mdx),因此通过此插件设置的拨动开关或滑动开关将成为设置 SOCD 覆盖模式的唯一方法。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/tilt-input.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/tilt-input.mdx new file mode 100644 index 0000000..c9a00cd --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/tilt-input.mdx @@ -0,0 +1,45 @@ +--- +title: 倾斜输入 (Tilt Input) +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow analog directional inputs on Left and Right analog joystick at a percentage of maximum magnitude" +--- + +# 倾斜输入 (Tilt Input) + +用途:倾斜输入插件允许用户通过左侧和右侧模拟摇杆发送一定百分比的最大方向输入(例如,在右侧模拟摇杆上发送 65% 的向下-右输入)。 + +![GP2040-CE 配置器 - 倾斜输入插件](../assets/images/gpc-add-ons-tilt.png) + +## 网页配置器选项 + +- `倾斜 1 左 X 轴百分比` - 当 `Tilt 1 Pin` 激活时,左侧模拟摇杆 X 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 1 左 Y 轴百分比` - 当 `Tilt 1 Pin` 激活时,左侧模拟摇杆 Y 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 1 右 X 轴百分比` - 当 `Tilt 1 Pin` 激活时,右侧模拟摇杆 X 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 1 右 Y 轴百分比` - 当 `Tilt 1 Pin` 激活时,右侧模拟摇杆 Y 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 2 左 X 轴百分比` - 当 `Tilt 2 Pin` 激活时,左侧模拟摇杆 X 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 2 左 Y 轴百分比` - 当 `Tilt 2 Pin` 激活时,左侧模拟摇杆 Y 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 2 右 X 轴百分比` - 当 `Tilt 2 Pin` 激活时,右侧模拟摇杆 X 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 2 右 Y 轴百分比` - 当 `Tilt 2 Pin` 激活时,右侧模拟摇杆 Y 轴输入的百分比。(最小值 0,最大值 100) +- `倾斜 SOCD 模式` - 选择默认 SOCD 覆盖模式(回中、后输入优先、先输入优先)。 + +请注意,倾斜输入的引脚需在主 [GPIO 引脚映射](../web-configurator/menu-pages/02-gpio-pin-mapping.mdx) 页面中进行设置。 + +## 硬件 + +### 要求 + +此插件需要额外的按钮或开关,因为它完全禁止将主方向键 (DPad) 设置为左侧或右侧模拟摇杆。 + +### 安装 + +对于每个按钮,将按钮的一侧连接到网页配置器中分配的对应 GPIO 引脚。将按钮的另一侧连接到 GND。 + +## 其他备注 + +- 由于此插件禁止将方向键 (DPad) 设置为左侧或右侧模拟摇杆,使用快捷键 `DPad Left Analog` 和 `DPad Right Analog` 会禁用方向键,而使用 `DPad Digital` 会重新启用方向键。 +- 并非所有倾斜输入的模拟引脚都需要设置,但未设置的引脚将无法使用该输入,除非通过网页配置器重新映射输入。 +- 此外,同时按下 Tilt 1 和 Tilt 2 并输入右侧模拟摇杆方向时,右侧模拟摇杆将作为方向键方向功能使用。 +- 同时按下 Tilt 1 和 Tilt 2 并输入左侧模拟摇杆时,将优先 Tilt 1 并忽略 Tilt 2。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/turbo.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/turbo.mdx new file mode 100644 index 0000000..047b9fb --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/turbo.mdx @@ -0,0 +1,85 @@ +--- +title: 连发 (Turbo) +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to allow hold a button to be held and fast series of button presses and inputs to be sent." +--- + +import InputTable from "../snippets/_input-table.mdx"; + +# 连发 (Turbo) + +用途:此插件用于更改控制行为,使得按住一个按钮时能够快速触发一系列单独的按钮按下操作。 + +通过同时按下某个按键和连发按键,可以启用/禁用该按键的连发模式。开启之后只需单独按下该按键,对应的输入就会以连续的方式重复发送(根据网页配置器中的 `每秒连发次数` 设置)。 + +:::note + +连发模式仅限于游戏控制器上的非方向性输入。 + +::: + +![GP2040-CE 配置器 - Turbo 插件](../assets/images/gpc-add-ons-turbo.png) + +## 网页配置器选项 + +### 通用选项 + +- `Turbo Pin` - 用于连发按钮的 GPIO 引脚,用于切换按钮的连发模式。 +- `Turbo Pin LED` - 用于 Turbo LED 的 GPIO 引脚。 +- `每秒连发次数` - 连发激活时每秒的按钮触发次数。(默认值:15,范围:0-30) +- `连发旋钮 (仅 ADC)` - 用于连发调节旋钮的 GPIO 引脚。 + +:::caution + +`连发旋钮 (仅 ADC)` 必须设置为 RP2040 板上的 ADC 引脚之一(GPIO 26-29)。 + +::: + +### SHMUP 模式 + +![GP2040-CE 配置器 - Turbo SHMUP 模式](../assets/images/gpc-add-ons-turbo-shmup.png) + +- `总是开启连发 1-4` - 即使未启用连发模式,这些游戏控制器输入也会始终发送连发输入(快速、独立的按钮按下信号)。 +- `蓄力按钮 1-4 引脚` - 用于额外按钮的 GPIO 引脚,这些按钮可以按住并无论连发状态如何始终发送一个持续的输入。 +- `蓄力按钮 1-4 分配` - 与各自的 `蓄力按钮 1-4` 按钮相关联的输入。 +- `同时优先模式` - 设置以下两种模式中的优先级: + - `Turbo Priority` - 当同时按下蓄力按钮和启用了连发模式的游戏控制器输入时,应用连发模式行为。 + - `Charge Priority` - 当同时按下蓄力按钮和启用了连发模式的游戏控制器输入时,仅发送蓄力按钮的持续输入(Charge Shot)。 + +:::note + +- 为了使这些选项生效,`连发引脚` 必须设置为某个 GPIO 引脚,且不能禁用(-1)。 +- `蓄力按钮 1-4 引脚` 必须设置为未分配给其他输入的 GPIO 引脚。 + +::: + +以上部分选项使用以下 GP2040 输入标签,用于从游戏控制器映射到 GP2040-CE 的输入。 + + + +### 硬件要求 + +需要额外的按钮用于连发按钮,以及用于每个额外蓄力按钮的按键,最少需要一个按钮,最多支持 4 个按钮。 + +如果需要 Turbo LED,则需要一个 3.3V 的非可寻址非 RGB LED。这种 LED 仅需要 2 条导线(电源和接地)。 + +:::note 3.3V+ 正向电压 LED + +LED 使用的电源来自 GPIO 引脚,该引脚仅能提供 +3.3V 电压。请确保 LED 的正向电压低于 3.3V,否则 LED 将无法点亮。 + +::: + +### 安装 + +对于每个按钮,将按钮的一侧连接到网页配置器中分配的对应 GPIO 引脚。将按钮的另一侧连接到 GND。 + +对于 Turbo LED,将 LED 的一侧连接到网页配置器中分配的 GPIO 引脚。将 LED 的另一侧连接到 GND。 + +## 其他备注 + +当使用 OLED 显示屏时,启用了连发的按钮在被按下时会在内部显示一个额外的圆环或方框,以指示该按钮映射的输入将被游戏控制器反复发送。 + +![GP2040-CE 配置器 - 显示示例 - 启用 Turbo](../assets/images/gpc-display-example-turbo.png) \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/wii-extensions.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/wii-extensions.mdx new file mode 100644 index 0000000..81337d8 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/add-ons/wii-extensions.mdx @@ -0,0 +1,128 @@ +--- +title: Wii 扩展 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Add-on to use various Wii controllers in conjunction with GP2040-CE to send inputs to supported systems" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputTable from "../snippets/_input-table.mdx"; + +# Wii 扩展 + +用途:此插件旨在允许您使用各种 Wii 游戏控制器(例如 Nunchuck、经典 Wii 游戏控制器、吉他、鼓、转盘和太鼓)与 GP2040-CE 配合使用,以支持 GP2040-CE 支持的系统。 + +:::note + +Wii 扩展插件不适用于 Wii 游戏机。 + +::: + +![GP2040-CE 配置器 - Wii 扩展](../assets/images/gpc-add-ons-wii-extensions.png) + +## 网页配置器选项 + +:::info GPIO 引脚分配 + +I2C 的 SDA 和 SCL 引脚及其速度现在在 [`功能配置 > 外围设备映射 - I2C`](../web-configurator/menu-pages/03-peripheral-mapping.mdx#i2c) 中配置。 + +::: + +- `I2C Block` - 要使用的 I2C 块(i2c0 或 i2c1)。 + +### 游戏控制器特定选项 + + + + +![GP2040-CE 配置器 - Wii Nunchuck 设置](../assets/images/gpc-add-ons-wii-extensions-nunchuck.png) + +![GP2040-CE 配置器 - Wii Nunchuck 游戏控制器](../assets/images/wii-extension-controllers/nunchuck.svg) + + + + +:::note + +- 经典游戏控制器支持包括经典、经典 Pro 和 NES/SNES Mini 游戏控制器。 +- 原版经典游戏控制器的 L 和 R 触发器为模拟敏感型,而 Pro 型触发器则不是。 + +::: + +![GP2040-CE 配置器 - Wii 经典游戏控制器设置](../assets/images/gpc-add-ons-wii-extensions-classic.png) + +![GP2040-CE 配置器 - Wii 经典游戏控制器](../assets/images/wii-extension-controllers/classic.svg) + + + + +![GP2040-CE 配置器 - Wii 吉他设置](../assets/images/gpc-add-ons-wii-extensions-guitar.png) + +![GP2040-CE 配置器 - Wii 吉他](../assets/images/wii-extension-controllers/guitar.svg) + + + + +:::note + +由于配件硬件问题,鼓和 DJ 转盘游戏控制器可能需要从 Nunchuk 或经典游戏控制器热插拔后才能使用。 + +::: + +![GP2040-CE 配置器 - Wii 鼓设置](../assets/images/gpc-add-ons-wii-extensions-drums.png) + +![GP2040-CE 配置器 - Wii 鼓](../assets/images/wii-extension-controllers/drums.svg) + + + + +![GP2040-CE 配置器 - Wii 转盘设置](../assets/images/gpc-add-ons-wii-extensions-turntable.png) + +![GP2040-CE 配置器 - Wii 转盘](../assets/images/wii-extension-controllers/turntable.svg) + + + + +![GP2040-CE 配置器 - Wii 太鼓设置](../assets/images/gpc-add-ons-wii-extensions-taiko.png) + +![GP2040-CE 配置器 - Wii 太鼓](../assets/images/wii-extension-controllers/taiko.svg) + + + + +上述每个选项均使用以下 GP2040 输入标签,用于从游戏控制器映射到 GP2040-CE 的输入。 + + + +### 要求 + +此插件需要某种方式将游戏控制器连接到 GP2040-CE 设备的以下引脚。 + +- `PWR` - 3.3V 电源供给(可能也标记为 `+` 或 `VIN`) +- `GND` - 地线(可能也标记为 `-`) +- `SDA` - 串行数据线(可能也标记为 `C`) +- `SCL` - 串行时钟线(可能也标记为 `D`) + +:::note + +市面上有许多可用的扩展板,在线搜索 "Wiichuck Adapter" 会显示许多选项。 + +某些扩展板可能包含一个 3.3V 输出,但此插件不需要该输出即可正常工作。 + +::: + +### 安装 + +根据网页配置器中设置的 GPIO 引脚,将 Wii 游戏控制器/适配器连接到 GP2040-CE 板。 + +- `PWR` - 3.3V 电源供给(可能也标记为 `+` 或 `VIN`) +- `GND` - 地线(可能也标记为 `-`) +- `SDA` - 串行数据线(可能也标记为 `C`) +- `SCL` - 串行时钟线(可能也标记为 `D`) + +## 其他备注 + +无。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Alpha3_DC.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Alpha3_DC.png new file mode 100644 index 0000000..956c21b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Alpha3_DC.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/BentoBox.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/BentoBox.png new file mode 100644 index 0000000..9279e30 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/BentoBox.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/CVS2_DC.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/CVS2_DC.png new file mode 100644 index 0000000..9191b73 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/CVS2_DC.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/CrushCounter-v2-0.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/CrushCounter-v2-0.png new file mode 100644 index 0000000..f842153 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/CrushCounter-v2-0.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-1.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-1.png new file mode 100644 index 0000000..af31f29 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-1.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-2.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-2.png new file mode 100644 index 0000000..a733644 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-2.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-3.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-3.png new file mode 100644 index 0000000..9ef4247 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-3.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-4.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-4.png new file mode 100644 index 0000000..ad13834 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-4.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-5.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-5.png new file mode 100644 index 0000000..207010d Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-5.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-6.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-6.png new file mode 100644 index 0000000..291f43f Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-6.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-7.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-7.png new file mode 100644 index 0000000..bc13904 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/GP2040-CE-7.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/MVC1_DC.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/MVC1_DC.png new file mode 100644 index 0000000..dd9cc42 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/MVC1_DC.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/NewChallenger-1.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/NewChallenger-1.png new file mode 100644 index 0000000..1c934e2 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/NewChallenger-1.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/PlasmaSword_DC.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/PlasmaSword_DC.png new file mode 100644 index 0000000..fa4f950 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/PlasmaSword_DC.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/ProjectJustice_DC.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/ProjectJustice_DC.png new file mode 100644 index 0000000..4d44190 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/ProjectJustice_DC.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Sega-Astro-City.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Sega-Astro-City.png new file mode 100644 index 0000000..8226e01 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Sega-Astro-City.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Street-Fighter.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Street-Fighter.png new file mode 100644 index 0000000..716db78 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/Street-Fighter.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/TheTrain-Logo.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/TheTrain-Logo.png new file mode 100644 index 0000000..5795b60 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/community-splash-screens/TheTrain-Logo.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-dark.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-dark.png new file mode 100644 index 0000000..3e3746e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-dark.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-dimmed.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-dimmed.png new file mode 100644 index 0000000..850ebfe Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-dimmed.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-light.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-light.png new file mode 100644 index 0000000..1494788 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/github-sponsor-light.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gp2040-ce-logo.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gp2040-ce-logo.png new file mode 100644 index 0000000..5b15b2b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gp2040-ce-logo.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ads1219.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ads1219.png new file mode 100644 index 0000000..d02e5ca Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ads1219.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ads1256-spi.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ads1256-spi.png new file mode 100644 index 0000000..b477152 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ads1256-spi.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-analog.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-analog.png new file mode 100644 index 0000000..1d53042 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-analog.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-bootsel-button.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-bootsel-button.png new file mode 100644 index 0000000..1317e35 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-bootsel-button.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-buzzer.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-buzzer.png new file mode 100644 index 0000000..c3ba9da Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-buzzer.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-drv8833-rumble.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-drv8833-rumble.png new file mode 100644 index 0000000..ee9e7ee Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-drv8833-rumble.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-dual-directional.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-dual-directional.png new file mode 100644 index 0000000..640c39b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-dual-directional.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png new file mode 100644 index 0000000..4963624 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-extra-button.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-extra-button.png new file mode 100644 index 0000000..7531c73 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-extra-button.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-focus-mode.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-focus-mode.png new file mode 100644 index 0000000..e4e20bb Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-focus-mode.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-calibrate-advanced.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-calibrate-advanced.png new file mode 100644 index 0000000..103d387 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-calibrate-advanced.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-calibrate.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-calibrate.png new file mode 100644 index 0000000..dfe4757 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-calibrate.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-voltage-table.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-voltage-table.png new file mode 100644 index 0000000..0296a2b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger-voltage-table.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger.png new file mode 100644 index 0000000..d5fa7ab Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-hall-effect-trigger.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-input-history.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-input-history.png new file mode 100644 index 0000000..456be34 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-input-history.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-input-reverse.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-input-reverse.png new file mode 100644 index 0000000..e0a933d Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-input-reverse.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-gamepad-usb-host.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-gamepad-usb-host.png new file mode 100644 index 0000000..29c9103 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-gamepad-usb-host.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png new file mode 100644 index 0000000..4963624 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-host-configuration-wiring-diagram.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-mouse-host-configuration.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-mouse-host-configuration.png new file mode 100644 index 0000000..5d843bf Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-keyboard-mouse-host-configuration.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-onboard-led.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-onboard-led.png new file mode 100644 index 0000000..8d3630a Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-onboard-led.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-pcf8575-io-expander.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-pcf8575-io-expander.png new file mode 100644 index 0000000..ea936e6 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-pcf8575-io-expander.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-player-number.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-player-number.png new file mode 100644 index 0000000..1c223bd Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-player-number.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ps-passthrough.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ps-passthrough.png new file mode 100644 index 0000000..d46151f Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ps-passthrough.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ps4-mode.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ps4-mode.png new file mode 100644 index 0000000..2eaff48 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-ps4-mode.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-reactive-leds.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-reactive-leds.png new file mode 100644 index 0000000..afb42a8 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-reactive-leds.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-rotary-encoders.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-rotary-encoders.png new file mode 100644 index 0000000..402b0b1 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-rotary-encoders.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-snespad-input-pinout.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-snespad-input-pinout.svg new file mode 100644 index 0000000..8b4d7a6 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-snespad-input-pinout.svg @@ -0,0 +1 @@ +1234567 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-snespad-input.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-snespad-input.png new file mode 100644 index 0000000..39ca4f0 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-snespad-input.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-socd-slider-pin-example.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-socd-slider-pin-example.png new file mode 100644 index 0000000..6adf1e7 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-socd-slider-pin-example.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-socd-slider.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-socd-slider.png new file mode 100644 index 0000000..dc73327 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-socd-slider.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-tilt.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-tilt.png new file mode 100644 index 0000000..ad1c610 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-tilt.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-turbo-shmup.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-turbo-shmup.png new file mode 100644 index 0000000..a97a1eb Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-turbo-shmup.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-turbo.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-turbo.png new file mode 100644 index 0000000..080983e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-turbo.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-classic.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-classic.png new file mode 100644 index 0000000..e8e4298 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-classic.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-drums.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-drums.png new file mode 100644 index 0000000..246a7b3 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-drums.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-guitar.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-guitar.png new file mode 100644 index 0000000..506be43 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-guitar.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-nunchuck.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-nunchuck.png new file mode 100644 index 0000000..11d9824 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-nunchuck.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-taiko.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-taiko.png new file mode 100644 index 0000000..b20ec0e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-taiko.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-turntable.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-turntable.png new file mode 100644 index 0000000..8b69f95 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions-turntable.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions.png new file mode 100644 index 0000000..d6ecc65 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-wii-extensions.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-xbox-one-passthrough.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-xbox-one-passthrough.png new file mode 100644 index 0000000..5ecc156 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-add-ons-xbox-one-passthrough.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-backup-and-restore.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-backup-and-restore.png new file mode 100644 index 0000000..921da8f Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-backup-and-restore.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-backup.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-backup.png new file mode 100644 index 0000000..4662f8a Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-backup.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-layout-options.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-layout-options.png new file mode 100644 index 0000000..8171a60 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-layout-options.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-mode-options.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-mode-options.png new file mode 100644 index 0000000..c667fef Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-mode-options.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-screen-options.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-screen-options.png new file mode 100644 index 0000000..404c5d1 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config-screen-options.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config.png new file mode 100644 index 0000000..4068c15 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-config.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-example-turbo.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-example-turbo.png new file mode 100644 index 0000000..7c3f2ee Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-example-turbo.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-example.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-example.png new file mode 100644 index 0000000..63addd6 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-display-example.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-home.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-home.png new file mode 100644 index 0000000..4007e3e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-home.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-label-selection.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-label-selection.png new file mode 100644 index 0000000..e4088c6 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-label-selection.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macro-options.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macro-options.png new file mode 100644 index 0000000..15f828e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macro-options.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros-input-line-advanced.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros-input-line-advanced.png new file mode 100644 index 0000000..247b55a Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros-input-line-advanced.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros-input-line.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros-input-line.png new file mode 100644 index 0000000..f9756e1 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros-input-line.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros.png new file mode 100644 index 0000000..3268c54 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-macros.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu-gamepad.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu-gamepad.png new file mode 100644 index 0000000..eb21843 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu-gamepad.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu-pins.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu-pins.png new file mode 100644 index 0000000..07ae63c Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu-pins.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu.png new file mode 100644 index 0000000..7e3dbf6 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-mini-menu.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-peripheral-mapping.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-peripheral-mapping.png new file mode 100644 index 0000000..e537557 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-peripheral-mapping.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping-map-buttons-prompt.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping-map-buttons-prompt.png new file mode 100644 index 0000000..f13e52b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping-map-buttons-prompt.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping-map-buttons.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping-map-buttons.png new file mode 100644 index 0000000..2694cf8 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping-map-buttons.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping.png new file mode 100644 index 0000000..ccf3c05 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pin-mapping.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pled-pwm.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pled-pwm.png new file mode 100644 index 0000000..a043304 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pled-pwm.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pled-rgb.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pled-rgb.png new file mode 100644 index 0000000..5bf99cf Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-pled-rgb.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-reset-settings.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-reset-settings.png new file mode 100644 index 0000000..3f3f551 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-reset-settings.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-restore.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-restore.png new file mode 100644 index 0000000..2cab69e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-restore.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-case-leds-settings.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-case-leds-settings.png new file mode 100644 index 0000000..13636fc Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-case-leds-settings.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-case-leds.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-case-leds.png new file mode 100644 index 0000000..5fad13d Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-case-leds.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-button-order.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-button-order.png new file mode 100644 index 0000000..8ca7058 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-button-order.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-config.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-config.png new file mode 100644 index 0000000..e4d4d9a Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-config.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-custom-theme.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-custom-theme.png new file mode 100644 index 0000000..9d54d81 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-rgb-led-custom-theme.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-boot-input-modes.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-boot-input-modes.png new file mode 100644 index 0000000..14fcdbf Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-boot-input-modes.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-gamepad.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-gamepad.png new file mode 100644 index 0000000..d589c6e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-gamepad.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-hotkey.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-hotkey.png new file mode 100644 index 0000000..b98338d Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-hotkey.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-input-mode.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-input-mode.png new file mode 100644 index 0000000..b1d7a1d Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-input-mode.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-keyboard-mapping.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-keyboard-mapping.png new file mode 100644 index 0000000..78c96fe Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-keyboard-mapping.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4-host-usb.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4-host-usb.png new file mode 100644 index 0000000..f18c828 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4-host-usb.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4-upload-key-files.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4-upload-key-files.png new file mode 100644 index 0000000..2f1d33e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4-upload-key-files.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4.png new file mode 100644 index 0000000..4e2a2c8 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps4.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps5-host-usb.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps5-host-usb.png new file mode 100644 index 0000000..9e2d319 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps5-host-usb.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps5.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps5.png new file mode 100644 index 0000000..9e2d319 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-ps5.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-usboverride.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-usboverride.png new file mode 100644 index 0000000..47b6a6f Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-usboverride.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-xbox-one.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-xbox-one.png new file mode 100644 index 0000000..b643c2a Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings-xbox-one.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings.png new file mode 100644 index 0000000..9793dc3 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/gpc-settings.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/_base-template.xcf b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/_base-template.xcf new file mode 100644 index 0000000..ec84e3e Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/_base-template.xcf differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/fightboard.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/fightboard.png new file mode 100644 index 0000000..26939c5 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/fightboard.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-a.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-a.png new file mode 100644 index 0000000..7ee2103 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-a.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-b.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-b.png new file mode 100644 index 0000000..4cf0d54 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-b.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-c.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-c.png new file mode 100644 index 0000000..5ef9c76 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-c.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-d.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-d.png new file mode 100644 index 0000000..4dd0ca3 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-d.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-e.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-e.png new file mode 100644 index 0000000..9b737ad Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/guilty-gear-type-e.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-curved.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-curved.png new file mode 100644 index 0000000..6cc43de Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-curved.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-modern.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-modern.png new file mode 100644 index 0000000..771577c Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-modern.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-straight.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-straight.png new file mode 100644 index 0000000..dee2730 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/neogeo-straight.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/playstation-all.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/playstation-all.png new file mode 100644 index 0000000..14f6942 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/playstation-all.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/playstation.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/playstation.png new file mode 100644 index 0000000..ffd6492 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/playstation.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/six-button-fighter-plus.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/six-button-fighter-plus.png new file mode 100644 index 0000000..393fe9c Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/six-button-fighter-plus.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/six-button-fighter.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/six-button-fighter.png new file mode 100644 index 0000000..8ecf6e2 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/six-button-fighter.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/static-rainbow.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/static-rainbow.png new file mode 100644 index 0000000..9c9f2c9 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/static-rainbow.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/street-fighter-2.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/street-fighter-2.png new file mode 100644 index 0000000..9ae15ce Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/street-fighter-2.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/super-famicom-all.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/super-famicom-all.png new file mode 100644 index 0000000..0d49acb Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/super-famicom-all.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/super-famicom.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/super-famicom.png new file mode 100644 index 0000000..f76b0a6 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/super-famicom.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/tekken.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/tekken.png new file mode 100644 index 0000000..34f2467 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/tekken.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/xbox-all.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/xbox-all.png new file mode 100644 index 0000000..15abaa9 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/xbox-all.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/xbox.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/xbox.png new file mode 100644 index 0000000..7bb7442 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/led-themes/xbox.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/classic.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/classic.svg new file mode 100644 index 0000000..bf75727 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/classic.svg @@ -0,0 +1,396 @@ + +LSRSURDLYAXB+Home-RZRZLLRZRZLL diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/drums.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/drums.svg new file mode 100644 index 0000000..bc7c755 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/drums.svg @@ -0,0 +1 @@ +JSJS--++PedalPedal \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/guitar.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/guitar.svg new file mode 100644 index 0000000..1e05670 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/guitar.svg @@ -0,0 +1 @@ ++-JSWhammyBarWhammyBarPedalPedal \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/nunchuck.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/nunchuck.svg new file mode 100644 index 0000000..dcca5db --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/nunchuck.svg @@ -0,0 +1 @@ +ZCAnalogStickZCAnalogStick \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/taiko.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/taiko.svg new file mode 100644 index 0000000..0a6eaf1 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/taiko.svg @@ -0,0 +1 @@ +DONKATDONKAT \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/turntable.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/turntable.svg new file mode 100644 index 0000000..6944226 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/images/wii-extension-controllers/turntable.svg @@ -0,0 +1 @@ +-+EUEFFECTJSFADER \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/AdafruitKB2040_Pinout.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/AdafruitKB2040_Pinout.svg new file mode 100644 index 0000000..d770f8b --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/AdafruitKB2040_Pinout.svg @@ -0,0 +1,8105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A1GP00A2GP01B2GP02B1GP03B4GP04B3GP05GP06GP07R2GP08L2GP09R1GP10GP11R3GP12L3GP13ONBOARD LEDGP17S2GP18L1GP19S1GP20LEFTGP26UPGP27RIGHTGP28DOWNGP29VBUSGNDGNDGNDGND3V3(OUT)3V3(OUT)USB_DPUSB_DMRESETRESET + + Keeb 2040 rev B_breadboard.svg + + Fritzing breadboard generated by brd2svg + + + + + + + + D+ + + + + + + + + + + + + + T + + + + + + + + + RX + + + + + GND + + + + + + + + + 2 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 4 + + + + + + + + + + + + + 5 + + + + + + + + + + + + + 6 + + + + + + + + + + + + + 7 + + + + + + + + + 8 + + + + + 9 + + + + + MI + + + + + A0 + + + + + A1 + + + + + A2 + + + + + A3 + + + + + 3V + + + + + RST + + + + + G + + + + + RAW + + + + + D- + + + + + SCK + + + + + BOOT + + + + + + + + + RST + + + + + + + + + I2C + + + + + KB2040 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Chained_button_schematic.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Chained_button_schematic.png new file mode 100644 index 0000000..3e0c8f8 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Chained_button_schematic.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/LEDs_schematic.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/LEDs_schematic.png new file mode 100644 index 0000000..9e02b12 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/LEDs_schematic.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/RaspberryPiPico_Pinout.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/RaspberryPiPico_Pinout.svg new file mode 100644 index 0000000..83b5987 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/RaspberryPiPico_Pinout.svg @@ -0,0 +1,1462 @@ + + + + + + + + + + + + + SDA + + + + + + + + GP00 + + + + + + + + + + + + SCL + + + + + + + + GP01 + + + + + + + + + + UP + + + + + + + + GP02 + + + + + + + + + + DOWN + + + + + + + + GP03 + + + + + + + + + + RIGHT + + + + + + + + GP04 + + + + + + + + + + LEFT + + + + + + + + GP05 + + + + + + + + + + B1 + + + + + + + + GP06 + + + + + + + + + + B2 + + + + + + + + GP07 + + + + + + + + + + R2 + + + + + + + + GP08 + + + + + + + + + + L2 + + + + + + + + GP09 + + + + + + + + + + B3 + + + + + + + + GP10 + + + + + + + + + + B4 + + + + + + + + GP11 + + + + + + + + + + R1 + + + + + + + + GP12 + + + + + + + + + + L1 + + + + + + + + GP13 + + + + + + + + + + + + + + + GP14 + + + + + + + + + + + + + + + GP15 + + + + + + + + + + S1 + + + + + + GP16 + + + + + + + + + + S2 + + + + + + GP17 + + + + + + + + + + L3 + + + + + + GP18 + + + + + + + + + + R3 + + + + + + GP19 + + + + + + + + + + A1 + + + + + + GP20 + + + + + + + + + + A2 + + + + + + GP21 + + + + + + + + + + + TURBO + + + + + T LED + + + + + GP22 + + + + + + + + + + + + + GP26 + + + + + + + + + + + + + + + GP27 + + + + + + + + + + + GP28 + + + + + + + + + + + GND + + + + + + + + + + + GND + + + + + + + + + + + GND + + + + + + + + + + + GND + + + + + + + + + + + GND + + + + + + + + + + + GND + + + + + + + + + + + GND + + + + + + + + + + + ADC_GND + + + + + + + + + + + 3V3_3N + + + + + + + + + + + RUN + + + + + + + + + + + VSYS + + + + + + + + + + + 3V3(OUT) + + + + + + + + + + + ADC_VREF + + + + + + + + + + + VBUS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/SeeedXIAORP2040_Pinout.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/SeeedXIAORP2040_Pinout.png new file mode 100644 index 0000000..d768c2b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/SeeedXIAORP2040_Pinout.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Separate_buttons_schematic.png b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Separate_buttons_schematic.png new file mode 100644 index 0000000..c6e1a99 Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Separate_buttons_schematic.png differ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/SparkFunProMicroRP2040_Pinout.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/SparkFunProMicroRP2040_Pinout.svg new file mode 100644 index 0000000..3f2d703 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/SparkFunProMicroRP2040_Pinout.svg @@ -0,0 +1,2437 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B3GP00B4GP01B2GP02B1GP03L1GP04GP05L2GP06A1GP07A2GP08GP09GP16GP17S2GP20R2GP21R1GP22S1GP23UPGP26DOWNGP27LEFTGP28RIGHTGP29VBUSGNDGNDGNDGND3V3(OUT)3V3(OUT)BOOTRESETRESET diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Template_Pinout.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Template_Pinout.svg new file mode 100644 index 0000000..664a127 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/Template_Pinout.svg @@ -0,0 +1,3157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GP00GP00GP00GP01GP01GP01GP02GP02GP02GP03GP03GP03GP04GP04GP04GP05GP05GP05GP06GP06GP06GP07GP07GP07GP08GP08GP08GP09GP09GP09GP10GP10GP10GP11GP11GP11GP12GP12GP12GP13GP13GP13GP14GP14GP14GP15GP15GP15GP16GP16GP16GP17GP17GP17GP18GP18GP18GP19GP19GP19GP20GP20GP20GP21GP21GP21GP22GP22GP22GP23GP23GP23GP24GP24GP24GP25GP25GP25GP26GP26GP26GP27GP27GP27GP28GP28GP28GP29GP29GP29VBUSGNDADC_GND3V3_3NRUNVSYS3V3(OUT)ADC_VREFBOOTUSB_DPUSB_DMRESETSWCLKSWDIO diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/WaveshareRP2040Zero_Pinout.svg b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/WaveshareRP2040Zero_Pinout.svg new file mode 100644 index 0000000..a7c3c54 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/assets/wiring/WaveshareRP2040Zero_Pinout.svg @@ -0,0 +1,2870 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +S1GP00S2GP01UPGP02DOWNGP03RIGHTGP04LEFTGP05B1GP06B2GP07R2GP08L2GP09B3GP10B4GP11R1GP12L1GP13A1GP14A2GP15ONBOARD LEDGP16GP17GP18GP19GP20GP21GP22GP23GP24GP25L3GP26R3GP27GP28GP29VBUSGNDGND3V3(OUT) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/rgb-led-wiring.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/rgb-led-wiring.mdx new file mode 100644 index 0000000..4572d12 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/rgb-led-wiring.mdx @@ -0,0 +1,12 @@ +--- +title: RGB LED Wiring +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Instructions on installing RGB LEDs onto your GP2040-CE controllers. May require additional wiring, connectors, solder, or circuit boards." +--- + +# Document Title + +CONTENT diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/usb-host.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/usb-host.mdx new file mode 100644 index 0000000..bfaa1de --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/usb-host.mdx @@ -0,0 +1,33 @@ +--- +title: USB 主机端口安装 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Instructions on installing a USB Host port onto your GP2040-CE controllers. May require additional wiring, connectors, solder, or circuit boards." +--- + +import InstallUSBHostPort from "../snippets/_add-usb-host-port.mdx"; + +# USB 主机端口安装 + +:::info + +具体步骤取决于您使用的 RP2040 板的类型,可能会有很大差异。一些板可能需要焊接额外的导线并将外接板连接到您的主板上。其他板可能已预装主机端口,且无需额外的硬件操作。 + +::: + +对于所有 RP2040 板,至少需要满足以下要求: + +- 两个连续的 GPIO 引脚(例如,`GPIO 引脚 X` 和 `GPIO 引脚 X+1`),并且这些引脚**不能**与任何电容器或大型非终端电阻串联/并联连接。 +- 一个 5V 引脚(例如,`VBUS`、`VCC`、`+5V` 等)。 +- 一个地线引脚(例如,`GND`)。 + +您可能还需要以下额外硬件来完成安装,具体需求视您的主板配置而定: + +- 烙铁和焊锡 +- 用于连接到 USB A 端口的导线 +- 用于连接到 GP2040-CE 板的线端接器 +- USB 主机板扩展板或额外的 USB 线缆 + + diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/wiring.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/wiring.mdx new file mode 100644 index 0000000..4ad0cf8 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/controller-build/wiring.mdx @@ -0,0 +1,71 @@ +--- +title: 芯片接线 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Default pinouts for precompiled, common, commercially available microcontroller boards" +--- + +# 接线指南 + +:::caution + +使用这些微控制器板的自定义构建可能会由于供应商不同而具有与下文列出内容不同的 GPIO 引脚映射。 +通过网页配置器重置可能导致 GPIO 引脚映射错误,建议您先与供应商沟通。 + +::: + +以下是 GP2040-CE 支持的微控制器板的引脚分布图,这些板已预编译并可通过 [下载](/downloads) 获取。 + +这些引脚分布图并不涵盖所有情况,您的 RP2040 板可能具有不同的引脚分布,具体取决于板制造商的设计。请务必谨慎,不要假设您的板上的引脚与下文列出的引脚一致。 + +:::note 重新配置 GPIO 引脚分布 + +这些引脚分布并非固定不变。您可以通过 [网页配置器 - GPIO 引脚映射](../web-configurator/menu-pages/02-gpio-pin-mapping.mdx) 根据需要更改引脚分布。 + +::: + +## 树莓派 Pico + +:::info 替代的 Pico 板及其克隆版本 + +树莓派 Pico 的引脚分布同样适用于具有相同外形和引脚分布的克隆板,例如 Pimironi Pico LiPo 和 Waveshare RP2040-Plus。 + +::: + +![树莓派 Pico 引脚分布图](../assets/wiring/RaspberryPiPico_Pinout.svg) + +## SparkFun Pro Micro - RP2040 + +![SparkFun Pro Micro - RP2040 引脚分布图](../assets/wiring/SparkFunProMicroRP2040_Pinout.svg) + +## Waveshare RP2040-Zero + +![Waveshare RP2040-Zero 引脚分布图](../assets/wiring/WaveshareRP2040Zero_Pinout.svg) + +## Adafruit KB2040 + +![Adafruit KB2040 引脚分布图](../assets/wiring/AdafruitKB2040_Pinout.svg) + +## Seeed XIAO RP2040 + +![Seeed XIAO RP2040 引脚分布图](../assets/wiring/SeeedXIAORP2040_Pinout.png) + +# 按键 + +GP2040-CE 会将输入 GPIO 引脚配置为上拉模式,当按键按下时,引脚应被短接到地(GND)。 + +您可以为每个按键使用两根导线进行连接(一根接 GPIO 引脚,另一根接地): + +![按键分别连接到 GPIO 和地](../assets/wiring/Separate_buttons_schematic.png) + +也可以将地线在按键之间串联,例如将两根导线同时压接到一个 FASTON 端子上,或将两根导线焊接到同一个按键引脚上。每个按键的另一个触点必须连接到各自独立的 GPIO 引脚: + +![使用串联地线连接的按键](../assets/wiring/Chained_button_schematic.png) + +# PWM LED + +PWM 玩家 LED 引脚的配置方式类似:引脚在激活时短接到地,其他时候则被上拉。这意味着 LED 的阳极必须连接到微控制器的 +3.3V 输出,而每个阴极分别连接到对应的 GPIO 引脚,这种连接方式称为共阳极。电路中必须串入限流电阻以保护 GPIO 引脚;如不确定阻值,可使用在线计算器进行计算。最大安全电流约为 20mA。 + +![如何将 LED 和按键连接到 GPIO](../assets/wiring/LEDs_schematic.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-console-compatibility.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-console-compatibility.mdx new file mode 100644 index 0000000..99015ba --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-console-compatibility.mdx @@ -0,0 +1,276 @@ +--- +title: 主机兼容性 +# tags: +# - +pagination_next: null +pagination_prev: null +toc_min_heading_level: 2 +toc_max_heading_level: 4 +description: "FAQ related to Console Compatibility. Now supports Playstation 4, Playstation 5, Xbox One, Xbox Series S, and Xbox Series S" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# FAQ: 主机兼容性 + +GP2040-CE 支持多种主机,以下列出关于主机兼容性的常见问题。 + +## 通用问题 + +### 使用主机 USB 认证功能(用于 PS4、PS5 和 Xbox One)是否会增加延迟? + +只要主机 USB 认证正确配置且通过认证的设备正确插入游戏控制器,就不会增加延迟。通过认证的设备仅用于认证,不处理输入,输入由 GP2040-CE 固件直接处理。 + +### 如何为 PS4、PS5 和 Xbox One 输入模式连接通过认证的设备? + +在使用 PS4、PS5 和 Xbox One 输入模式的情况下,通过转换器或适配器将设备直接插入游戏控制器的 USB 主机端口,而不是将其他设备连接到转换器/适配器。 + +```mermaid +graph LR +转换器/适配器/加密狗 -- 游戏控制器上的
USB 接口 --> 游戏控制器([游戏控制器]) -- 主机上的
USB接口 --> 主机{{主机}} +``` + +
+ +:::caution 不正确的通过认证设备连接方式 + +许多用户错误地将游戏控制器插入转换器/适配器,然后再将转换器/适配器插入主机。这种连接方式并非通过认证的预期用法,会导致转换器/适配器处理输入从而增加延迟。 + +请勿按如下方式进行连接: + +```mermaid +graph LR +游戏控制器([游戏控制器]) -- 转换器上的
USB接口 --> 转换器/适配器/加密狗 -- 主机上的
USB接口 --> 主机{{主机}} +``` + +::: + +## PlayStation + +### 为什么我的游戏控制器在 PS4 或 PS5 上使用一段时间后不再响应? + +PS4 和 PS5 使用认证机制确保仅限授权游戏控制器在主机上使用。如果设备未实现该认证机制,游戏控制器将在 8 分钟后超时。 + +在 PC 上使用 PS4 输入模式则不会出现超时,不过建议在 PC 上使用 XInput 模式以获得最佳兼容性。 + +### 什么是 8 分钟超时? + +8 分钟超时机制如下: + +1. 将游戏控制器插入 PS4/5。 +2. 按下 PS 按钮初始化游戏控制器。 +3. 大约 8 分钟后游戏。 +4. 由于认证失败,主机拒绝游戏控制器。 +5. 用户拔下停止响应的游戏控制器。 +6. 返回第 1 步并重复上述过程。 + +### 如何避免 8 分钟超时? + +GP2040-CE 提供多种方法避免 8 分钟超时。建议根据是否在 PS4 或 PS5 上使用游戏控制器选择对应的方法。 + +- 对于 PS4,可使用 [PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 或 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置)。 +- 对于 PS5,只能使用 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置)。 + +### 如何让我的 GP2040-CE 设备在 PS4 或 PS5 上工作? + +- **PS4**:需要使用 [PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 或 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置)。 +- **PS5**:不能使用 [PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置),必须使用 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置)。 + +### 什么是 PS4 输入模式? + +PS4 输入模式是一种允许 GP2040-CE 与 PS4 主机兼容的输入模式。可以通过上传密钥文件或使用带通过认证设备的 USB 主机端口来绕过 8 分钟超时。 + + + + + +- `私钥 (PEM)` - 选择您的 PEM 文件。 +- `序列号 (16 字节十六进制 ASCII)` - 选择您的序列号文件。 +- `签名 (256 字节二进制)` - 选择您的签名文件。 + +此功能基于另一开源固件项目 [Passing Link](https://github.com/passinglink/passinglink) 的努力构建。Passing Link 项目团队与 GP2040-CE 无关联,但感谢他们的工作和共享的信息,使我们得以为用户提供这一高需求功能。 + +更多信息请参阅文档中 `Web Configurator > Settings` 部分的 [PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置)。 + + + + + +:::note 需要额外硬件 + +- [USB 主机端口](../controller-build/usb-host.mdx) +- PS4/PS5 认证设备 + +::: + +为使用此设置,需要在 [网页配置器 > 外围设备映射 > USB 主机](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-主机) 中配置 USB 外围设备。 + +配置完成后,将加密狗、转换器,或已认证的 PS4 游戏控制器插入 GP2040-CE 设备上的 USB A 端口。 + + + + +#### 如何获取 PS4 输入模式所需的密钥和文件(上传密钥文件)? + +GP2040-CE 项目**不会**提供**任何**关于获取这些密钥和文件的信息。 + +:::danger + +**请勿通过任何联系方式(例如社交媒体、直接消息、Github 问题、GP2040-CE Discord)寻求帮助,否则将被永久黑名单/封禁。** + +::: + +### 什么是 PS5 输入模式? + +PS5 输入模式是一种通过兼容的游戏控制器或加密狗进行认证,从而令 GP2040-CE 与 PS4 或 PS5 主机兼容的输入模式。 + + + + + +:::note 需要额外硬件 + +- [USB 主机端口](../controller-build/usb-host.mdx) +- PS4/PS5 认证设备 + +::: + +为使用此设置,需要在 [网页配置器 > 外围设备映射 > USB 主机](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-主机) 中配置 USB 外围设备。 + +配置完成后,将加密狗、转换器,或已认证的 PS4 游戏控制器插入 GP2040-CE 设备上的 USB A 端口。 + + + + +更多信息,请参考文档中 `网页配置器 - 设置` 部分的 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置)。 + +#### 在 PS5 和 PS4 输入模式下,我应使用什么认证设备? + +:::note + +PS4 和 PS5 共享设备列表,因为游戏控制器认证为已授权的 PS4 游戏控制器。如果适用于 PS5,那么也适用于 PS4。 + +::: + +以下设备适用于 PS5 并且支持通过认证。这些设备搭载 `NXP7105` 芯片,可与 PS5 主机认证: + +- [MagicBoots FPS Adapter Joystick Converter for PS4 v1.1](https://www.mayflash.com/product/MAGPS4.html) +- [N5 for PXN Game Steering Wheel](https://pxn-game.com/products/n5-for-pxn-game-steering-wheel) +- 授权的 PS4 街机摇杆 + +此功能不适用于所有游戏,但常用于格斗游戏和赛车模拟游戏。 + +:::caution 不兼容的游戏控制器 + +以下游戏控制器无法通过 PS4 和 PS5 输入模式识别: + +- DualShock 4 +- DualSense +- DualSense Edge +- 其他授权 PS5 游戏控制器 + +::: + +#### 如何验证 PS4 或 PS5 输入模式是否正常工作? + +如果使用 OLED 显示屏: + +- **PS4 输入模式**:设备成功通过 PS4 主机认证后,显示的输入模式将从 `PS4` 变为 `PS4:AS`。 +- **PS5 输入模式**:设备成功通过 PS5 主机认证后,显示的输入模式将从 `PS5` 变为 `PS5:AS`。 + +通常的选择是将游戏控制器插入 PS4 或 PS5,等待 8 分钟,验证游戏控制器是否仍然响应。 + +:::info + +对于上述的 MagicBoots 和 N5,启动时加密狗上的指示灯应闪烁一会,之后保持常亮。如果灯常亮,那么游戏控制器应该可以正常兼容 PS5 并避免超时。 + +::: + +#### 插入游戏控制器后可否移除 PS4/PS5 认证设备? + +PlayStation 主机每 30 秒左右重复发送认证请求。如果请求失败(即未插入通过认证设备),约 8 分钟后游戏控制器将停止响应。一旦发生这种情况,只能通过重置游戏控制器或重新插拔游戏控制器恢复。 + +## Xbox 360 + +### 如何让我的 GP2040-CE 设备在 Xbox 360 上工作? + +为了实现 Xbox 360 的兼容性,您需要使用 [XInput](../web-configurator/menu-pages/01-settings.mdx)。当连接适配的 Xbox 360 加密狗时,XInput 模式会自动切换到 Xbox 360 模式。 + +### 什么是 Xbox 360 输入模式? + +通过 XInput 的 Xbox 360 模式,GP2040-CE 可以实现对 Xbox 360 的兼容性。 + +欲了解更多信息,请参阅文档中 “Web Configurator - Add-ons” 部分的 [Xbox 360 输入模式](../web-configurator/menu-pages/01-settings.mdx)。 + +--- + +## Xbox One、Xbox Series S 和 Xbox Series X + +### 如何让我的 GP2040-CE 设备在 Xbox One、Xbox Series S 或 Xbox Series X 上工作? + +为了实现 Xbox One、Xbox Series S 或 Xbox Series X 的兼容性,您需要使用 [Xbox One 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-xbox-one-设置)。 + +### 什么是 Xbox One 输入模式? + +:::caution 需要额外硬件 + +- [USB 主机端口](../controller-build/usb-host.mdx) +- Xbox One 验证设备 + +::: + +Xbox One 输入模式允许 GP2040-CE 通过兼容的加密狗完成认证,从而实现对 Xbox One、Xbox Series S 和 Xbox Series X 的兼容性。 + +欲了解更多信息,请参阅文档中 “Web Configurator - Add-ons” 部分的 [Xbox One 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-xbox-one-设置)。 + +### 哪种游戏控制器或加密狗可用于 Xbox One 输入模式? + +以下设备可用于 Xbox One 输入模式: + +- [MagicBoots FPS Adapter Joystick Converter for Xbox One](https://www.mayflash.com/product/MAGONE.html) +- [Magic-X Wireless Bluetooth USB Adapter](https://www.mayflash.com/product/magic_x.html) + +由于您的体验和购买的产品可能不同,GP2040-CE 不会提供除这些已知设备以外的其他具体建议。 + +:::caution Xbox One 游戏控制器 + +Xbox 无线控制器、Xbox One 精英手柄和其他授权的 Xbox One 游戏控制器无法与此插件兼容。 + +::: + +### 如何判断 Xbox One 输入模式插件是否正常工作? + +由于需要使用多种设备进行传递认证,因此无法在不将游戏控制器连接到主机并尝试使用之前,确认输入模式是否正常工作。 + +对于上述的 MagicBoots 加密狗,该加密狗上有一个指示灯。启动时,指示灯会闪烁,然后在片刻后变为常亮。如果指示灯亮起且保持常亮,您的游戏控制器**应该**是兼容的,您可以正常使用游戏控制器。 + +对于上述的 Magic-X 加密狗,该设备上的指示灯会持续闪烁,而不像 MagicBoots 加密狗那样保持常亮。 + +### 插入游戏控制器后,我可以移除 Xbox One 验证设备吗? + +Xbox One、Xbox Series S 和 Xbox Series X 主机在游戏控制器插入主机时,仅会进行一次认证。一旦完成认证,传递认证设备可以移除。但建议始终将设备保持连接状态。 + +--- + +## 实验性 USB 集线器支持 + +从 v0.7.10 开始,GP2040-CE 现在包括对 USB 集线器的实验性支持,允许同时连接多个加密狗和键盘。但请注意以下警告。 + +:::caution 并非所有 USB 集线器均被支持 + +请注意,USB 集线器支持仍在实验阶段,因此我们无法提供已知良好 USB 集线器的列表。 + +::: + +:::caution 注意功耗 + +USB 集线器和多个连接的 USB 加密狗可能会显著增加整体配置的功耗。 + +::: + +:::caution USB 集线器支持与 RP2040 高级扩展板 + +通过测试,我们发现如果您计划使用 USB 集线器,建议在 RP2040 高级扩展板上通过网页配置器禁用 RGB LED。可以通过将 GPIO 引脚改为 `-1` 并保存来禁用 RGB LED。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-general.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-general.mdx new file mode 100644 index 0000000..8ddd8d4 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-general.mdx @@ -0,0 +1,107 @@ +--- +title: 常见问题解答 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "General FAQ related to the GP2040-CE project" +--- + +# 常见问题解答 + +## 常见问题 + +### **我应该使用哪种输入模式?** + +这取决于您将使用的平台: + +- 在 PC 游戏和第三方游戏机适配器中,**优先使用 `XInput 模式`**。 +- 在 Xbox One S/X 或 Xbox Series X/S 上,使用 **`Xbox One 模式`**(需要使用认证设备)。 +- 在 PS3 或支持旧游戏控制器的 PS4 游戏中,使用 **`PS3 模式`**。 +- 在 PS4 或 PS5 的 PS4 游戏中,使用 **`PS4 模式`**。 +- 在 PS5 上支持旧游戏控制器的游戏中,使用 **`PS5 模式`**(需要使用认证设备)。 +- 在 Nintendo Switch 上使用 **`Switch 模式`**。 +- 用于 MAME 街机、PC 音乐游戏等,使用 **`键盘模式`**。 + +如果您配置了 USB 主机端口、启用了 Passthrough,并拥有适当的认证设备,您可以在以下情况中使用 GP2040-CE 游戏控制器: + +- **PS5 主机上支持“分类”控制器(如街机摇杆、赛车方向盘、飞行模拟摇杆等)的 PS5 游戏**:使用 [`PS5 输入模式`](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置)。 +- **Xbox One 和 Xbox Series X|S 游戏**:使用 [`Xbox One 输入模式`](../web-configurator/menu-pages/01-settings.mdx#额外的-xbox-one-设置)。 + +对于经典或迷你游戏主机,可以使用以下额外的 USB 输入模式: + +- `Sega Genesis/MegaDrive Mini` +- `NEOGEO Mini` +- `PC Engine/Turbografx 16 Mini` +- `EGRET II Mini` +- `ASTROCITY Mini` +- `PlayStation Classic` + +--- + +### **GP2040-CE 是否支持 PS5、Xbox One 或 Xbox Series 主机?** + +这些游戏机实现了防止未经授权的外围设备使用的安全措施。而破解或绕过此安全措施可能在某些地区不合法。以下是当前支持方式: + +1. 如果能够找到用户友好且完全合法的实现方法,[PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 的实现可能会被进一步扩展支持。 + +2. **当前支持方式:** + - **PS5**:仅通过 passthrough 认证支持,具体见 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置)。 + - **Xbox One 和 Xbox Series 主机**:仅通过 passthrough 认证支持,具体见 [Xbox One 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-xbox-one-设置)。 + +--- + +### **是否可以在同一系统上使用多个 GP2040-CE 游戏控制器?** + +可以!每个 GP2040-CE 板都会被系统识别为独立的游戏控制器。不过需要注意: + +- **只运行一个游戏控制器的嵌入式网页配置器**。不能同时运行多个。 +- 如果您将 GP2040-CE 的板用在街机设备中,请参考 [系统设置](../web-configurator/menu-pages/01-settings.mdx) 以更改高级 USB 覆盖设置(如唯一的 XInput 和 USB HID 设备配置)。 + +--- + +### **GP2040-CE 真的可以实现低于 1ms 的输入延迟吗?** + +是的!如果您的平台支持 1000 Hz 的 USB 轮询,则输入延迟会低于 **1 毫秒**。 + +- 默认情况下,GP2040-CE 的所有模式都配置为 1000 Hz / 1 ms 轮询。 +- 某些系统可能会覆盖或忽略游戏控制器请求的轮询速率。不过可以确认 1000 Hz 的轮询速度在 PC 和 MiSTer 上有效。 +- 即使您的平台不支持高速 USB 轮询,GP2040-CE 仍然会以目标系统允许的最快速度读取和处理您的输入。 + +--- + +### **诸如 RGB LED、玩家 LED 和 OLED 显示屏等插件是否会影响性能?** + +不会!RP2040 处理器拥有两个核心: + +- GP2040-CE **专门利用一个核心处理玩家输入的读取、处理和发送任务**。 +- 所有插件(例如 LED 和显示屏)都运行在第二核心上。 + +无论功能多么复杂,GP2040-CE 都不会引入额外的输入延迟。 + +--- + +### **为什么按键会有奇怪的标签,比如 B3、A1、S2 等?** + +GP2040-CE 使用了一种通用按键布局系统,类似于传统的 PlayStation 游戏控制器布局,并添加了一些额外的按键: + +- 4 个手柄按键:**B1 - B4** +- 4 个肩键:**L1, L2, R1, R2** +- 选择键与开始键:**S1, S2** +- 两个摇杆按键:**L3, R3** +- 两个辅助按键:**A1, A2**(如 Xbox 键、PS 键、触控板键、Home、Capture 等)。 + +GP2040-CE 的文档和网页配置器都提供了一个下拉菜单,您可以将按键标签更改为更熟悉的游戏控制器布局。有关按键映射的详细信息,请参阅 [GP2040-CE 使用文档](../usage.mdx#按键)。 + +--- + +## 技术问题 + +### **内置网页配置器是如何实现的?** + +没有任何魔法,只是结合了一些很酷的库与工具: + +- `React` 和 `Bootstrap` 构建的单页 Web 应用程序嵌入在 GP2040-CE 固件中。 +- `TinyUSB` 库提供通过 RNDIS 的虚拟网络连接。 +- `lwIP` 库实现了一个 HTTP 服务器,用于服务内嵌的 React 应用程序和网页配置器 API。 +- `ArduinoJson` 库用于序列化和反序列化 Web API 请求。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-troubleshooting.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-troubleshooting.mdx new file mode 100644 index 0000000..90bc159 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/faq/faq-troubleshooting.mdx @@ -0,0 +1,190 @@ +--- +title: 排查故障 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "FAQ related to user-side troubleshooting of common issues" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import HotkeyNote from "../snippets/_hotkey-note.mdx"; + +Select the button labels to be displayed in the usage guide: + + + +## 输入问题 + +### **为什么我的按键顺序不对?** + +可能有以下几种原因: + +#### **1. Steam 中的映射不正确** + +检查 Steam 中的游戏控制器设置是否正确,包括全局设置和每个游戏的设置。有关解决此问题的更多信息,请参阅 [Steam 支持](https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_players)。 + +#### **2. 输入模式不正确** + +确认是否使用了正确的输入模式,不同的模式可能会更改输入映射(例如 Switch 模式与 XInput 模式,PS3/PS4 等)。有关更改输入模式的更多信息,请参阅 [GP2040-CE 使用指南](../usage.mdx#输入模式)。 + +#### **3. 按键接线错误** + +检查您的按键是否根据游戏控制器主板供应商提供的 GPIO 引脚映射正确连接到游戏控制器主板。 + +#### **4. 固件不正确** + +固件是基于特定 GPIO 引脚配置而构建的,如果固件的预期配置与您的配置不匹配,可能会导致问题。您可以在 [网页配置器](../web-configurator/menu-pages/02-gpio-pin-mapping.mdx) 中更新 GPIO 引脚映射,或者为您的设备安装正确的固件版本。 + +有关如何解决此问题的更多信息,请参阅下文的 [支持设备的固件错误](#1-支持设备的固件错误)。 + +### **按下按钮时为什么没有反应?** + +1. 检查接线:按钮应有两个端子,一个端子连接到 GPIO 引脚,另一个连接到接地(GND)。通过短接这些线并验证是否收到输入信号来测试接线是否正常工作。 +2. 检查按钮:按钮本身可能存在问题。尝试更换其他按钮。 + +### **为什么即使没有按下按钮,仍会收到输入?** + +1. 检查接线:信号线可能无意中与地线(GND)或与 GND 相连的电线接触,从而导致短路。 +2. 检查按钮:按钮本身可能损坏。尝试更换其他按钮。 + +### **上下或左右方向颠倒了,如何修复此问题?** + +可能是您在游戏控制器上启动了 [反转 Y 轴](../hotkeys.mdx#反转-y-轴) 或 [反转 X 轴](../hotkeys.mdx#反转-x-轴) 的快捷键功能。再次激活相应快捷键以关闭该功能。 + + + +### **我的 SOCD 覆盖模式更改了,该如何恢复为 X 覆盖模式?** + +可能是您在游戏控制器上激活了以下 SOCD 覆盖模式快捷键之一,再次激活快捷键可以关闭此功能: + +- [SOCD 上优先](../hotkeys.mdx#socd-上优先) +- [SOCD 回中](../hotkeys.mdx#socd-回中) +- [SOCD 后输入优先](../hotkeys.mdx#socd-后输入优先) +- [SOCD 先输入优先](../hotkeys.mdx#socd-先输入优先) +- [SOCD 关闭](../hotkeys.mdx#socd-关闭) + + + +### **为什么方向键会卡在输出方向到左/右摇杆?** + +可能是您在游戏控制器上启用了 [方向键左摇杆模式](../hotkeys.mdx#左摇杆模式) 或 [方向键右摇杆模式](../hotkeys.mdx#右摇杆模式) 的快捷键功能。再次激活对应快捷键可以关闭功能。 + + + +--- + +## 连接问题 + +### **为什么连接到 PC/主机的游戏控制器无法识别?** + +这可能有多种原因。检查以下问题: + +#### **1. 键盘模式** + +检查设备的输入模式是否设置为键盘模式。这会导致您的电脑仅识别游戏控制器作为键盘,而不是游戏控制器。 + +#### **2. 网页配置器** + +使用网页配置器时,游戏控制器会初始化为 RNDIS 设备,PC/主机会无法将其识别为游戏控制器。检查游戏控制器是否已启动到网页配置模式,并确保开机时未触发快捷键 。 + +### **为什么使用 USB Type-C 转 Type-C 无法连接到 PC/主机?** + +由于设备硬件设计的原因,可能无法使用可逆的 USB Type-C。尝试翻转电缆方向。如果仍然不起作用,尝试使用 USB 2.0 Type-C 转 Type-C 电缆或带适配器的 USB 2.0 Type-C 转 Type-A 电缆。 + +### **为什么我的游戏控制器在 PS4 或 PS5 上无响应?** + +- **针对 PS4 的问题**:确认已启用 [PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 并上传密钥文件,或通过 USB 主机使用有效的认证设备。 +- **针对 PS5 的问题**:确认已启用 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置),并通过 USB 主机使用有效的认证设备。 + +有关更多信息,请参阅 [PS4/PS5 兼容性常见问题](../faq/faq-console-compatibility.mdx)。 + +### **为什么我无法访问网页配置器?** + +#### **1. 游戏控制器未启动到网页配置模式** + +如果网页配置器页面超时,请确认游戏控制器是否已启动到网页配置模式。 + +:::info 如何进入网页配置器配置模式 + +- 插入设备时按住 。 +- 按住 持续 5 秒。 + +::: + +测试是否按下了正确的按键,例如使用 [Gamepad Tester](https://gamepad-tester.com/) 网站或其他应用(如 Steam 输入界面)进行验证。 + +#### **2. 网络中其他设备占用了 192.168.7.1 的 IPV4 地址** + +如果网络中其他设备(例如路由器、交换机、IoT 设备等)占用了相同的 IP 地址,则会发生 IP 地址冲突,导致无法访问网页配置器。 + +断开电脑与本地网络的连接(例如拔掉网线),然后重新尝试访问网页配置器。 + +--- + +## 配置问题 + +### **为什么我的设备上的 PS4 或 PS5 输入模式无法正常工作?** + +#### **1. 连接游戏控制器后未按下 A1 键** + +在连接已正确配置为 PS4 或 PS5 输入模式的游戏控制器后,您需要按下快捷键 ,以便 PS4 或 PS5 识别游戏控制器。操作后,游戏机应能正常接收游戏控制器输入。 + +#### **2. 游戏控制器模式配置错误** + +确保在“设置”部分中已上传 PS4 的密钥文件或选择了 PS4/PS5 的 USB 主机模式。 + +有关更多信息,请参阅 [PS4 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 或 [PS5 输入模式](../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置) 文档。 + +#### **3. USB 主机端口未正确配置** + +在配置器的 [外围设备映射](../web-configurator/menu-pages/03-peripheral-mapping.mdx#usb-主机) 中,确认您的 USB 主机端口配置正确。不同设备制造商提供的 Data+ 和 Data- 的特定引脚可能会有所不同,请参考供应商的文档。 + +#### **4. 使用的游戏控制器或适配器不兼容** + +只有兼容的设备才能使 GP2040-CE 游戏控制器通过 PS Passthrough 功能在 PS4 上正常工作,而并非所有设备都支持 PS5。 + +有关更多信息,请参阅 [PS4/PS5 兼容性常见问题](../faq/faq-console-compatibility.mdx)。 + +### **我无法通过快捷方式进入网页配置器。如何手动进入网页配置器?** + +如果 **不擦除您的设备固件**,请按以下步骤操作: + +1. 使用本 [强制 WebConfig 固件文件](/assets/force_webconfig.uf2) 并按照 [固件安装说明](../installation.mdx) 运行。 +2. 这会强制您的设备以网页配置模式进行启动。 + +### **为什么我的 RGB LED 显示的颜色不对?** + +确认 `LED 格式` 设置正确,不同的 LED 类型使用的 RGB 数据顺序可能不同。 + +有关更多信息,请参阅网页配置器菜单中的 [RGB LED 按键顺序](../web-configurator/menu-pages/05-led-configuration.mdx#rgb-led-按键顺序) 部分。 + +### **为什么我的 RGB LED 顺序不对?** + +RGB LED 的顺序可以在网页配置器中设置,正确的配置取决于硬件和用户如何布线 LED 链,或设备设计师如何在电路板上设置 LED 链。 + +有关更多信息,请参阅网页配置器菜单中的 [RGB LED 按键顺序](../web-configurator/menu-pages/05-led-configuration.mdx#rgb-led-按键顺序) 部分。 + +### **更新设备后,为什么我的游戏控制器停止工作了?** + +更新设备后,输入设置突然异常,OLED 显示屏或 RGB LED 停止工作,很可能是因为您为设备安装了错误的固件,或者设备不受支持,因此 [下载页面](/downloads) 上的预编译版本可能无法正常运行。 + +#### **1. 支持设备的固件错误** + +如果设备受支持,但安装了错误的固件,请按照 [固件安装说明](../installation.mdx) 操作并重新刷写正确的固件,确认固件文件名称与设备匹配。 + +#### **2. 不支持的设备** + +如果您的设备不受支持,请联系您购买设备的供应商获取正确的固件文件,并按照 [固件安装说明](../installation.mdx) 操作。 + +如果供应商无法为设备提供支持,您需要自行研究并正确设置您的设备: + +1. 从下载页面获取 **Pico GP2040 固件** 并按照 [固件安装说明](../installation.mdx) 操作刷入设备。 +2. 不擦除设备固件,刷入 [强制 WebConfig 固件文件](/assets/force_webconfig.uf2),强制设备以网页配置模式启动。 +3. 进入网页配置器,转到“配置 > GPIO 引脚映射”。 +4. 对于每个游戏控制器输入,使用“按键映射功能”将输入映射到连接按钮的 GPIO 引脚,重复进行所有输入的映射操作。 +5. 对于任何插件(如 RGB LED、OLED 显示屏、USB 主机端口等),需要确定其关联的 GPIO 引脚。这可以通过追踪 PCB 上的物理铜箔路径找到。 + +由于上述步骤完全取决于 PCB 制造商的设计,无法提供进一步的支持。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/getting-help-support.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/getting-help-support.mdx new file mode 100644 index 0000000..57574e6 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/getting-help-support.mdx @@ -0,0 +1,34 @@ +--- +title: 获取帮助 / 支持 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to get help on issues with GP2040-CE" +--- + +# 获取帮助 / 支持 + +## Discord + +如果您需要帮助,获取快速支持的最佳去处可能是我们的 [Discord 服务器](https://discord.gg/k2pxhke7q8)。 + +请注意,对于从大多数商家处购买的商业产品,我们不提供支持。在这种情况下,请先联系商家寻求帮助和支持。 + +请首先阅读 [置顶帖子](https://discord.com/channels/1049366310389289001/1132450634243772519),然后在 [支持频道](https://discord.com/channels/1049366310389289001/1132447732662018089) 创建帖子,并提供以下信息: + +1 - 您是商家吗? +2 - 您使用的是什么设备? +3 - 您在哪里买的?(请附上销售页面链接) +4 - 您是否已就此问题联系过商家?(请简要概述沟通内容) +5 - 您当前运行的固件版本和分发版本是什么?(可通过网页配置器查看) +6 - 您遇到了什么问题? +7 - 您已经进行了哪些故障排除步骤? + +请同时附上相关设备正面和背面的照片;如果设备是完整的摇杆或带有外壳,还请至少附上一张控制器主板的照片。如有需要,也请附上网页配置器页面的截图。 + +任何未填写上述信息或未附图片的支持帖子将不会得到回复。 + +## Github 问题 + +您可以在 [Github 上打开一个 issue](https://github.com/OpenStickCommunity/GP2040-CE/issues/new/choose)。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/hotkeys.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/hotkeys.mdx new file mode 100644 index 0000000..e1f18cb --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/hotkeys.mdx @@ -0,0 +1,240 @@ +--- +title: 快捷键 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Hotkey descriptions available for use with GP2040-CE" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# 快捷键指南 + +选择按键标签以在使用指南中显示: + + +
+ +:::note + +所有以下快捷键绑定都可以在网页配置器的 [快捷键设置](./web-configurator/menu-pages/01-settings.mdx#快捷键设置) 中更改或分配为不同的按钮组合。 + +::: + +## 无 + +此快捷键无功能。使用这个快捷键来禁用特定的快捷键组合。 + +## 十字键模式 + +此快捷键将方向模式更改为读取为十字键上的数字输入。 + +**默认**: + +## 左摇杆模式 + +此快捷键将方向模式更改为读取为左摇杆上的输入。方向输入始终是该轴上的最小值、最大值或零值。 + +**默认**: + +## 右摇杆模式 + +此快捷键将方向模式更改为读取为右摇杆上的输入。方向输入始终是该轴上的最小值、最大值或零值。 + +**默认**: + +## Home 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +**默认**: + +## Capture 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## SOCD 上优先 + +此快捷键将 SOCD 覆盖方法更改为解决为 X 轴上的中性输入(无输入),但在同时按下两个方向时优先考虑 Y 轴上的 `上` 输入。 + +**默认**: + +| 第一输入 + 第二输入 | 结果 | +| :-----------------: | :---: | +| 左 + 右 | 回中 | +| 右 + 左 | 回中 | +| 上 + 下 | 上 | +| 下 + 上 | 上 | + +## SOCD 回中 + +此快捷键将 SOCD 覆盖方法更改为解决为 X 轴和 Y 轴上的回中输入(无输入),当同时按下两个方向时。 + +**默认**: + +| 第一输入 + 第二输入 | 结果 | +| :-----------------: | :---: | +| 左 + 右 | 回中 | +| 右 + 左 | 回中 | +| 上 + 下 | 回中 | +| 下 + 上 | 回中 | + +## SOCD 后输入优先 + +此快捷键将 SOCD 覆盖方法更改为在同时按下两个方向时优先考虑 X 轴和 Y 轴上的第二个方向输入。 + +**默认**: + +| 第一输入 + 第二输入 | 结果 | +| :-----------------: | :---: | +| 左 + 右 | 右 | +| 右 + 左 | 左 | +| 上 + 下 | 下 | +| 下 + 上 | 上 | + +## SOCD 先输入优先 + +此快捷键将 SOCD 覆盖方法更改为在同时按下两个方向时优先考虑 X 轴和 Y 轴上的第一个方向输入。 + +| 第一输入 + 第二输入 | 结果 | +| :-----------------: | :---: | +| 左 + 右 | 左 | +| 右 + 左 | 右 | +| 上 + 下 | 上 | +| 下 + 上 | 下 | + +## SOCD 关闭 + +此快捷键将 SOCD Cleaning 方法更改为不在同时按下两个方向时解决 X 轴和 Y 轴上的任何方向输入。游戏控制器将发送两个方向输入。 + +:::note + +此覆盖模式仅在 XInput 模式下可用,因为 PS3/DirectInput、PS4 和 Nintendo Switch 模式不支持设置 SOCD 关闭,会默认设为中性 SOCD 覆盖模式。 + +::: + +| 第一输入 + 第二输入 | 结果 | +| :-----------------: | :------------: | +| 左 + 右 | 左和右 | +| 右 + 左 | 左和右 | +| 上 + 下 | 上和下 | +| 下 + 上 | 上和下 | + +## 反转 X 轴 + +此快捷键将反转游戏控制器的 X 轴(即按右键将输入左,反之亦然)。 + +## 反转 Y 轴 + +此快捷键将反转游戏控制器的 Y 轴(即按上键将输入下,反之亦然)。 + +## 切换 4 向摇杆模式 + +此快捷键会防止非主方向的注册。当接收到第二个主方向输入时,游戏控制器方向将更改为最新的主方向,类似于 [SOCD 后输入优先](#socd-后输入优先)。 + +## 切换 DDI 双重 4 向摇杆模式 + +此快捷键将改变与 [双重方向输入 (DDI)](./add-ons/dual-direction-input.mdx) 插件映射的方向键的行为,以防止非主方向的注册。当接收到第二个主方向输入时,游戏控制器方向将更改为最新的主方向,类似于 [SOCD 后者优先](#socd-后输入优先)。 + +## 加载档案 #1-6 + +此快捷键将加载在网页配置器中的 [档案设置](./web-configurator/menu-pages/02-gpio-pin-mapping.mdx#档案) 中设置的各种输入到 GPIO 引脚映射档案。 + +:::caution 多个加载档案快捷键 + +建议配置多个`加载档案`快捷键,以防您更改档案后无法更改回去。 + +::: + +## 下一个档案 + +此快捷键循环通过在网页配置器中的 [档案设置](./web-configurator/menu-pages/02-gpio-pin-mapping.mdx#档案) 中设置的 GPIO 引脚映射档案。 +例如,如果 `Profile 1` 是活动的,按下快捷键将循环到下一个启用的档案,例如 `Profile 2`。到达最后一个档案后,将循环回第一个档案。 + +## 上一个档案 + +此快捷键循环通过在网页配置器中的 [档案设置](./web-configurator/menu-pages/02-gpio-pin-mapping.mdx#档案) 中设置的 GPIO 引脚映射档案。 +例如,如果 `Profile 2` 是活动的,按下快捷键将循环到上一个启用的档案,例如 `Profile 1`。到达第一个档案后,将循环回最后一个档案。 + +## L3 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## R3 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## 触摸板 + +此快捷键模拟触摸板的按压,因为并非所有游戏控制器本身都有此键。 + +:::note + +触摸板与 [A1 键](#a1-键) 快捷键不同,因为此快捷键无论 `切换触摸板和共享` 开关都会触发触摸板。 + +::: + +## 重启 GP2040-CE + +此快捷键将在无需按下板上的硬件重置按钮(如果存在)或者拔掉游戏控制器与 PC 或游戏主机连接的情况下重启游戏控制器。 + +## B1 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## B2 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## B3 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## B4 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## L1 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## R1 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## L2 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## R2 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## S1 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## S2 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## A1 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +:::note + +A1 键快捷键与 [触摸板](#触摸板) 快捷键不同,因为此快捷键将根据 [`切换触摸板和共享`](./web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 的开启或关闭而切换触摸板或共享键。 + +::: + +## A2 键 + +此快捷键模拟 键的按压,因为并非所有游戏控制器本身都有此键。 + +## 专注模式切换 + +此快捷键用于切换 [专注模式](./add-ons/focus-mode.mdx) 是否激活。按下即可激活,按住 3 秒则关闭。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/installation.mdx new file mode 100644 index 0000000..0f083c1 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/installation.mdx @@ -0,0 +1,84 @@ +--- +title: 固件安装 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to install firmware onto devices" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# 固件安装 + +选择按键标签以在使用指南中显示: + + + +## 常规流程 + +> 如果设备先前安装过除 GP2040-CE 外的其它固件,您需要按照下面的 [闪存清除流程](#闪存清除流程) 进行操作,完全清除内存之后就可以准备安装 GP2040-CE 了。 + +1. 下载适用于您的设备的已编译固件 (.uf2 文件) +2. 拔掉您的设备。 +3. 将您的设备置于 BOOTSEL/USB 模式。如果成功,在文件浏览器中将出现名为 `RPI-RP2` 的新的可移动驱动器。 + +:::info 如何进入 BOOTSEL 模式(选其一) + +- 插入时按住 BOOTSEL 按钮 +- 插入时按住 +- 按住 5 秒。 + +::: + +4. 拖放在步骤 1 中下载的已编译固件 (.uf2 文件) 到可移动驱动器 +5. 等待设备自动断开连接。 + +恭喜!开发板现在正在运行 GP2040-CE 固件,并将在您的计算机上显示为游戏控制器。您可以在游戏中测试它,使用网站如 [Gamepad Tester](https://gamepad-tester.com/),或者在其他应用中如 Steam 输入叠加。 + +如果您想定制您的设备,请查看内置的 [网页配置器](./web-configurator/web-configurator.mdx)。 + +### 示例流程 (树莓派 Pico) + +**说明因设备而异。下述说明适用于树莓派 Pico。** + +1. 从 [下载](/downloads) 页面下载适用于树莓派 Pico 的最新 `GP2040-CE_X.X.X_Pico.uf2` 文件。 +2. 拔掉您的 Pico。 +3. 将您的设备置于 BOOTSEL/USB 模式。如果成功,在文件浏览器中将出现名为 `RPI-RP2` 的新的可移动驱动器。 + +:::info 如何进入 BOOTSEL 模式(选其一) + +- 插入时按住 BOOTSEL 按钮 +- 插入时按住 +- 按住 5 秒。 + +::: + +4. 将 `GP2040-CE_X.X.X_Pico.uf2` 文件拖放到可移动驱动器中。 +5. 等待 Pico 自动断开连接。 + +## 闪存清除流程 + +:::caution + +_警告_ - 闪存清除 将清除板上所有的 GPIO 引脚映射和附加功能的自定义配置。 + +::: + +1. 下载 [flash_nuke.uf2 文件](/assets/flash_nuke.uf2) +2. 将您的设备置于 BOOTSEL/USB 模式。如果成功,在文件浏览器中将出现名为 `RPI-RP2` 的新的可移动驱动器。 + +:::info 如何进入 BOOTSEL 模式(选其一) + +- 插入时按住 BOOTSEL 按钮 +- 插入时按住 +- 按住 5 秒。 + +::: + +3. 将 [flash_nuke.uf2 文件](/assets/flash_nuke.uf2) 拖放到驱动器上 +4. **_不要拔掉连接,等待驱动器自动断开并重新连接_** +5. 将固件拖放到 RPI 驱动器上并等待断开连接 +6. 使用 [游戏控制器测试器](https://hardwaretester.com/gamepad) 检查游戏控制器是否连接并按下按钮。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/introduction.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/introduction.mdx new file mode 100644 index 0000000..d39f01b --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/introduction.mdx @@ -0,0 +1,41 @@ +--- +id: introduction +title: 介绍 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Introduction to GP2040-CE" +--- + +# 介绍 + +您的游戏控制器内置了一个开发板,用于处理您的输入并将其转换为计算机或游戏主机能够理解的命令。GP2040-CE 是促进此过程的固件,提供对多个主机和输入模式的兼容性。此外,通过网络配置器和社区开发的插件系统,还有许多其他有用的功能。 + +不确定您的开发板是否能运行 GP2040-CE?只要它有 RP2040 微处理器,通常就可以。如果您当前的开发板没有,还有大量社区提供的支持 GP2040-CE 的爱好者板。 + +## 概览 + +本部分文档主要面向终端用户,帮助他们在不深入配置和定制设备的细节情况下尽快使用游戏控制器。提供游戏控制器后,如何尽快使用。它包括以下部分。 + +- [固件安装](./installation.mdx "GP2040-CE | Firmware Installation"):当您需要安装固件(例如设置新板、更新版本或作为故障排除的一部分) +- [使用指南](./usage.mdx "GP2040-CE | Usage"):GP2040-CE 可用的各种功能和特性说明 +- [快捷键](./hotkeys.mdx "GP2040-CE | Hotkeys"):GP2040-CE 可用的各种快捷键快捷方式列表 + +:::note + +快捷方式的实际按钮可能会有所不同,因为它们是可定制的,可以由设备供应商或销售商设置。 + +::: + +- [网页配置器](./web-configurator/web-configurator.mdx): 内置的基于网络的配置应用程序,可更改与固件操作和功能相关的各种设置。 +- [RGB LED](./rgb-leds.mdx): 控制 RGB LED 动画、颜色模式和行为的各种快捷键快捷方式列表。 +- [获取帮助/支持](./getting-help-support.mdx "GP2040-CE | Getting Help"): 在出现问题或故障时如何获得帮助 + +## 其他资源 + +如果您准备好开始定制游戏控制器的功能,请查看文档的 [`网页配置器`](./web-configurator/web-configurator.mdx) 部分。 + +如果您想自己组装设备,请查看侧边栏中的 `游戏控制器组装` 部分。 + +如果您想更深入地研究固件以编译自己的固件配置,甚至为代码做贡献,请查看文档的 [`贡献指南`](/development/contribution-guide) 部分。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/mini-menu.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/mini-menu.mdx new file mode 100644 index 0000000..03fcb1d --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/mini-menu.mdx @@ -0,0 +1,74 @@ +--- +title: 迷你菜单 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Onboard OLED Mini Menu" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# 迷你菜单 + +选择按键标签以在使用指南中显示: + + +
+ +:::note + +要使用迷你菜单,必须连接一个 OLED 显示屏。大多数设备需要在 [网页配置器](/web-configurator) 中进行特殊配置以允许使用迷你菜单。 + +::: + +## 设置迷你菜单 + +要设置迷你菜单,您需要备用的 GPIO 引脚用于专用迷你菜单控制,或通过快捷键添加控制的能力。 + +迷你菜单中有 7 个可分配的输入: + +- `Menu Up` - 在迷你菜单中向上导航。 +- `Menu Down` - 在迷你菜单中向下导航。 +- `Menu Left` - 在迷你菜单中向左导航。 +- `Menu Right` - 在迷你菜单中向右导航。 +- `Menu Select` - 在迷你菜单中选择或前进。 +- `Menu Back` - 在迷你菜单中后退。 +- `Menu Toggle` - 切换迷你菜单的开启或关闭。 + +在大多数情况下,建议打开 `Fn` 开关,并使用 Function 键组合其他按键来导航迷你菜单。 + +![GP2040-CE 迷你菜单](./assets/images/gpc-mini-menu.png) + +或者,以下配置需要将 `Menu Toggle` 分配到一个引脚,并在 [游戏控制器设置](./web-configurator/menu-pages/settings#游戏控制器设置) 中开启 `Use Gamepad Input for Display Mini Menu`。 + +![GP2040-CE 迷你菜单 Pins](./assets/images/gpc-mini-menu-pins.png) + +将 `Menu Toggle` 分配到一个引脚后,转到 [游戏控制器设置](./web-configurator/menu-pages/settings#游戏控制器设置),启用 `Use Gamepad Input for Display Mini Menu` 。请注意,在选择此选项时,迷你菜单的输入也会输出到您的游戏控制器。 + +![GP2040-CE 迷你菜单 Gamepad Setting](./assets/images/gpc-mini-menu-gamepad.png) + +设置 `Menu Toggle` 和 `Use Gamepad Input for Display Mini Menu` 选项后,迷你菜单现在只需要一个引脚分配即可操作。在此模式中,可以使用 用于 `Menu Select`, 用于 `Menu Back`,方向键用于 `Menu Up`,`Menu Down`,`Menu Left` 和 `Menu Right`。 + +## 迷你菜单中的选项 + +- `Input Mode` - 允许您将 `输入模式` 更改为我们的任意支持模式。 +- `D-Pad Mode` - 允许您将 `方向模式` 更改为 `十字键`,`左摇杆` 和 `右摇杆`。 +- `SOCD Mode` - 允许您将 `SOCD 模式` 更改为 `上优先`,`回中`,`后输入优先`,`先输入优先` 和(可能的情况下)`关闭`。 +- `Profile` - 如果设置了多个 `档案`,允许您选择一个档案。 +- `Focus Mode` - 允许您启用或禁用 `专注模式`。 +- `Turbo` - 允许您启用或禁用 `连发`。 +- `Exit` - 允许您 `保存并退出` 或仅仅 `退出` 迷你菜单。选择 `退出` 将不会保存所做的任何更改。 + +:::note + +请注意,如果在进行未保存的更改时仍处于迷你菜单中不小心按下了分配的 `菜单返回键` 按钮,将会出现一个新屏幕。 + +系统会警告您: +"Config has changed. Would you like to save"(“配置已更改。是否要保存”) + +您可以选择 `Yes` 或 `No`。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/rgb-leds.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/rgb-leds.mdx new file mode 100644 index 0000000..18a93f8 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/rgb-leds.mdx @@ -0,0 +1,156 @@ +--- +title: RGB LED +# tags: +# - +pagination_next: null +pagination_prev: null +description: "How to use addressable RGB LEDs to your controller. Hotkeys and animation themes." +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import { ColorBlock } from "@site/src/components/LEDColors"; + +# RGB LED + +选择按键标签以在使用指南中显示: + + + +## 硬件需求 + +GP2040-CE 需要使用可寻址 RGB LEDs 来实现几乎所有 LED 功能。 + +例外的是 [玩家 LED](./web-configurator/menu-pages/05-led-configuration.mdx),它们可以使用脉宽调制(PWM)来调节 LED 的亮度。 + +## RGB LED 快捷键 + +| 快捷键 | 描述 | +| -------------------------------------- | ---------------------------- | +| | 下一个动画 | +| | 上一个动画 | +| | 亮度增加 | +| | 亮度减少 | +| | LED 参数增加 | +| | LED 参数减少 | +| | 按下参数增加 | +| | 按下参数减少 | +| | 减少 LED 渐变持续时间 | +| | 增加 LED 渐变持续时间 | + +:::note + +`LED Parameter` 快捷键可能会根据当前 RGB LED 动画影响颜色、速度或主题。 + +`Pressed Parameter` 选项将更改按下按键时动画的颜色/效果。 + +::: + +### RGB LED 动画 + +使用这些快捷键可以循环切换动画模式。可用的动画包括: + +| 名称 | 描述 | +| -------------- | --------------------------------------------------------------------------------------------------------------------- | +| 彩虹追逐 | 一个渐变的彩虹循环线在 LED 链上移动 | +| 静态主题 | 将 LED 设置为预定义的静态主题 | +| 自定义主题 | 将 LED 设置为在 [网页配置器 - 自定义 LED 主题](./web-configurator/menu-pages/06-custom-led-theme.mdx) 中设置的自定义主题 | +| 静态颜色 | 将所有 LED 设置为同一种颜色 | +| 彩虹循环 | 所有 LED 通过颜色轮进行循环,显示相同的颜色 | + +### RGB LED 亮度 + +这些快捷键将根据 [LED 配置](./web-configurator/menu-pages/05-led-configuration.mdx#rgb-led-配置) 中的 `亮度步长` 和 `最大亮度` 设置来增加或减少游戏控制器 LED 的亮度。 + +### RGB LED 参数 + +根据特定的动画,更改 LED 参数会导致不同的行为。 + +| 名称 | LED 参数 | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 彩虹追逐 | 调整动画速度 | +| 静态主题 | 循环切换主题,详细信息请参见 [RGB LED 静态主题](#rgb-led-静态主题)。 | +| 静态颜色 | 循环切换颜色:黑色, 白色, 红色, 橙色, 黄色, 黄绿色, 绿色, 海泡绿, 水色, 天蓝, 蓝色, 紫色, 粉色, 洋红 | +| 彩虹循环 | 调整动画速度 | + +:::note 自定义 LED 主题 + +使用自定义 LED 主题时,这些快捷键不会影响任何其他动画模式中的设置。 + +::: + +### RGB LED 按下参数 + +更改按钮按下时 LED 所变化的颜色。 + +循环切换颜色:黑色, 白色, 红色, +橙色, 黄色, 黄绿色, +绿色, 海泡绿, 水色, +天蓝, 蓝色, 紫色, +粉色, 洋红 + +:::note 自定义 LED 主题 + +使用自定义 LED 主题时,这些快捷键不会影响任何其他动画模式中的设置。 + +::: + +### RGB LED 渐变持续时间 + +使用这些快捷键将影响按钮按下后的 LED 渐变动画持续时间。 + +:::note + +该持续时间在所有主题和按钮间共享,不能单独为每个主题或按钮设置。 + +::: + +| 参数 | 描述 | +| ----------------- | -------- | +| 默认持续时间 | 500ms | +| 持续时间范围 | 0ms - 500ms | +| 快捷键增量 | 500ms | + +:::tip + +如果您想禁用渐变动画,请将持续时间设置为 0ms。 + +::: + +## RGB LED 静态主题 + +| 名称 | 预览 | +| ------------------------ | -------------------------------------------------------------------- | +| **静态彩虹** | ![Static Rainbow](./assets/images/led-themes/static-rainbow.png) | +| **Xbox** | ![Xbox](./assets/images/led-themes/xbox.png) | +| **Xbox (所有)** | ![Xbox (All)](./assets/images/led-themes/xbox-all.png) | +| **超级任天堂** | ![Super Famicom](./assets/images/led-themes/super-famicom.png) | +| **超级任天堂 (所有)** | ![Super Famicom (All)](./assets/images/led-themes/super-famicom-all.png) | +| **PlayStation** | ![Xbox](./assets/images/led-themes/playstation.png) | +| **PlayStation (所有)** | ![Xbox (All)](./assets/images/led-themes/playstation-all.png) | +| **Neo Geo直线型** | ![Neo Geo Classic](./assets/images/led-themes/neogeo-straight.png) | +| **Neo Geo曲线型** | ![Neo Geo Curved](./assets/images/led-themes/neogeo-curved.png) | +| **Neo Geo现代型** | ![Neo Geo Modern](./assets/images/led-themes/neogeo-modern.png) | +| **六按钮战士** | ![Six Button Fighter](./assets/images/led-themes/six-button-fighter.png) | +| **六按钮战士 +** | ![Six Button Fighter +](./assets/images/led-themes/six-button-fighter-plus.png) | +| **街头霸王2** | ![Street Fighter 2](./assets/images/led-themes/street-fighter-2.png) | +| **铁拳** | ![Tekken](./assets/images/led-themes/tekken.png) | +| **罪恶装备 Type-A** | ![Guilty Gear Type-A](./assets/images/led-themes/guilty-gear-type-a.png) | +| **罪恶装备 Type-B** | ![Guilty Gear Type-B](./assets/images/led-themes/guilty-gear-type-b.png) | +| **罪恶装备 Type-C** | ![Guilty Gear Type-C](./assets/images/led-themes/guilty-gear-type-c.png) | +| **罪恶装备 Type-D** | ![Guilty Gear Type-D](./assets/images/led-themes/guilty-gear-type-d.png) | +| **罪恶装备 Type-E** | ![Guilty Gear Type-E](./assets/images/led-themes/guilty-gear-type-e.png) | +| **Fightboard** | ![Fightboard](./assets/images/led-themes/fightboard.png) | + +## 机箱 RGB LED 快捷键 + +| 快捷键 | 描述 | +| -------------------------------------- | ---------------------------- | +| | 在 `环境`、`关联` 和 `关闭` 模式间循环 | +| | 增加机箱 LED 的亮度 | +| | 减少机箱 LED 的亮度 | +| | 下一个静态颜色的机箱 LED 颜色 | +| | 上一个静态颜色的机箱 LED 颜色 | +| | 环境模式下的下一个效果 | +| | 环境模式下的上一个效果 | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_add-usb-host-port.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_add-usb-host-port.mdx new file mode 100644 index 0000000..02422b6 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_add-usb-host-port.mdx @@ -0,0 +1,84 @@ +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + +### 示例接线 + +:::note + +虽然此示例接线指南使用的是树莓派 Pico,但该原则适用于**所有**基于 RP2040 的板子。 + +::: + +![USB 主机接线图](../assets/images/gpc-add-ons-example-wiring-diagram-usb-host-port.png) + +- `VCC` - 连接到 5V 电源(示例:树莓派 Pico 的 VBUS) +- `D+` - 连接到上面网页配置器中设置的 `D+` GPIO 引脚。(示例:树莓派 Pico 的 GPIO0) +- `D-` - 连接到上面网页配置器中基于 D+ 自动设置的 `D-` GPIO 引脚。(示例:树莓派 Pico 的 GPIO1) +- `GND` - 连接到任意接地引脚(`GND` 引脚)。(示例:树莓派 Pico 的 GND) + +
+ +:::note + +对于 `D+` 和 `D-`,RP2040 上的任意 GPIO 引脚都可以使用。但有一个要求,即 `D-` GPIO 必须紧接在 `D+` 之前或之后(即 `D+` = GPIO 引脚 X -> `D-` 必须是 X+1 或 X-1)。 + +::: + +
+ + +### 示例接线 + +步骤 1:将 USB 通路板放置在干净的表面上。 + +--- + +步骤 2:取出一根连接线并将其放置在干净的表面上。 + +:::note + +这些连接线是 JST 2.00mm 2 针同向连接线,长度为 10cm(100mm)。可以手工制作,也可以直接从淘宝等多个卖家处购买。如果计划将 USB 通路板安装在机箱内的其他位置,建议使用更长的连接线。此安装指南需要三根连接线。 + +::: + +--- + +步骤 3:将第一根 JST 2.00mm 2 针连接线的一端连接到 USB 通路板上标记为 5V IN 的插座。 + +:::note + +由于这些连接线是同方向的,因此连接线方向无关紧要。 + +::: + +--- + +步骤 4:将第一根 JST 2.00mm 2 针连接线的另一端连接到 RP2040 高级扩展板上标记为 5V OUT 的插座。 + +--- + +步骤 5:将第二根 JST 2.00mm 2 针连接线的一端连接到 USB 通路板上标记为 D+ OUT 的插座。 + +--- + +步骤 6:将第二根 JST 2.00mm 2 针连接线的另一端连接到 RP2040 高级扩展板上标记为 OPTION 5 的插座。 + +:::note + +您也可以使用其他选项插座,但为了本安装指南,我们将使用 Option 5 和 Option 6。 + +::: + +--- + +步骤 7:将第三根 JST 2.00mm 2 针连接线的一端连接到 USB 通路板上标记为 D- OUT 的插座。 + +--- + +步骤 8:将第三根 JST 2.00mm 2 针连接线的另一端连接到 RP2040 高级扩展板上标记为 OPTION 6 的插座。 + + +
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_deprecated-add-on.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_deprecated-add-on.mdx new file mode 100644 index 0000000..d61d267 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_deprecated-add-on.mdx @@ -0,0 +1,5 @@ +:::warning + +此插件即将被弃用,并将在下一个版本发布中移除。一旦移除,本页面将被删除,并且该插件将被添加到 [已弃用的插件](../web-configurator/menu-pages/08-add-ons-configuration.mdx#已弃用的插件)。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_hotkey-note.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_hotkey-note.mdx new file mode 100644 index 0000000..dde3b32 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_hotkey-note.mdx @@ -0,0 +1,5 @@ +:::note 可配置的快捷键 + +如果快捷键组合在文档中不存在或与文档中的描述不同,请通过设备上的网页配置器验证每个快捷键分配的输入组合。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_i2c-block-table.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_i2c-block-table.mdx new file mode 100644 index 0000000..9ad93b2 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_i2c-block-table.mdx @@ -0,0 +1,10 @@ +| SDA | SCL | I2C Block | SDA | SCL | I2C Block | +| :--: | :--: | :-------- | :--: | :--: | :-------- | +| GP00 | GP01 | **I2C0** | GP02 | GP03 | **I2C1** | +| GP04 | GP05 | **I2C0** | GP06 | GP07 | **I2C1** | +| GP08 | GP09 | **I2C0** | GP10 | GP11 | **I2C1** | +| GP12 | GP13 | **I2C0** | GP14 | GP15 | **I2C1** | +| GP16 | GP17 | **I2C0** | GP18 | GP19 | **I2C1** | +| GP20 | GP21 | **I2C0** | GP22 | GP23 | **I2C1** | +| GP24 | GP25 | **I2C0** | GP26 | GP27 | **I2C1** | +| GP28 | GP29 | **I2C0** | ---- | ---- | ---- | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_input-table-mini-classic.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_input-table-mini-classic.mdx new file mode 100644 index 0000000..cd0910b --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_input-table-mini-classic.mdx @@ -0,0 +1,16 @@ +| GP2040-CE | Sega Genesis
MegaDrive Mini | NEOGEO Mini | PC Engine
Turbografx 16 Mini | EGRET II Mini | ASTROCITY Mini | Playstation Classic | +| --------- | ---------------------------------- | ----------- | ----------------------------------- | ------------- | -------------- | ------------------- | +| B1 | A | B | 1 | A | A | Cross | +| B2 | B | D | 2 | B | B | Circle | +| B3 | X | A | - | D | D | Square | +| B4 | Y | C | - | E | E | Triangle | +| L1 | - | L1 | - | - | - | L1 | +| R1 | Z | R1 | - | F | F | R1 | +| L2 | - | L2 | - | - | - | L2 | +| R2 | C | R2 | - | C | C | R2 | +| S1 | Mode | Select | Start | Start | Credit | Start | +| S2 | Start | Start | Run | Credit | Start | Select | +| L3 | - | - | - | - | - | - | +| R3 | - | - | - | - | - | - | +| A1 | - | Options | - | Menu | - | - | +| A2 | - | - | - | - | - | - | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_input-table.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_input-table.mdx new file mode 100644 index 0000000..6ccbf37 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_input-table.mdx @@ -0,0 +1,16 @@ +| GP2040-CE | XInput
Xbox One | Switch | PS4 | PS3 | DirectInput | Arcade | RP2040 Advanced Breakout Board | +| --------- | --------------------- | ------- | -------- | -------- | ----------- | ------ | ------------------------------ | +| B1 | A | B | 交叉 | 交叉 | 2 | K1 | K1 | +| B2 | B | A | 圆圈 | 圆圈 | 3 | K2 | K2 | +| B3 | X | Y | 四方 | 四方 | 1 | P1 | P1 | +| B4 | Y | X | 三角 | 三角 | 4 | P2 | P2 | +| L1 | LB | L | L1 | L1 | 5 | P4 | P4 | +| R1 | RB | R | R1 | R1 | 6 | P3 | P3 | +| L2 | LT | ZL | L2 | L2 | 7 | K4 | K4 | +| R2 | RT | ZR | R2 | R2 | 8 | K3 | K3 | +| S1 | Back | 减号 | 分享 | Select | 9 | Coin | S1 | +| S2 | Start | 加号 | 选项 | Start | 10 | Start | S2 | +| L3 | LS | LS | L3 | L3 | 11 | LS | L3 | +| R3 | RS | RS | R3 | R3 | 12 | RS | R3 | +| A1 | Home | HOME | PS | PS | 13 | Home | A1 | +| A2 | - | 截屏 | 触摸板按下 | - | 14 | - | A2 | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_pin-options-USB-Host.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_pin-options-USB-Host.mdx new file mode 100644 index 0000000..55f9557 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_pin-options-USB-Host.mdx @@ -0,0 +1,9 @@ +- `D+` - 用于在 USB 主机端口和 RP2040 之间传输 Data Plus 的 GPIO 引脚。 +- `D-` - 用于在 USB 主机端口和 RP2040 之间传输 Data Minus 的 GPIO 引脚。此引脚无法手动设置,将根据 `D+` 自动确定。 +- `5V Power (可选)` - 用于为板上的主机端口启用 5V 电源的 GPIO 引脚。 + +:::note 5V 电源 + +这仅适用于少量板子(例如 Adafruit RP2040 Feather USB Host),大多数板子不需要设置此选项。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_spi-block-table.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_spi-block-table.mdx new file mode 100644 index 0000000..cd6a835 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/snippets/_spi-block-table.mdx @@ -0,0 +1,10 @@ +| RX | CS | CLK | TX | SPI Block | +| :--: | :--: | :--: | :--: | :-------: | +| GP00 | GP01 | GP02 | GP03 | **SPI0** | +| GP04 | GP05 | GP06 | GP08 | **SPI0** | +| GP08 | GP09 | GP10 | GP11 | **SPI1** | +| GP12 | GP13 | GP14 | GP15 | **SPI1** | +| GP16 | GP17 | GP18 | GP19 | **SPI0** | +| GP20 | GP21 | GP22 | GP23 | **SPI0** | +| GP24 | GP25 | GP26 | GP27 | **SPI1** | +| GP28 | GP29 | ---- | ---- | **SPI1** | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/usage.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/usage.mdx new file mode 100644 index 0000000..972b541 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/usage.mdx @@ -0,0 +1,143 @@ +--- +title: 使用指南 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "General How-To on using GP2040-CE" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import InputTable from "./snippets/_input-table.mdx"; +import InputTableMiniClassic from "./snippets/_input-table-mini-classic.mdx"; + +# GP2040-CE 使用指南 + +选择要在使用指南中显示的按键标签: + + +
+ +:::caution + +v0.5+ 版本对除树莓派 Pico 以外的其他开发板有重大更改。如果您使用的是这些开发板,请勿从旧版本更新,除非您有已知正常版本的 .uf2 备份,或您清楚自己在做什么。 + +::: + +## 按键 + +GP2040-CE 使用通用按键标记来表示游戏控制器状态,然后在发送前转换为适当的输入类型。下表提供了 GP2040-CE 按键与支持的输入类型和布局的映射: + + + + + + + + + + + + + + + + + +如果您的游戏控制器缺少专用按键用于特定输入,请查看 [快捷键页面](./hotkeys.mdx),了解如何映射按键组合以模拟这些缺失的输入。 + +:::note + +与其他游戏控制器不同,键盘的方向按键对应不同的键。您可以在 [网页配置器 > 系统设置 > 键盘映射](./web-configurator/menu-pages/01-settings.mdx#键盘映射) 中更改键盘模式的键映射。 + +::: + +| 方向 | 键盘 | +| ----- | ----------- | +| 上 | 方向键上 | +| 下 | 方向键下 | +| 左 | 方向键左 | +| 右 | 方向键右 | + +## BOOTSEL 模式 + +Bootsel 模式是板进入可刷入固件的状态。每当进行更新或排查问题时,您都需要使用此模式。 + +您可以通过以下方式进入 BOOTSEL 模式:在插入游戏控制器时按住 按键,通过进入网页配置器并在 BOOTSEL 模式下重启,或在游戏控制器插入状态下按住 五秒钟。激活后,除了刷入新固件或拔掉设备,没有其他方法可以离开 BOOTSEL 模式。 + +通常,板上会有一个 BOOTSEL 按钮。这个按钮往往是 PCB 上露出的按钮,或者在游戏控制器内部,需要针状物按压或拆卸游戏控制器才能按到。 + +:::note + +一些游戏控制器选择不包含 BOOTSEL 按钮。在这种情况下,您需要找到按钮的位置,并在插入或启动游戏控制器时使用导体连接触点或垫片的两侧。 + +::: + +## 网页配置模式 + +网页配置模式是板启动内置网页浏览器配置应用程序的状态。在此,您可以根据需要自定义和配置游戏控制器。更多信息请点击 [这里](./web-configurator/web-configurator.mdx)。 + +您可以通过以下方式进入网页配置模式:在插入游戏控制器时按住 按键,或在游戏控制器插入状态下按住 五秒钟。再次按住这个组合五秒钟,即可将设备切换回先前使用的游戏控制器模式。 + +## 输入模式 + +GP2040-CE兼容多个系统和输入模式。可以在网页配置器中设置按住八个按键时分配的特定输入模式,配置路径为 [设置](./web-configurator/menu-pages/01-settings.mdx#输入模式引导)。 + +不过,预编译固件中有默认输入模式。要更改输入模式,**在插入游戏控制器时按住以下按键之一:** + +| 主要输入模式 | 按住的按键 | +| :------------- | :-----------------------: | +| Nintendo Switch | | +| XInput | | +| PS3/DirectInput | | +| PS5 | | +| Xbox One | | +| 键盘 | | +| Original XBox | `未分配` | + +| 迷你/经典主机模式 | 按住的按键 | +| :--------------------------- | :--------: | +| Sega Genesis/MegaDrive Mini | `未分配` | +| NEOGEO mini | `未分配` | +| PC Engine/Turbografx 16 Mini | `未分配` | +| EGRET II Mini | `未分配` | +| ASTROCITY Mini | `未分配` | +| Playstation Classic | `未分配` | + +:::note + +输入模式在重启后会被保留。 + +::: + +## 快捷键 + +GP2040设有多个快捷键,无需访问网页配置器即可更改功能。所有快捷键和快捷键绑定可以在网页配置器的 [快捷键设置](./web-configurator/menu-pages/01-settings.mdx#快捷键设置) 中更改或分配为不同的按键组合。 + +常用快捷键包括将方向更改为模拟数字DPad、左模拟摇杆、右模拟摇杆或更改 [SOCD(同时相反方向)](https://glossary.infil.net/?t=SOCD) 覆盖模式。不同的 SOCD 覆盖模式将确保游戏控制器在发送输入时遵循特定的方向输入规则。 + +许多快捷键默认启用,如果游戏控制器出现意外行为,请确保未意外触发快捷键。 + +| 默认启用的快捷键 | 输入 | +| :----------------------------------------- | :-------------------------------- | +| [Home 键](hotkeys.mdx#home-键) | | +| [十字键模式](hotkeys.mdx#十字键模式) | | +| [左摇杆模式](hotkeys.mdx#左摇杆模式) | | +| [右摇杆模式](hotkeys.mdx#右摇杆模式) | | +| [SOCD 上优先](hotkeys.mdx#socd-上优先) | | +| [SOCD 回中](hotkeys.mdx#socd-回中) | | +| [SOCD 后输入优先](hotkeys.mdx#socd-后输入优先) | | + +:::note + +选定的方向模式和 SOCD 覆盖模式在重启后会被保留。 + +::: + +## 插件和额外功能 + +GP2040-CE有许多扩展功能的插件,例如 [模拟摇杆](./add-ons/analog.mdx) 和 [Turbo 功能](./add-ons/turbo.mdx)。由于社区创建了大量插件,它们位于单独的文档页面。请导航到插件页面以获取更多信息。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/community-splash-screens.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/community-splash-screens.mdx new file mode 100644 index 0000000..b1bac58 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/community-splash-screens.mdx @@ -0,0 +1,160 @@ +--- +title: Community Splash Screens +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Community created splash screens for use with an OLED screen" +--- + +export const Image = ({ name, path }) => { + return ( +
+ {name} +
{name}
+
+ ); +}; + +# Community Splash Screens + +Here is a collection of community created splash screens that can be used with an optional OLED screen. Upload the image using the web configurator to set it up. + +All images been formatted to 128x64 in black / white color. + +## GP2040-CE + +
+ + + + + + + +
+ +## Vendors + +
+ + + +
+ +## Video Games + +
+ + + + + + + + +
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/00-home.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/00-home.mdx new file mode 100644 index 0000000..fd56024 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/00-home.mdx @@ -0,0 +1,48 @@ +--- +title: 主页 +# tags: +# - +# pagination_next: null +pagination_prev: null +description: "Home page for the GP2040-CE Web Configurator" +--- + +# 网页配置器 - 主页 + +![GP2040-CE Configurator - Home](../../assets/images/gpc-home.png) + +您可以在此查看设备的系统状态。 + +----- + +## 版本 + +`设备名称` - 这将告诉您设备的名称以及上传到设备上的 UF2 文件的名称。 + +`当前` - 设备上正在运行的固件的当前版本。 + +`最新` - 在我们的发布区中可用的最新固件版本。 + +`架构` - 当前构建版本的芯片架构。 + +`构建类型` - 这将告诉您当前构建的类型。 + +`构建` - 这将告诉您当前构建所基于的提交(commit)。 + +----- + +## 闪存 + +本节显示了有关闪存模块的各种状态。 + +:::note + +GP2040-CE 要求设备至少具有 2MB 闪存(这是树莓派 Pico 的标准配置)。 + +有少量报告称,来自淘宝(AliExpress)等地方的一些低成本仿制设备只配备了 1MB 闪存。 + +应避免使用只有 1MB 闪存的设备,因为它们可能无法工作或无法按预期工作。 + +如果您正在制作自己的设备,请确保使用至少 2MB 的闪存模块。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/01-settings.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/01-settings.mdx new file mode 100644 index 0000000..ea49f71 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/01-settings.mdx @@ -0,0 +1,216 @@ +--- +title: 系统设置 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Select the input mode, DPad Mode, SOCD Cleaning Mode, etc. and configure Hotkey Shortcuts" +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# 系统设置 + +## 输入模式设置 + +![GP2040-CE 配置器 - 输入模式设置](../../assets/images/gpc-settings-input-mode.png) + +- `当前输入模式` - 选择此连接设备在通电时启动的主要输入模式(XInput、 DInput、 Switch、 PS4 、 HID-Keyboard 等)。此选择将在断开连接并重新插入游戏控制器后保持不变。 +- `输入模式控制器类型` - 选择此控制器的子类型(请注意,除 `游戏手柄` 外的其他类型均为实验性功能) +- `认证设置` - 如果模式需要认证,请选择一种认证方法。 + +:::note + +Xinput 在 PC 上无需任何认证即可工作。如果您希望在 Xbox 360 上使用,请选择 USB 认证并连接适当的认证设备。 + +::: + +![GP2040-CE 配置器 - USB 覆盖](../../assets/images/gpc-settings-usboverride.png) + +GP2040-CE 允许您覆盖部分 USB 描述符信息。这些设置仅在您明确知道自己在做什么时进行更改。 + +- `Product Name` - 您希望设备在设备列表中显示的名称 +- `Manufacturer` - 您希望设备详情中显示的制造商名称 +- `Version` - 您希望分配给设备详情的版本 + +在 `Override Physical IDs` 下还有一层额外的 USB 设备信息可以更改。 + +- `Vendor ID` - 供应商 ID 描述符 +- `Product ID` - 产品 ID 描述符 + +:::warning + +请注意,更改 `Advanced USB Override` 或 `Override Physical IDs` 中的任何选项可能会导致输入模式无法正常工作。 + +GP2040-CE 团队不对因更改这些设置而引发的问题提供支持。 + +::: + +### 键盘映射 + +在此,您可以将 GP2040-CE 按钮重新映射为不同的键盘键码,当按下键盘模式时,这些键码会发送到 PC 或游戏主机。 + +![GP2040-CE 配置器 - 键盘映射](../../assets/images/gpc-settings-keyboard-mapping.png) + +### 额外的 PS4 设置 + +![GP2040-CE 配置器 - 额外的 PS4 设置](../../assets/images/gpc-settings-ps4.png) + +- `输入模式控制器类型` - 选择此控制器的子类型(请注意,除 `游戏手柄` 外的其他类型均为实验性功能) +- `触摸板(Touchpad)和分享键(Share)互换` - 分享键现在将映射到 A2 而不是 S1 ,触摸板现在将映射到 S1 而不是 A2 。 +- `识别模式` 是一种允许在需要真正 DualShock 4 的情况下使用的选项。由于技术原因,这并不会使设备成为真正的 DS4 ,但它确实使固件行为更像 DS4 。 + - `主机模式` - 这是大家熟悉的模式。它在 PS4/PS5 上工作,并具有您期望的授权限制。 + - `串流/模拟模式` - 用于只能使用 DualShock 4 的情况,但不一定需要任何形式的透传授权。 PS Remote Play 仅允许“真实”的 DualShock 4/DualSense 游戏控制器,但目前似乎不需要授权。带有 PADEMU USB 游戏控制器驱动程序的 Open PS2 Loader (OPL) 版本仅寻找“真实”的 DualShock 3/4 游戏控制器,但不需要授权即可工作。 +在直接使用 PS4/PS5 主机时,使用主机模式将允许游戏控制器按预期运行。这是默认模式。在直接使用串流/模拟模式时,由于技术原因,游戏控制器不会被检测到。 +在通过 PS Remote Play 游戏时,由于主机模式无法显示为真实的 DualShock 4 游戏控制器,因此不会被检测到。使用第三方串流客户端(如 Chiaki)则没有此限制。 +除非 PS Remote Play 有具体变化,否则串流/模拟模式不需要授权。 +- `认证设置` + - `上传密钥文件` - 上传从 DualShock 4 获取的密钥文件以认证并绕过 PS4 的 8 分钟超时限制 + - `主机 USB` - 使用加密狗、转换器或授权的 PS4 游戏控制器认证您的 GP2040-CE 设备 + + + + + +![GP2040-CE 配置器 - 额外的 PS4 设置](../../assets/images/gpc-settings-ps4-upload-key-files.png) + +- `上传密钥文件` + - `密钥 (PEM)` - 选择您的 PEM 文件 + - `序列号 (16 字节的十六进制 ASCII)` - 选择您的序列号文件 + - `签名 (256 字节的二进制)` - 选择您的签名文件 + +:::danger 警告 + +GP2040-CE 项目在任何情况下都不会提供任何与获取这些密钥和文件相关的文件或信息。 + +请勿通过任何通信渠道(如社交媒体、直接消息、 Github Issues、 GP2040-CE Discord)询问,否则将导致永久黑名单 / 封禁。 + +::: + + + + + +![GP2040-CE 配置器 - 额外的 PS4 设置](../../assets/images/gpc-settings-ps4-host-usb.png) + +要使用此设置,必须在 [网页配置器 > 外围设备映射 > USB 主机](./03-peripheral-mapping.mdx#usb-主机) 中配置 USB 外围设备。 + + + + +### 额外的 PS5 设置 + +![GP2040-CE 配置器 - 额外的 PS5 设置](../../assets/images/gpc-settings-ps5.png) + +- `触摸板(Touchpad)和分享键(Share)互换` - 分享键现在将映射到 A2 而不是 S1 ,触摸板现在将映射到 S1 而不是 A2 。 +- `识别模式` 是一种允许在需要真正 DualShock 4 的情况下使用的选项。由于技术原因,这并不会使设备成为真正的 DS4 ,但它确实使固件行为更像 DS4 。 + - `主机模式` - 这是大家熟悉的模式。它在 PS4/PS5 上工作,并具有您期望的授权限制。 + - `串流/模拟模式` - 用于只能使用 DualShock 4 的情况,但不一定需要任何形式的透传授权。 PS Remote Play 仅允许“真实”的 DualShock 4/DualSense 游戏控制器,但目前似乎不需要授权。带有 PADEMU USB 游戏控制器驱动程序的 Open PS2 Loader (OPL) 版本仅寻找“真实”的 DualShock 3/4 游戏控制器,但不需要授权即可工作。 +在直接使用 PS4/PS5 主机时,使用主机模式将允许游戏控制器按预期运行。这是默认模式。在直接使用串流/模拟模式时,由于技术原因,游戏控制器不会被检测到。 +在通过 PS Remote Play 游戏时,由于主机模式无法显示为真实的 DualShock 4 游戏控制器,因此不会被检测到。使用第三方串流客户端(如 Chiaki)则没有此限制。 +除非 PS Remote Play 有具体变化,否则串流/模拟模式不需要授权。 +- `认证设置` + - `主机 USB` - 使用加密狗、转换器或授权的 PS4 游戏控制器认证您的 GP2040-CE 设备 + + + + +![GP2040-CE 配置器 - 额外的 PS5 设置](../../assets/images/gpc-settings-ps5-host-usb.png) + +要使用此设置,必须在 [网页配置器 > 外围设备映射 > USB 主机](./03-peripheral-mapping.mdx#usb-主机) 中配置 USB 外围设备。 + + + + +### 额外的 Xbox One 设置 + +![GP2040-CE 配置器 - 额外的 Xbox One 设置](../../assets/images/gpc-settings-xbox-one.png) + +要使用此设置,必须在 [网页配置器 > 外围设备映射 > USB 主机](./03-peripheral-mapping.mdx#usb-主机) 中配置 USB 外围设备。 + +### 实验性 USB 集线器支持 + +GP2040-CE 现在支持实验性的 USB 集线器。使用 USB 集线器可以连接多个认证加密狗以及键盘。 + +USB 集线器支持无需更改任何设置,只需插入即可使用。 + +例如,您可以将以下设备连接到 USB 集线器: +1 - USB 键盘 +2 - Mayflash MagicBoots PS4 v1.1 加密狗 +3 - Mayflash MagicBoots Xbox 1 加密狗 +4 - Mayflash MagicBoots Xbox 360 加密狗 + +只要 USB 集线器兼容,这种组合应该允许您在 PS5 / Xbox / Xbox360 模式之间切换,而无需物理更换加密狗。 + +这也是首次允许您在 PS5 / Xbox / Xbox360 模式下使用键盘(只要使用了适当的加密狗,就不会出现认证问题)。 + +:::caution + +USB 集线器支持目前仍是实验性的。我们不建议将其用于商业应用。 + +我们不保证任何设备和集线器的组合能够正常工作,目前也不会接受关于不兼容组合的支持请求或 GitHub 问题。 + +我们发现某些 USB 集线器存在问题。我们不保证任何单个集线器是否会正常工作,也没有计划引入已知良好集线器列表。 + +我们还发现某些加密狗在添加到 USB 集线器设置时可能会出现问题,例如 Mayflash Magic-X。当 Mayflash Magic-X 添加到 USB 集线器时,它可能无法正常工作,还可能导致其他加密狗无法正常工作。 + +我们留给用户探索各种组合,看看哪些能正常工作,哪些不能。 + +如果您添加多个加密狗和 USB 集线器到设备和设置中,并且这些设备使用 LED,请注意电源消耗问题。如果您的设置出现问题,请尝试关闭 LED。 + +::: + +## 游戏控制器设置 + +![GP2040-CE 配置器 - 游戏控制器设置](../../assets/images/gpc-settings-gamepad.png) + +- `方向模式` - 选择默认的方向模式(十字键、左摇杆或右摇杆)。 +- `SOCD 覆盖模式` - 选择默认的 SOCD 覆盖模式(回中、后输入优先、先输入优先、关闭)。请注意, PS4 、 PS3 和 Nintendo Switch 模式不支持关闭 SOCD 设置,将默认使用回中 SOCD。 +- `强制设置模式` - 允许您锁定输入模式、进入网页配置器的能力或两者。启用网页配置器锁定后,如果您希望进行进一步更改,则需要重新刷写固件。 +- `4 向摇杆模式` - 启用 4 向摇杆模式,将防止非主方向输入被注册。当接收到第二个主方向输入时,游戏控制器方向将切换到最新的主方向,类似于 [SOCD 后输入优先](../../hotkeys.mdx#socd-后输入优先)。 +- `档案` - 启用不同的 GPIO 引脚映射档案。可通过网页配置器或 [快捷键](../../hotkeys.mdx#加载档案-1-6) 进行更改。 +- `去抖动延迟(以毫秒为单位)` - 固件忽略额外输入以防止开关干扰意外触发非预期输入的时间帧。 +- `使用游戏控制器输入控制显示迷你菜单` - 允许方向输入和按钮控制 `迷你菜单`。 + +:::note + +请注意,如果启用了 `使用游戏控制器输入控制显示迷你菜单`,在导航 `迷你菜单` 时输入仍会发送到设备。 + +例如,按下方向键向下以切换到下一个 `迷你菜单` 项目,同时也会在游戏中发送向下输入。 + +::: + +## 输入模式引导 + +![GP2040-CE 配置器 - 输入模式引导](../../assets/images/gpc-settings-boot-input-modes.png) + +对于菜单中列出的每个按钮,您可以分配一个不同的输入模式,在启动时按住该按钮进入(例如插入游戏控制器时或重置游戏控制器后立即)。 + +可选择的输入模式列表,请参阅 [输入模式](../../usage.mdx#输入模式)。 + +## 快捷键设置 + +![GP2040-CE 配置器 - 输入模式引导](../../assets/images/gpc-settings-hotkey.png) + +快捷键允许通过按下按钮组合来触发其他动作或输入。 + +默认情况下,可以分配 16 个 `快捷键`。 + +虽然固件中有 7 个默认 `快捷键`,但单个板配置可能有更多或更少,标准 `快捷键` 可能会有所不同。 + +当 `Function` 键未映射时,您将无法启用 `Fn` 开关。`Fn` 开关开启时需要按下 `Function` 键以及其他指定按键才能触发指定 `快捷键`。 + +:::note + +请注意,灰色的 `Fn` 开关并不意味着 `快捷键` 未激活。灰色的 `Fn` 开关表示未分配 `Function` 键。 + +如果未分配 `Function` 键,您将在页面顶部看到警告。 + +::: + +可用的快捷键操作将随着时间的推移而扩展。我们也可能会在未来扩展可配置的快捷键数量。有关可用快捷键操作的列表,请参阅 [快捷键](../../hotkeys.mdx)。 + +在每行 `快捷键` 的末尾,您将看到一个 `X` 按钮。按下此按钮将删除该 `快捷键`。如果您不希望保留默认 `快捷键`,也可以自由删除它们。 + +底部还有一个选项 `锁定快捷键`,启用后所有 `快捷键` 将停止工作。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/02-gpio-pin-mapping.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/02-gpio-pin-mapping.mdx new file mode 100644 index 0000000..80939a1 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/02-gpio-pin-mapping.mdx @@ -0,0 +1,83 @@ +--- +title: GPIO 引脚映射 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Map GPIO pins from RP2040 to gamepad inputs in GP2040-CE" +--- + +# GPIO 引脚映射 + +![GP2040-CE 配置器 - GPIO 引脚映射](../../assets/images/gpc-pin-mapping.png) + +在这里,您可以将 GP2040-CE 按钮重新映射到 RP2040 芯片上的不同 GPIO 引脚。这可以用于简单地重新映射按钮或绕过设备上可能有问题的 GPIO 引脚。 + +以下选项可用于分配给每个 GPIO 引脚: + +- 在 [按键](../../usage.mdx#按键) 中找到的标准游戏控制器输入 +- D-Pad 模式:数字模式、左摇杆和右摇杆 +- [双方向输入](../../add-ons/dual-direction-input.mdx):上、下、左、右 +- [SOCD 上优先](../../hotkeys.mdx#socd-上优先) +- [SOCD 回中](../../hotkeys.mdx#socd-回中) +- [SOCD 后输入优先](../../hotkeys.mdx#socd-后输入优先) +- [SOCD 先输入优先](../../hotkeys.mdx#socd-先输入优先) +- [SOCD 关闭](../../hotkeys.mdx#socd-关闭) +- [Turbo](../../add-ons/turbo.mdx) +- [宏](./09-macros.mdx) +- Function +- 额外功能 +- 模拟方向(模拟最大值输入 X[-/+] 和 Y[-/+]) +- 迷你菜单交互与导航 +- 倾斜 +- 专注模式启用 +- 切换 4 向摇杆模式 + +:::note +- 多个 [按键](../../usage.mdx#按键) 可以分配到单个 GPIO 引脚(例如 SOCD 覆盖和 [快捷键](../../hotkeys.mdx) 都可以激活)。 +- 选项不限于单个 GPIO 引脚分配,可以多次分配(例如,GPIO 引脚 0-29 都可以分配为“向上”输入,如果需要)。 + +::: + +## 引脚查看器 :video_game: + +此工具可用于查看哪个 GPIO 引脚物理连接到某个按钮。点击按钮并按照提示操作。系统会要求您按下按钮,并显示“按下的引脚”。 + +## 使用 :video_game: 映射按钮 + +![GP2040-CE 配置器 - GPIO 引脚映射 - "使用...映射按钮"](../../assets/images/gpc-pin-mapping-map-buttons.png) + +如果您不知道设备上的哪些引脚映射到哪些按钮,可以使用一个工具来帮助您。点击上图中的按钮并按照提示操作。系统会要求您依次按下在 [按键](../../usage.mdx#按键) 中找到的每个标准游戏控制器输入。 + +![GP2040-CE 配置器 - GPIO 引脚映射 - 提示](../../assets/images/gpc-pin-mapping-map-buttons-prompt.png) + +- 如果您不希望映射特定输入,可以点击 `跳过按钮` 并继续操作。 +- 如果您不需要映射更多输入,可以点击 `停止捕获`。 + +## 档案 + +您可以配置档案,根据设置的档案编号更改 GPIO 到 GP2040-CE 按钮的映射。这意味着您可以为不同的使用场景设置按钮布局,并在无需进入网页配置器重新映射 GPIO 引脚的情况下切换它们。 + +可以通过网页配置器的 [设置页面](../../web-configurator/menu-pages/01-settings.mdx) 或使用 [快捷键](../../hotkeys.mdx#加载档案-1-6) 更改档案编号。这些 `加载档案 #1-6`、`下一个档案` 或 `上一个档案` 快捷键没有默认输入组合,因此您可能需要在设置页面的 [快捷键设置](../../web-configurator/menu-pages/01-settings.mdx#快捷键设置) 中设置它们。首次启动时默认使用档案 #1,但会在重启后记住上次设置的档案。 + +### 档案名称 +可以设置档案名称以帮助识别档案的用途。如果您为不同使用场景设置了多个档案,这会非常有用。如果未设置档案名称,则档案会显示为 `档案 #`,其中 `#` 是档案编号。连接的显示屏会在档案更改时显示档案名称。 + +### 档案启用/禁用 +档案可以启用或禁用。如果档案被禁用,则使用 [快捷键](../../hotkeys.mdx "GP2040-CE | Hotkeys") 更改档案时不会显示该档案。第一个档案无法禁用。 + +:::info + +目前,档案仅限于更改 GPIO 引脚分配,无法用于更改其他设置或与 GPIO 引脚分配无直接关系的插件。这包括但不限于以下设置和插件: + +- 输入模式引导 +- 快捷键 +- 外围设备映射 +- 键盘映射分配 +- 倾斜输入 +- Wii 扩展 +- SNES 扩展 +- 专注模式 +- 键盘/鼠标主机按钮到键映射 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/03-peripheral-mapping.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/03-peripheral-mapping.mdx new file mode 100644 index 0000000..e5a13bc --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/03-peripheral-mapping.mdx @@ -0,0 +1,85 @@ +--- +title: 外围设备映射 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Map GPIO pins from RP2040 and configure settings for peripherals in GP2040-CE such as I2C and USB Host Ports" +--- + +import I2CTable from "../../snippets/_i2c-block-table.mdx"; +import SPITable from "../../snippets/_spi-block-table.mdx"; + +# 外围设备映射 + +![GP2040-CE 配置器 - 外围设备映射](../../assets/images/gpc-peripheral-mapping.png) + +在这里,您可以分配使用输入模式、外围设备和需要 I2C 及 USB 主机端口的插件所需的 GPIO 引脚。这些功能包括但不限于: + +- [PS4 输入模式](./01-settings.mdx#额外的-ps4-设置) +- [PS5 输入模式](./01-settings.mdx#额外的-ps5-设置) +- [OLED 显示屏](./07-display-configuration.mdx) +- [I2C 模拟 ADS1219](../../add-ons/i2c-analog-ads1219.mdx) +- [Xbox One 输入模式](./01-settings.mdx#额外的-xbox-one-设置) +- [键盘/鼠标主机插件](../../add-ons/keyboard-mouse-host.mdx) + +:::info + +点击网页配置器中的 (i) 工具提示以获取有关各种设置的更多信息。 + +::: + +## I2C + +每个 I2C 模块(`I2C0` 和 `I2C1`)都有独立的设置,在使用相应的 I2C 模块之前必须正确配置。这些设置必须正确完成,才能使用任何依赖 I2C 的功能或插件。 + +- `切换` - 开启或关闭指定的 I2C 模块。 +- `SDA` - 用于串行数据 (SDA) 的 GPIO 引脚。 +- `SCL` - 用于串行时钟 (SCL) 的 GPIO 引脚。 +- `速度` - 设置 I2C 通信的速度。 + - `普通 - 100000` + - `快速 - 400000` + - `快速增强 - 800000` + +:::caution + +SDA 和 SCL 引脚必须与下表中为每个 I2C 模块列出的引脚对之一匹配。如果未正确配置,您的 I2C 设备将无法正常工作。 + +::: + + + +## SPI + +每个 SPI 模块(SPI0 和 SPI1)都有独立的设置,在使用相应的 SPI 模块之前必须正确配置。这些设置必须正确完成,才能使用任何依赖 SPI 的功能或插件。 + +- `切换` - 开启或关闭指定的 SPI 模块。 +- `RX` - 用于接收数据的 GPIO 引脚 (MISO)。 +- `CS` - 用于芯片选择 (CS) 的 GPIO 引脚。 +- `SCK` - 用于串行时钟 (SCK) 的 GPIO 引脚。 +- `TX` - 用于发送数据的 GPIO 引脚 (MOSI)。 + +:::caution + +引脚必须与下表中为每个 SPI 模块列出的引脚集之一匹配。如果未正确配置,您的 SPI 设备将无法正常工作。 + +::: + + + +## USB 主机 + +设置 USB 主机端口时,选择的 GPIO 引脚没有限制。您可以选择任何可用的 GPIO 引脚(未被其他功能占用),并确保为 `D+` 选择的 GPIO 引脚在物理上紧邻一个可用于 `D-` 的 GPIO 引脚(例如,GPIO X 和 GPIO X+/-1)。 + +- `切换` - 开启或关闭 USB 主机端口。 +- `D+` - 用于在 USB 主机端口和 RP2040 之间传输正向数据的 GPIO 引脚。 +- `启用 5V` - 用于为主机端口提供 5V 电源的 GPIO 引脚。 +- `引脚顺序` - 此设置基于数据引脚连接到连续 GPIO 引脚的顺序。 + - `D+/D-` - GPIO 引脚按顺序设置为 `D+` 紧跟 `D-`(例如,D+ = 0,D- = 1)。 + - `D-/D+` - GPIO 引脚按顺序设置为 `D+` 紧接在 `D-` 之后(例如,D+ = 29,D- = 28)。 + +:::note 启用 5V + +大多数板不需要设置此项。这仅适用于少数板(例如 Adafruit RP2040 Feather USB Host),因为它们具有用于启用和禁用 USB 主机端口 5V 电源的引脚。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/05-led-configuration.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/05-led-configuration.mdx new file mode 100644 index 0000000..7b84338 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/05-led-configuration.mdx @@ -0,0 +1,110 @@ +--- +title: LED 配置 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Configure settings for addressable RGB LEDs on your controller" +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; +import { ColorBlock } from "@site/src/components/LEDColors"; + +# LED 配置 + +如果您使用了每个按键的 RGB LED 设置,可以在此处进行配置。 + +## RGB LED 配置 + +![GP2040-CE 配置器 - LED 配置](../../assets/images/gpc-rgb-led-config.png) + +- `数据引脚` - 驱动 RGB LED 数据线的 GPIO 引脚。设置为 `-1` 可禁用 RGB LED。 +- `LED 格式` - 与 RGB LED 通信使用的数据格式。如果不确定,默认的 `GRB` 通常是安全的选择。 +- `LED 布局` - 选择游戏控制器/按键的布局。这用于静态主题和某些每按键动画。 +- `每按键 LED 数量` - 设置链中每个按键的 LED 数量。 +- `最大亮度` - 设置 LED 的最大亮度,范围为 0-255。 +- `亮度级别` - 调整亮度时的循环级别数量。 + +## RGB LED 按键顺序 + +:::note + +请注意,RGB 按键 LED 必须是链中配置的第一个 LED。它们将在 RGB LED 灯条的索引 0 开始。 + +此外,目前每个按键在 LED 链中只能有一个实例。即使为每个按键分配了多个 LED,并且多个按键分配到不同的 GPIO 引脚,这种限制仍然适用。 + +::: + +![GP2040-CE 配置器 - RGB LED 按键顺序](../../assets/images/gpc-rgb-led-button-order.png) + +根据 LED 链的顺序重新排列按键。这因设备不同而异,由板和 LED 的制造商决定。 + +## 玩家 LED (XInput) + +`玩家 LED 类型` 可选择 `无`、`PWM` 或 `RGB`。 + +### PWM 玩家 LED + +:::note + +关于如何将 LED 连接到 GPIO 引脚,请参阅 [接线章节](../../controller-build/wiring.mdx)。 + +::: + +![GP2040-CE 配置器 - PWM 玩家 LED](../../assets/images/gpc-pled-pwm.png) + +- `PLED #[1-4] 引脚` - 标准 LED 连接的 GPIO 引脚。 + +### RGB 玩家 LED + +:::note + +请注意,RGB 玩家 LED 必须位于 LED 灯条上 RGB LED 按键之后的索引位置!Web 配置界面会根据 [RGB LED 按键顺序](#rgb-led-按键顺序) 中映射的按键数量和选择的 `每按键 LED 数量` 值建议起始索引。我们希望未来能移除此限制。 + +::: + +![GP2040-CE 配置器 - PWM 玩家 LED](../../assets/images/gpc-pled-rgb.png) + +- `PLED #[1-4] 索引` - RGB 灯条上 LED 模块的索引。 +- `RGB PLED 颜色` - 点击框以显示颜色选择器,或手动输入颜色。 + +### Case RGB LED + +![GP2040-CE 配置器 - RGB Case LED](../../assets/images/gpc-rgb-case-leds.png) + +Case RGB LED 允许您在设备内部或外部添加额外的 RGB LED,以增强 RGB 效果。 + +`颜色类型` 有以下选项: +- `关闭` - 无 Case RGB LED。 +- `环境` - Case RGB LED 将独立于按键 LED 设置运行。 +- `关联` - Case RGB LED 将匹配按键 LED 设置。 + +:::note + +在 `环境` 模式下,您可以使用以下快捷键更改 LED 设置。 + +| 快捷键 | 描述 | +| --------------------------------------- | ------------------------------------------------- | +| | 在 `环境`、`关联` 和 `关闭` 模式之间切换。 | +| | 增加 Case LED 的亮度。 | +| | 减少 Case LED 的亮度。 | +| | 切换 Case LED 的静态颜色到下一个颜色。 | +| | 切换 Case LED 的静态颜色到上一个颜色。 | +| | 切换到环境模式下的下一个效果。 | +| | 切换到环境模式下的上一个效果。 | + +::: + +![GP2040-CE 配置器 - RGB Case LED 设置](../../assets/images/gpc-rgb-case-leds-settings.png) + +选择 `环境` 或 `关联` 模式时,您还需要指定 Case LED 的起始索引以及 Case LED 的数量。 +- `RGB LED 索引` - Case RGB LED 在链中的起始位置。 +- `RGB LED 数量` - 用于 Case RGB LED 的 LED 数量。 + +:::note + +索引必须位于定义的最后一个按键 LED 之后,但可以在玩家 LED 和涡轮 LED 的前后。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/06-custom-led-theme.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/06-custom-led-theme.mdx new file mode 100644 index 0000000..34b7214 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/06-custom-led-theme.mdx @@ -0,0 +1,29 @@ +--- +title: 自定义 LED 主题 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Create a custom RGB LED theme for your controller with different colors on rest and when pressed" +--- + +# 自定义 LED 主题 + +![GP2040-CE 配置器 - 自定义 LED 主题](../../assets/images/gpc-rgb-led-custom-theme.png) + +- `启用` - 启用自定义 LED 主题。 +- `预览布局` - 用于预览 LED 主题的预定义布局。**注意:** 此功能仅用于预览,不会影响游戏控制器的实际操作。 +- `清除所有` - 提示确认以将当前主题重置为所有按钮黑色(LED 关闭)。如果不希望丢失自定义设置,请确保已保存并备份。 +- `为所有按键设置颜色` - 显示一个颜色选择器,用于将所有按钮设置为相同的普通或按下状态颜色。 +- `设置渐变` - 根据 `预览布局` 的选择,在动作按钮上设置水平渐变。 +- `设置按下时渐变` - 与 `设置渐变` 相同,但用于按钮按下状态。 +- `保存颜色` - 将自定义颜色保存到颜色选择器的调色板中。 +- `删除颜色` - 从颜色选择器的调色板中删除自定义颜色。默认颜色无法删除。 + +:::note + +所有保存的颜色和渐变选择都会保存在浏览器的本地存储中。 + +::: + +启用后,自定义 LED 主题将作为另一种动画模式可用,并可通过游戏控制器上的 `上一动画` 和 `下一动画` 快捷键进行循环切换。您还可以使用 [数据备份与恢复](./10-data-backup-restoration.mdx) 功能来创建和共享主题! diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/07-display-configuration.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/07-display-configuration.mdx new file mode 100644 index 0000000..e0230e8 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/07-display-configuration.mdx @@ -0,0 +1,142 @@ +--- +title: 显示屏配置 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Configure settings for an optional OLED display on your controller" +--- + +# 显示屏配置 + +GP2040-CE 支持使用显示模块,例如带有 SSD1306、SH1106 或 SH1107 显示 IC 的 OLED。 + +![GP2040-CE 配置器 - 显示屏配置](../../assets/images/gpc-display-config.png) + +## 硬件选项 + +- `启用` - 打开/关闭显示模块。 + +![GP2040-CE 配置器 - 显示屏配置 - 屏幕选项](../../assets/images/gpc-display-config-screen-options.png) + +## 屏幕选项 + +- `翻转显示` - 允许以多种方式翻转或镜像显示屏。 +- `反向显示` - 反转像素颜色,启用后会呈现出负片效果。 +- `电源管理` - 允许在挂起时关闭显示屏。 + +![GP2040-CE 配置器 - 显示屏配置 - 布局选项](../../assets/images/gpc-display-config-layout-options.png) + +## 布局选项 + +:::note 按键布局组合 + +请确保选择匹配的左右布局。有些布局组合可能会导致屏幕上的按键重叠。 + +::: + +## 按键布局 + +- `按键布局(左侧)` - 更改显示屏左侧按键和摇杆的布局。 +- `按键布局(右侧)` - 更改显示屏右侧按键和摇杆的布局。 +- `按键布局方向` - 允许翻转或切换整体布局。 + +## 状态栏布局 + +- `输入模式` - 允许在显示屏上显示或隐藏 `输入模式`。 +- `Turbo` - 允许在显示屏上显示或隐藏 `Turbo` 设置。 +- `方向模式` - 允许在显示屏上显示或隐藏 `方向模式`。 +- `SOCD 模式` - 允许在显示屏上显示或隐藏 `SOCD 模式`。 +- `宏模式` - 允许在显示屏上显示或隐藏 `宏模式`。 +- `档案` - 允许在显示屏上显示或隐藏 `档案` 名称(如果启用了档案)。 + +## 输入历史布局 + +- `输入历史` - 允许显示或隐藏输入历史记录。 + +输入历史有以下选项: +- `历史长度(字符)` - 显示在屏幕上的 `输入历史` 字符数(默认值为 21)。 +- `列` - 输入历史在屏幕上起始位置的列(默认值为 0)。 +- `行` - 输入历史在屏幕上起始位置的行(默认值为 7)。 + +:::note + +建议保持 `历史长度(字符)`、`列` 和 `行` 的默认值,除非您正在自定义显示屏。 + +::: + +## 模式选项 + +![GP2040-CE 配置器 - 显示屏配置 - 模式选项](../../assets/images/gpc-display-config-mode-options.png) + +- `启动画面模式` - 启用或禁用开机时显示的启动画面。 +- `启动画面持续时间` - 设置启动画面在开机时显示的时长。 +- `显示屏保护超时` - 在指定的分钟数后关闭显示屏。按下任何输入将重新打开显示屏。 +- `选择文件` - 上传自定义图片作为启动画面。 + +## 自定义启动画面 + +建议使用 128x64 的双色图片(或适合您显示屏的尺寸)。上传其他类型的图片会自动进行转换和调整大小。 + +支持的格式:BMP、GIF、JPG、JPEG、PNG、WEBP + +:::caution + +目前不支持动态 GIF。 + +::: + +查看我们社区的优秀自定义启动画面集合 [点此访问](../community-splash-screens.mdx)。 + +## 显示元素 + +![GP2040-CE 配置器 - 显示示例](../../assets/images/gpc-display-example.png) + +此部分包含显示元素的说明,并提供了一个示例,展示其在设备上的显示方式。 + +### 顶部 + +从左到右,显示元素包括: + +- [输入模式](../../usage.mdx#输入模式) - 显示当前的输入模式: + - `XINPUT` - XInput + - `SWITCH` - 任天堂 Switch + - `SWPRO` - 任天堂 Switch Pro 控制器 + - `DINPUT` - PS3/DirectInput + - `HID-KB` - 键盘 + - `PS4` - 游戏控制器模式设置为 `Controller`,认证成功后显示为 `PS4:AS` + - `PS4:AS` - [PS4 输入模式](../../web-configurator/menu-pages/01-settings.mdx#额外的-ps4-设置) 插件认证成功 + - `PS5` - 游戏控制器模式设置为 `Arcade Stick`,认证成功后显示为 `PS5:AS` + - `PS5:AS` - [PS5 输入模式](../../web-configurator/menu-pages/01-settings.mdx#额外的-ps5-设置) 插件认证成功 + - `XBONE` - 兼容 [Xbox One 输入模式](./01-settings.mdx#额外的-xbox-one-设置) + - `OGXBOX` - 原版 Xbox + - `GEN/MD` - 世嘉 Genesis/MegaDrive Mini + - `NGMINI` - NEOGEO Mini + - `PCE/TG` - PC Engine/Turbografx 16 Mini + - `EGRET` - EGRET II Mini + - `ASTRO` - ASTROCITY Mini + - `PSC` - PlayStation Classic +- [Turbo](../../add-ons/turbo.mdx) - 当启用 Turbo 时显示 `T##`,其中 ## 为每秒按下的次数。 +- 方向模式 - 显示当前的方向模式: + - `D` - [十字键模式](../../hotkeys.mdx#十字键模式) + - `L` - [左摇杆模式](../../hotkeys.mdx#左摇杆模式) + - `R` - [右摇杆模式](../../hotkeys.mdx#右摇杆模式) +- SOCD 覆盖模式 - 显示当前的 SOCD 覆盖模式: + - `SOCD-U` - [SOCD 上优先](../../hotkeys.mdx#socd-上优先) + - `SOCD-N` - [SOCD 回中](../../hotkeys.mdx#socd-回中) + - `SOCD-L` - [SOCD 后输入优先](../../hotkeys.mdx#socd-后输入优先) + - `SOCD-F` - [SOCD 先输入优先](../../hotkeys.mdx#socd-先输入优先) + - `SOCD-X` - [SOCD 关闭](../../hotkeys.mdx#socd-关闭) +- [宏](./09-macros.mdx) - 如果启用宏,`M` 会显示,无法禁用。 + +### 中间 + +此部分的显示取决于左侧和右侧 [按键布局](#布局选项) 的具体配置。 + +- 连发环 - 当在某个按键上启用连发模式时,该按键将显示一个较小的内环作为指示器。禁用时,该按键将消失。 + +![GP2040-CE 配置器 - 显示示例 - 启用 Turbo](../../assets/images/gpc-display-example-turbo.png) + +### 底部 + +- 输入历史 - 当启用并配置 [输入历史](../../add-ons/input-history.mdx) 插件时,将显示输入历史。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/08-add-ons-configuration.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/08-add-ons-configuration.mdx new file mode 100644 index 0000000..6fd3f93 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/08-add-ons-configuration.mdx @@ -0,0 +1,48 @@ +--- +title: 插件配置 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "General overview for community created add-ons that extend functionality on the GP2040-CE feature set" +--- + +# 插件配置 + +本节用于启用自定义插件,以扩展 GP2040-CE 的功能。由于社区创建了大量插件,每个插件都有其单独的文档页面。 + +:::caution + +部分插件为实验性功能,并非所有插件都能与其他插件互相兼容。 + +::: + +## 可用的插件 + +- [模拟摇杆](../../add-ons/analog.mdx) +- [BOOTSEL 按钮配置](../../add-ons/bootsel-button.mdx) +- [蜂鸣器扬声器](../../add-ons/buzzer-speaker.mdx) +- [DRV8833 马达震动配置](../../add-ons/drv8833-rumble.mdx) +- [双重方向输入 (DDI)](../../add-ons/dual-direction-input.mdx) +- [专注模式配置](../../add-ons/focus-mode.mdx) +- [I2C 模拟 ADS1219](../../add-ons/i2c-analog-ads1219.mdx) +- [I2C 模拟 ADS1256-SPI](../../add-ons/i2c-analog-ads1256-spi.mdx) +- [输入反转](../../add-ons/input-reverse.mdx) +- [键盘/鼠标主机配置](../../add-ons/keyboard-mouse-host.mdx) +- [板载 LED 配置](../../add-ons/on-board-led.mdx) +- [PCF8574 IO 扩展器](../../add-ons/pcf8575-io-expander.mdx) +- [响应式 LED](../../add-ons/reactive-led.mdx) +- [旋转编码器](../../add-ons/rotary-encoders.mdx) +- [SNES 输入](../../add-ons/snes-input.mdx) +- [SOCD 选择滑块](../../add-ons/socd-selection-slider.mdx) +- [倾斜输入](../../add-ons/tilt-input.mdx) +- [连发 (Turbo)](../../add-ons/turbo.mdx) +- [Wii 扩展](../../add-ons/wii-extensions.mdx) + +## 已弃用的插件 + +- `玩家编号` - 已由主页面 (设置)[../../web-configurator/menu-pages/01-settings.mdx] 中设置 PID/VID 的功能取代。 +- `PS4 模式` - 已移至 (设置)[../../web-configurator/menu-pages/01-settings.mdx] 页面,在 `当前输入模式` 下的 PS4。 +- `PS 直通模式` - 已移至 (设置)[../../web-configurator/menu-pages/01-settings.mdx] 页面,在 `当前输入模式` 下的 PS4。 +- `Xbox One 直通模式` - 已移至 (设置)[../../web-configurator/menu-pages/01-settings.mdx] 页面,在 `当前输入模式` 下的 Xbox One。 +- `输入历史记录` - 已移至 (显示屏配置)[../../web-configurator/menu-pages/07-display-Configuration.mdx] 页面,在 `布局选项` 下。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/09-macros.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/09-macros.mdx new file mode 100644 index 0000000..dbad3b1 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/09-macros.mdx @@ -0,0 +1,101 @@ +--- +title: 宏配置 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Macro settings and how to create input macros" +--- + +# 宏配置 + +宏是一系列或组合的游戏控制器输入,可以通过单个按钮或按钮组合触发。 + +![GP2040-CE 配置器 - 宏](../../assets/images/gpc-macros.png) + +## 宏选项 + +`宏按钮引脚` - 当启用了并设置了 `使用宏按钮 + 游戏控制器按键来触发` 时,用于激活宏的 GPIO 引脚。 + +### 标签 + +这是宏的名称,填写与否均可。 + +### 状态 + +- `禁用` - 宏不可用。 +- `开启` - 宏可用,当通过 GPIO 引脚或在 [`使用宏按钮 + 游戏控制器按键来触发`](#使用宏按钮--游戏控制器按键来触发) 中设置的组合触发时生效。 + +### 可打断 + +- `关闭` - 宏无法被中断,所有命令将执行直到宏完成。 +- `开启` - 任何输入都会停止当前正在执行的宏,或者如果输入是另一个宏,则中断的宏触发器将开始执行。 + +:::note 中断宏 + +当一个宏因任何原因停止后再次触发时,宏将从头开始执行。 + +::: + +### 独占 + +- `关闭` - 用户的额外输入会在宏执行的同时发送,从而导致宏输入与用户输入混合。 +- `开启` - 仅允许宏输入,任何额外的用户游戏控制器输入将无效。 + +:::note + +此选项**仅**在 `可打断` 被禁用时可用。 + +::: + +### 显示帧数 + +- `关闭` - 宏输入行编辑器中的持续时间将以毫秒 (ms) 显示。 +- `开启` - 宏输入行编辑器中的持续时间将以帧数显示,以每秒 60 帧为准。 + +### 使用宏按钮 + 游戏控制器按键来触发 + +- `关闭` - 此宏分配给板上的 GPIO 引脚,当按下时,宏将被触发。 +- `开启` - 此宏分配给一个按钮组合 `宏按钮引脚 + 输入`,其中输入可以是任何标准的游戏控制器输入。 + +### 宏激活类型 + +描述了 GPIO 引脚或在 [`使用宏按钮 + 游戏控制器按键来触发`](#使用宏按钮--游戏控制器按键来触发) 中设置的组合如何触发和重复宏。 + +- 按下 - 按下按钮会触发宏一次。 +- 按住重复 - 按住按钮会重复触发宏。 +- 切换 - 按下按钮会使宏重复触发,再次按下按钮会停止宏的重复触发。 + +## 宏输入行编辑器 + +每个宏最多可以包含 30 行,每行最多可以包含 18 个游戏控制器输入(使用所有可用的游戏控制器输入)。 + +![GP2040-CE 配置器 - 宏输入行](../../assets/images/gpc-macros-input-line.png) + +在 `编辑器` 标签中,每行输入由以下元素从左到右组成: + +`输入行持续时间` 毫秒/帧 `输入` | `松开并等待时间` 毫秒 + +- 输入行持续时间 - 输入保持的时间。(最大值为 4,294,967 毫秒或 268,435 帧) +- 输入 - 执行输入行期间要保持的输入。 +- 松开并等待时间 - 当前输入行执行完毕后与下一行开始执行之间的时间间隔。(最大值为 4,294,967 毫秒或 268,435 帧) + +:::note 删除输入行 + +要删除一个输入行,双击 "x" 按钮。 + +::: + +## 高级宏输入行编辑器 + +`高级` 部分允许您复制和粘贴宏,方便分享。 + +![GP2040-CE 配置器 - 宏输入行](../../assets/images/gpc-macros-input-line-advanced.png) + +在这里,您可以复制和粘贴您制作的宏以便分享,也可以导入他人制作并分享的宏。 + +:::warning + +尽管可以在此处编写宏,但建议仍然使用 `编辑器` 标签在 UI 中从头创建宏。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/10-data-backup-restoration.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/10-data-backup-restoration.mdx new file mode 100644 index 0000000..e723a80 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/10-data-backup-restoration.mdx @@ -0,0 +1,23 @@ +--- +title: 数据备份和恢复 +# tags: +# - +# pagination_next: null +# pagination_prev: null +description: "Backup and Restore your controller settings to an external configuration JSON file" +--- + +# 数据备份和恢复 + +![GP2040-CE 配置器 - 数据备份与恢复](../../assets/images/gpc-backup-and-restore.png) + +- `备份至文件` - 允许您选择备份哪些内容到文件(默认情况下全部选中)。 +- `从文件恢复` - 允许您选择从文件恢复哪些内容(默认情况下全部选中)。 + +:::warning + +从 GP2040-CE 版本 0.7.6 开始,导入早期版本备份中的 GPIO 引脚映射将无效。如果您的游戏控制器固件文件可用,建议对游戏控制器进行 [闪存清除](../../installation.mdx#闪存清除流程) 并重新刷写 GP2040-CE v0.7.6。 + +请注意,这将清除游戏控制器在闪存清除流程之前的所有数据。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/11-reset-settings.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/11-reset-settings.mdx new file mode 100644 index 0000000..a8b7a35 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/menu-pages/11-reset-settings.mdx @@ -0,0 +1,26 @@ +--- +title: 重置设置 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Perform a firmware reset on your controller" +--- + +# 重置设置 + +![GP2040-CE 配置器 - 重置设置](../../assets/images/gpc-reset-settings.png) + +`重置` 选项会将所有设置恢复为原始板配置设置。 + +:::note + +请注意,如果您使用的是某人制作的自定义设备或其它成品设备,并且他们对基础配置进行了更改,重置后可能会导致设备上的功能和更改无法正常工作。 + +这种情况可能仅发生在未包含在我们主发行版中的设备上。 + +如果您的设备未列在我们主发行版中,建议在重置设置之前联系卖家。 + +GP2040-CE 无法协助解决与未包含在我们发行版中的设备相关的配置问题。 + +::: diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/web-configurator.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/web-configurator.mdx new file mode 100644 index 0000000..c3611ad --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/web-configurator/web-configurator.mdx @@ -0,0 +1,112 @@ +--- +title: GP2040-CE 网页配置器 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "GP2040-CE's Web-Based Configuration Application: Just hold S2 on boot or hold S2+B3+B4 while already plugged in. Then go to http://192.168.7.1 to access the Web Configurator." +--- + +import InputLabelSelector, { + Hotkey, +} from "@site/src/components/LabelSelector.tsx"; + +# GP2040-CE 网页配置器 + +选择要在使用指南中显示的按键标签:: + + +
+ +GP2040-CE 包含一个内置的基于 Web 的配置应用程序,您可以通过在将游戏控制器插入 PC 时按住 ,或在游戏控制器插入时按住 五秒钟来启动它。然后,在 Web 浏览器中访问 [http://192.168.7.1](http://192.168.7.1) 即可开始配置。 + +### 支持 + + - Windows + - Mac + - Linux + - SteamOS + - iPadOS + +### 不完全支持 + + - Android + - iOS + +:::note + +并非所有的 Android 和 iOS 设备都支持网页配置器。在我们的测试中,一些 Android 设备可以工作,而另一些则不行。大多数基于 USB-C 的 iOS 设备都能工作。我们没有记录哪些设备可以或不可以工作。 + +::: + +## 在 Windows PC 上访问网页配置器时遇到问题 + +如果您的 Windows PC 无法访问 GP2040-CE 游戏控制器的内置网页配置器,请尝试以下步骤: + +1 - **确保您处于网页配置模式** + + - 确保您的游戏控制器处于网页配置模式。 + - 验证 USB 线缆连接牢固,并支持数据传输(有些线缆只支持供电)。 + +2 - **尝试不同的浏览器** + + - 某些浏览器可能会阻止本地设备访问。请尝试 Chrome、Firefox 或 Edge。 + - 暂时禁用浏览器扩展(如广告拦截器)。 + +3 - **检查 URL** + + - 网页配置的 URL 是 [http://192.168.7.1](http://192.168.7.1)。 + +4 - **暂时禁用防火墙 / 杀毒软件** + + - 安全软件可能会阻止通信。请尝试暂时禁用保护。 + +5 - **尝试另一个 USB 端口 / PC / 数据线** + + - 在不同的端口或不同的计算机上进行测试,或更换另一根数据线。 + +6 - **尝试重启您的计算机** + + - 尝试重启您的计算机。 + +:::warning + +除了上述情况,您的 PC 上安装的驱动程序可能存在问题。由于存在导致系统问题的风险,GP2040-CE 团队不会协助解决基于驱动程序的问题,也不会建议安装或卸载驱动程序。 + +::: + +:::note + +Linux 发行版可能需要一些额外的步骤才能访问网页配置器;请参阅 [Linux 安装](https://www.google.com/search?q=%23linux-setup)。 + +::: + +## Linux 安装 + +当您在按住 的同时插入游戏控制器时,如果您运行 `dmesg`,您应该会在内核日志中看到它已连接: + +```sh +[72.291060] usb 1-3: new full-speed USB device number 12 using xhci_hcd +[72.450166] usb 1-3: New USB device found, idVendor=cafe, idProduct=4028, bcdDevice= 1.01 +[72.450172] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +[72.450174] usb 1-3: Product: TinyUSB Device +[72.450176] usb 1-3: Manufacturer: TinyUSB +[72.450177] usb 1-3: SerialNumber: 123456 +[72.484285] rndis_host 1-3:1.0 usb0: register 'rndis_host' at usb-0000:06:00.1-3, RNDIS device, 02:02:84:6a:96:00 +[72.498630] rndis_host 1-3:1.0 enp6s0f1u3: renamed from usb0 +``` + +在上面的示例中,**enp6s0f1u3** 是您游戏控制器的虚拟以太网接口。如果您没有看到第一行 `rndis_host`,请确保您的内核中已编译 `CONFIG_USB_NET_RNDIS_HOST` 或将其作为模块。 + +网页配置器会自动运行,您只需要能够访问它即可。某些配置会自动设置路由,因此现在请在浏览器中尝试 [http://192.168.7.1](http://192.168.7.1)。如果无法加载,请尝试通过以下命令手动为接口配置 IP:`sudo ifconfig enp6s0f1u3 192.168.7.2`。 + +无论您是否需要手动添加 IP,您都应该会得到类似如下的路由: + +```sh +% ip route +default via 10.0.5.1 dev enp5s0 proto dhcp src 10.0.5.38 metric 2 +10.0.5.0/24 dev enp5s0 proto dhcp scope link src 10.0.5.38 metric 2 +192.168.7.0/24 dev enp6s0f1u3 proto kernel scope link src 192.168.7.2 <--- +``` + +然后您就可以在浏览器中访问配置页面了。 diff --git a/i18n/zh/docusaurus-plugin-content-pages/assets/images/gp2040-ce-logo.png b/i18n/zh/docusaurus-plugin-content-pages/assets/images/gp2040-ce-logo.png new file mode 100644 index 0000000..5b15b2b Binary files /dev/null and b/i18n/zh/docusaurus-plugin-content-pages/assets/images/gp2040-ce-logo.png differ diff --git a/i18n/zh/docusaurus-plugin-content-pages/downloads.mdx b/i18n/zh/docusaurus-plugin-content-pages/downloads.mdx new file mode 100644 index 0000000..0288070 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-pages/downloads.mdx @@ -0,0 +1,33 @@ +--- +title: 下载 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "Pre-compiled firmware builds for supported devices. Verify that a firmware build (.uf2) is compatible with your device before flashing." +--- + +import { + Microcontrollers, + OfficialDevices, + OpenSourceDevices, + ClosedSourceDevices, +} from "@site/src/components/Download.tsx"; + +# 下载 + +## 微控制器板 + + + +## 官方项目主板 + + + +## 开源社区设备 + + + +## 闭源社区设备 + + \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-pages/index.mdx b/i18n/zh/docusaurus-plugin-content-pages/index.mdx new file mode 100644 index 0000000..cc5c024 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-pages/index.mdx @@ -0,0 +1,109 @@ +--- +title: GP2040-CE 主页 +# tags: +# - +pagination_next: null +pagination_prev: null +description: "GP2040-CE (Community Edition) is a gamepad firmware for the Raspberry Pi Pico and other boards based on the RP2040 microcontrollers that combines multi-platform compatibility, low latency and a rich feature set to provide endless customization possibilities without sacrificing performance." +--- + +

+ + ![GP2040-CE](./assets/images/gp2040-ce-logo.png) + +

+ +

+ 基于RP2040的多平台游戏控制器固件 +

+ +

+ + +
+ + +

+ +

+ GP2040-CE(社区版)是一款用于树莓派 Pico 和其他基于 RP2040 微控制器的游戏控制器固件,结合了多平台兼容性、低延迟和丰富的功能集,为用户提供了无限的自定义可能性,同时不牺牲性能。 +

+ +

+ GP2040-CE 兼容 PC、PS3、PS4、PS5、Nintendo Switch、Xbox One、Steam Deck、MiSTer 和 Android。 +

+ +## 链接 + +[下载](./downloads) | [安装](/installation) | [接线](/controller-build/wiring) | [使用](/usage) | [常见问题](/faq/faq-general) | [GitHub](https://github.com/OpenStickCommunity/GP2040-CE) + +## 功能 + +- 可选择 13 种输入模式,包括 X-Input、Nintendo Switch、Playstation 4/5、Xbox One、D-Input 和键盘模式 +- Xinput 平均输入延迟为 0.76ms,Playstation 5 平均输入延迟为 0.90ms +- 多种 SOCD 覆盖模式 - 上优先(又称无摇杆模式)、回中、后输入优先和先输入优先 +- 通过方向键输入模拟左摇杆和右摇杆,以及专用切换开关 +- 方向键 + LS/RS 双方向输入支持 +- 按钮反转输入支持 +- [连发 (Turbo) 和 Turbo LED](/add-ons/turbo),支持速度选择 +- 每个按钮支持 RGB LED +- PWM 玩家指示灯 LED 支持(仅限 XInput) +- 支持多种 LED 配置文件 +- 支持 128x64 单色 I2C 显示屏 - 兼容 SSD1306、SH1106 和 SH1107 +- 自定义启动画面,支持通过网页配置轻松上传图像 +- 支持被动蜂鸣器扬声器(3V 或 5V) +- [内置嵌入式网页配置器](/web-configurator) - 无需下载! + +访问 [GP2040-CE 使用指南](/usage) 页面了解更多详情。 + +## 性能 + +输入延迟使用 [WydD 的 inputlag.science 网站](https://inputlag.science/controller/methodology) 中描述的方法进行测试,固件使用默认的 1000 Hz(1ms)轮询率。您可以在 [这里](https://github.com/OpenStickCommunity/Site/blob/main/latency_testing/README.md) 阅读我们用于延迟测试的设置,以便自行测试或了解用于测试的设备。 + +| 版本 | 模式 | 轮询率 | 最小值 | 最大值 | 平均值 | 标准差 | 准时概率 | 1帧跳过概率 | 2帧跳过概率 | +| ------- | --------- | -------- | -------- | -------- | -------- | -------- | ---------- | ------------- | ------------- | +| v0.7.11 | Xinput | 1 ms | 0.45 ms | 1.28 ms | 0.76 ms | 0.24 ms | 98.48% | 1.52% | 0% | +| v0.7.11 | Switch | 1 ms | 0.41 ms | 1.23 ms | 0.72 ms | 0.24 ms | 98.53% | 1.47% | 0% | +| v0.7.11 | HID USB | 1 ms | 0.41 ms | 1.30 ms | 0.72 ms | 0.24 ms | 98.53% | 1.47% | 0% | +| v0.7.11 | PS3 | 1 ms | 0.52 ms | 1.46 ms | 0.83 ms | 0.24 ms | 98.38% | 1.62% | 0% | +| v0.7.11 | PS4 | 1 ms | 0.55 ms | 2.37 ms | 0.90 ms | 0.32 ms | 98.19% | 1.81% | 0% | +| v0.7.11 | PS5 | 1 ms | 0.55 ms | 2.37 ms | 0.91 ms | 0.33 ms | 98.17% | 1.83% | 0% | + +完整测试结果可在 [GP2040-CE v0.7.11 固件延迟测试结果.xlsx](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.11.xlsx) 表中找到。 + +v0.7.10 的结果可在 [这里](https://github.com/OpenStickCommunity/Site/raw/main/latency_testing/GP2040-CE_Firmware_Latency_Test_Results_v0.7.10.xlsx) 找到。之前的测试结果可在 [`latency_testing`](https://github.com/OpenStickCommunity/Site/tree/main/latency_testing) 文件夹中找到。 + +## 支持 + +如果您希望讨论功能、问题或任何与 GP2040-CE 相关的内容,请 [创建 issue](https://github.com/OpenStickCommunity/GP2040-CE/issues/new) 或加入 [OpenStick GP2040-CE Discord](https://discord.gg/k2pxhke7q8) 支持频道。 + +## 贡献 + +希望帮助改进 GP2040-CE?有很多方式可以参与! + +### 社区参与 + +有一个很酷的新功能想法,或者只是想与开发人员讨论一些技术细节?加入 [OpenStick GP2040-CE Discord](https://discord.gg/k2pxhke7q8) 服务器,与我们活跃且不断壮大的社区互动! + +### 拉取请求 + +欢迎并鼓励提交拉取请求以进行功能增强、错误修复和文档更新。 + +请遵守您正在处理的文件的编码风格,并在存在 `.editorconfig` 文件时强制使用。 + +## 致谢 + +- [FeralAI](https://github.com/FeralAI) 构建了 [GP2040](https://github.com/FeralAI/GP2040),为这个社区项目奠定了基础 +- Ha Thach 的优秀 [TinyUSB 库](https://github.com/hathach/tinyusb) 示例 +- fluffymadness 的 [tinyusb-xinput](https://github.com/fluffymadness/tinyusb-xinput) 示例 +- Kevin Boone 的 [关于使用 RP2040 闪存作为模拟 EEPROM 的博客文章](https://kevinboone.me/picoflash.html) +- [bitbank2](https://github.com/bitbank2) 提供的 [OneBitDisplay](https://github.com/bitbank2/OneBitDisplay) 和 [BitBang_I2C](https://github.com/bitbank2/BitBang_I2C) 库,这些库已移植用于 Pico SDK +- [arntsonl](https://github.com/arntsonl) 提供了出色的清理和功能增强,使我们达到了 v0.5.0 +- [alirin222](https://github.com/alirin222) 提供了出色的 Turbo 代码(在 Twitter 上为 [@alirin222](https://twitter.com/alirin222)) +- [deeebug](https://github.com/deeebug) 改进了 Web-UI 并修复了 PS3 Home 按钮问题 +- [TheTrain](https://github.com/TheTrainGoes/GP2040-Projects) 和 [Fortinbra](https://github.com/Fortinbra) 帮助推动我们的社区发展 +- [PassingLink](https://github.com/passinglink/passinglink) 提供了有关 PS4 实现的技术细节和代码 +- [Youssef Habchi](https://youssef-habchi.com/) 允许我们购买 Road Rage 字体的使用许可 +- [tamanegitaro](https://github.com/tamanegitaro/) 和 [alirin222](https://github.com/alirin222) 为迷你/经典游戏控制器工作提供了基础 +- [Ryzee119](https://github.com/Ryzee119) 提供了出色的 [ogx360_t4](https://github.com/Ryzee119/ogx360_t4/) 和 xid_driver 库,用于支持原版 Xbox +- [Santroller](https://github.com/Santroller/Santroller) 和 [GIMX](https://github.com/matlo/GIMX) 提供了使用直通认证 Xbox One 的技术示例 diff --git a/i18n/zh/docusaurus-theme-classic/navbar.json b/i18n/zh/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000..919b4a1 --- /dev/null +++ b/i18n/zh/docusaurus-theme-classic/navbar.json @@ -0,0 +1,22 @@ +{ + "logo.alt": { + "message": "GP2040-CE Logo", + "description": "The alt text of navbar logo" + }, + "item.label.Documentation": { + "message": "文档", + "description": "Navbar item with label Documentation" + }, + "item.label.Web Config": { + "message": "网页设置", + "description": "Navbar item with label Web Config" + }, + "item.label.Contribute": { + "message": "贡献", + "description": "Navbar item with label Contribute" + }, + "item.label.Downloads": { + "message": "下载", + "description": "Navbar item with label Downloads" + } +} diff --git a/src/components/Download.tsx b/src/components/Download.tsx index 1cea082..3a80263 100644 --- a/src/components/Download.tsx +++ b/src/components/Download.tsx @@ -3,6 +3,7 @@ import styles from './download.module.css'; import LinkIcon from './LinkIcon'; import boards from '../config/boards'; import { useGitHubInfo } from '../hooks/useGitHubInfo'; +import { translate } from '@docusaurus/Translate'; const createDownloadLink = ({ releaseVersion, configName }) => releaseVersion @@ -31,10 +32,28 @@ const RenderDownloadBox = ({
{desc()}
diff --git a/src/components/LabelSelector.tsx b/src/components/LabelSelector.tsx index a45a983..fb956af 100644 --- a/src/components/LabelSelector.tsx +++ b/src/components/LabelSelector.tsx @@ -3,6 +3,7 @@ import Select from 'react-select'; import { create } from 'zustand'; import styles from '@site/src/components/labelselector.module.css'; import { persist } from 'zustand/middleware'; +import { translate } from '@docusaurus/Translate'; const inputLabels = [ { value: 'GP2040', label: 'GP2040' }, @@ -16,158 +17,158 @@ const inputLabels = [ const labelData = { GP2040: { - name: 'GP2040', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: 'B1', - B2: 'B2', - B3: 'B3', - B4: 'B4', - L1: 'L1', - R1: 'R1', - L2: 'L2', - R2: 'R2', - S1: 'S1', - S2: 'S2', - L3: 'L3', - R3: 'R3', - A1: 'A1', - A2: 'A2', - Function: 'Function', + name: translate({id: 'GP2040.name', message: 'GP2040'}), + Up: translate({id: 'GP2040.Up', message: 'Up'}), + Down: translate({id: 'GP2040.Down', message: 'Down'}), + Left: translate({id: 'GP2040.Left', message: 'Left'}), + Right: translate({id: 'GP2040.Right', message: 'Right'}), + B1: translate({id: 'GP2040.B1', message: 'B1'}), + B2: translate({id: 'GP2040.B2', message: 'B2'}), + B3: translate({id: 'GP2040.B3', message: 'B3'}), + B4: translate({id: 'GP2040.B4', message: 'B4'}), + L1: translate({id: 'GP2040.L1', message: 'L1'}), + R1: translate({id: 'GP2040.R1', message: 'R1'}), + L2: translate({id: 'GP2040.L2', message: 'L2'}), + R2: translate({id: 'GP2040.R2', message: 'R2'}), + S1: translate({id: 'GP2040.S1', message: 'S1'}), + S2: translate({id: 'GP2040.S2', message: 'S2'}), + L3: translate({id: 'GP2040.L3', message: 'L3'}), + R3: translate({id: 'GP2040.R3', message: 'R3'}), + A1: translate({id: 'GP2040.A1', message: 'A1'}), + A2: translate({id: 'GP2040.A2', message: 'A2'}), + Function: translate({id: 'GP2040.Function', message: 'Function'}), }, XInput: { - name: 'XInput', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: 'A', - B2: 'B', - B3: 'X', - B4: 'Y', - L1: 'LB', - R1: 'RB', - L2: 'LT', - R2: 'RT', - S1: 'Back', - S2: 'Start', - L3: 'LS', - R3: 'RS', - A1: 'Guide', - A2: '(A2)', - Function: 'Function', + name: translate({id: 'XInput.name', message: 'XInput'}), + Up: translate({id: 'XInput.Up', message: 'Up'}), + Down: translate({id: 'XInput.Down', message: 'Down'}), + Left: translate({id: 'XInput.Left', message: 'Left'}), + Right: translate({id: 'XInput.Right', message: 'Right'}), + B1: translate({id: 'XInput.B1', message: 'A'}), + B2: translate({id: 'XInput.B2', message: 'B'}), + B3: translate({id: 'XInput.B3', message: 'X'}), + B4: translate({id: 'XInput.B4', message: 'Y'}), + L1: translate({id: 'XInput.L1', message: 'LB'}), + R1: translate({id: 'XInput.R1', message: 'RB'}), + L2: translate({id: 'XInput.L2', message: 'LT'}), + R2: translate({id: 'XInput.R2', message: 'RT'}), + S1: translate({id: 'XInput.S1', message: 'Back'}), + S2: translate({id: 'XInput.S2', message: 'Start'}), + L3: translate({id: 'XInput.L3', message: 'LS'}), + R3: translate({id: 'XInput.R3', message: 'RS'}), + A1: translate({id: 'XInput.A1', message: 'Guide'}), + A2: translate({id: 'XInput.A2', message: '(A2)'}), + Function: translate({id: 'XInput.Function', message: 'Function'}), }, DirectInput: { - name: 'DirectInput', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: '2', - B2: '3', - B3: '1', - B4: '4', - L1: '5', - R1: '6', - L2: '7', - R2: '8', - S1: '9', - S2: '10', - L3: '11', - R3: '12', - A1: '13', - A2: '14', - Function: 'Function', + name: translate({id: 'DirectInput.name', message: 'DirectInput'}), + Up: translate({id: 'DirectInput.Up', message: 'Up'}), + Down: translate({id: 'DirectInput.Down', message: 'Down'}), + Left: translate({id: 'DirectInput.Left', message: 'Left'}), + Right: translate({id: 'DirectInput.Right', message: 'Right'}), + B1: translate({id: 'DirectInput.B1', message: '2'}), + B2: translate({id: 'DirectInput.B2', message: '3'}), + B3: translate({id: 'DirectInput.B3', message: '1'}), + B4: translate({id: 'DirectInput.B4', message: '4'}), + L1: translate({id: 'DirectInput.L1', message: '5'}), + R1: translate({id: 'DirectInput.R1', message: '6'}), + L2: translate({id: 'DirectInput.L2', message: '7'}), + R2: translate({id: 'DirectInput.R2', message: '8'}), + S1: translate({id: 'DirectInput.S1', message: '9'}), + S2: translate({id: 'DirectInput.S2', message: '10'}), + L3: translate({id: 'DirectInput.L3', message: '11'}), + R3: translate({id: 'DirectInput.R3', message: '12'}), + A1: translate({id: 'DirectInput.A1', message: '13'}), + A2: translate({id: 'DirectInput.A2', message: '14'}), + Function: translate({id: 'DirectInput.Function', message: 'Function'}), }, 'Nintendo Switch': { - name: 'Nintendo Switch', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: 'B', - B2: 'A', - B3: 'Y', - B4: 'X', - L1: 'L', - R1: 'R', - L2: 'ZL', - R2: 'ZR', - S1: 'Minus', - S2: 'Plus', - L3: 'LS', - R3: 'RS', - A1: 'Home', - A2: 'Capture', - Function: 'Function', + name: translate({id: 'NintendoSwitch.name', message: 'Nintendo Switch'}), + Up: translate({id: 'NintendoSwitch.Up', message: 'Up'}), + Down: translate({id: 'NintendoSwitch.Down', message: 'Down'}), + Left: translate({id: 'NintendoSwitch.Left', message: 'Left'}), + Right: translate({id: 'NintendoSwitch.Right', message: 'Right'}), + B1: translate({id: 'NintendoSwitch.B1', message: 'B'}), + B2: translate({id: 'NintendoSwitch.B2', message: 'A'}), + B3: translate({id: 'NintendoSwitch.B3', message: 'Y'}), + B4: translate({id: 'NintendoSwitch.B4', message: 'X'}), + L1: translate({id: 'NintendoSwitch.L1', message: 'L'}), + R1: translate({id: 'NintendoSwitch.R1', message: 'R'}), + L2: translate({id: 'NintendoSwitch.L2', message: 'ZL'}), + R2: translate({id: 'NintendoSwitch.R2', message: 'ZR'}), + S1: translate({id: 'NintendoSwitch.S1', message: 'Minus'}), + S2: translate({id: 'NintendoSwitch.S2', message: 'Plus'}), + L3: translate({id: 'NintendoSwitch.L3', message: 'LS'}), + R3: translate({id: 'NintendoSwitch.R3', message: 'RS'}), + A1: translate({id: 'NintendoSwitch.A1', message: 'Home'}), + A2: translate({id: 'NintendoSwitch.A2', message: 'Capture'}), + Function: translate({id: 'NintendoSwitch.Function', message: 'Function'}), }, PS4: { - name: 'PS4', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: 'Cross', - B2: 'Circle', - B3: 'Square', - B4: 'Triangle', - L1: 'L1', - R1: 'R1', - L2: 'L2', - R2: 'R2', - S1: 'Share', - S2: 'Options', - L3: 'L3', - R3: 'R3', - A1: 'PS', - A2: 'Touchpad', - Function: 'Function', + name: translate({id: 'PS4.name', message: 'PS4'}), + Up: translate({id: 'PS4.Up', message: 'Up'}), + Down: translate({id: 'PS4.Down', message: 'Down'}), + Left: translate({id: 'PS4.Left', message: 'Left'}), + Right: translate({id: 'PS4.Right', message: 'Right'}), + B1: translate({id: 'PS4.B1', message: 'Cross'}), + B2: translate({id: 'PS4.B2', message: 'Circle'}), + B3: translate({id: 'PS4.B3', message: 'Square'}), + B4: translate({id: 'PS4.B4', message: 'Triangle'}), + L1: translate({id: 'PS4.L1', message: 'L1'}), + R1: translate({id: 'PS4.R1', message: 'R1'}), + L2: translate({id: 'PS4.L2', message: 'L2'}), + R2: translate({id: 'PS4.R2', message: 'R2'}), + S1: translate({id: 'PS4.S1', message: 'Share'}), + S2: translate({id: 'PS4.S2', message: 'Options'}), + L3: translate({id: 'PS4.L3', message: 'L3'}), + R3: translate({id: 'PS4.R3', message: 'R3'}), + A1: translate({id: 'PS4.A1', message: 'PS'}), + A2: translate({id: 'PS4.A2', message: 'Touchpad'}), + Function: translate({id: 'PS4.Function', message: 'Function'}), }, PS3: { - name: 'PS3', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: 'Cross', - B2: 'Circle', - B3: 'Square', - B4: 'Triangle', - L1: 'L1', - R1: 'R1', - L2: 'L2', - R2: 'R2', - S1: 'Select', - S2: 'Start', - L3: 'L3', - R3: 'R3', - A1: 'PS', - A2: '(A2)', - Function: 'Function', + name: translate({id: 'PS3.name', message: 'PS3'}), + Up: translate({id: 'PS3.Up', message: 'Up'}), + Down: translate({id: 'PS3.Down', message: 'Down'}), + Left: translate({id: 'PS3.Left', message: 'Left'}), + Right: translate({id: 'PS3.Right', message: 'Right'}), + B1: translate({id: 'PS3.B1', message: 'Cross'}), + B2: translate({id: 'PS3.B2', message: 'Circle'}), + B3: translate({id: 'PS3.B3', message: 'Square'}), + B4: translate({id: 'PS3.B4', message: 'Triangle'}), + L1: translate({id: 'PS3.L1', message: 'L1'}), + R1: translate({id: 'PS3.R1', message: 'R1'}), + L2: translate({id: 'PS3.L2', message: 'L2'}), + R2: translate({id: 'PS3.R2', message: 'R2'}), + S1: translate({id: 'PS3.S1', message: 'Select'}), + S2: translate({id: 'PS3.S2', message: 'Start'}), + L3: translate({id: 'PS3.L3', message: 'L3'}), + R3: translate({id: 'PS3.R3', message: 'R3'}), + A1: translate({id: 'PS3.A1', message: 'PS'}), + A2: translate({id: 'PS3.A2', message: '(A2)'}), + Function: translate({id: 'PS3.Function', message: 'Function'}), }, Arcade: { - name: 'Arcade', - Up: 'Up', - Down: 'Down', - Left: 'Left', - Right: 'Right', - B1: 'K1', - B2: 'K2', - B3: 'P1', - B4: 'P2', - L1: 'P4', - R1: 'P3', - L2: 'K4', - R2: 'K3', - S1: 'Select', - S2: 'Start', - L3: 'LS', - R3: 'RS', - A1: 'Home', - A2: '(A2)', - Function: 'Function', + name: translate({id: 'Arcade.name', message: 'Arcade'}), + Up: translate({id: 'Arcade.Up', message: 'Up'}), + Down: translate({id: 'Arcade.Down', message: 'Down'}), + Left: translate({id: 'Arcade.Left', message: 'Left'}), + Right: translate({id: 'Arcade.Right', message: 'Right'}), + B1: translate({id: 'Arcade.B1', message: 'K1'}), + B2: translate({id: 'Arcade.B2', message: 'K2'}), + B3: translate({id: 'Arcade.B3', message: 'P1'}), + B4: translate({id: 'Arcade.B4', message: 'P2'}), + L1: translate({id: 'Arcade.L1', message: 'P4'}), + R1: translate({id: 'Arcade.R1', message: 'P3'}), + L2: translate({id: 'Arcade.L2', message: 'K4'}), + R2: translate({id: 'Arcade.R2', message: 'K3'}), + S1: translate({id: 'Arcade.S1', message: 'Select'}), + S2: translate({id: 'Arcade.S2', message: 'Start'}), + L3: translate({id: 'Arcade.L3', message: 'LS'}), + R3: translate({id: 'Arcade.R3', message: 'RS'}), + A1: translate({id: 'Arcade.A1', message: 'Home'}), + A2: translate({id: 'Arcade.A2', message: '(A2)'}), + Function: translate({id: 'Arcade.Function', message: 'Function'}), }, } as const; diff --git a/src/components/LinkIcon.tsx b/src/components/LinkIcon.tsx index 6b7b62f..d6f4f93 100644 --- a/src/components/LinkIcon.tsx +++ b/src/components/LinkIcon.tsx @@ -12,6 +12,9 @@ const icons = { Download: faFileDownload, Pinout: faGamepad, Website: faGlobe, + 下载: faFileDownload, + 引脚: faGamepad, + 网站: faGlobe, } as const; type LinkIconTypes = { diff --git a/src/config/boards.tsx b/src/config/boards.tsx index feb905e..e2b398e 100644 --- a/src/config/boards.tsx +++ b/src/config/boards.tsx @@ -1,745 +1,1111 @@ import React from 'react'; +import Translate, { translate } from '@docusaurus/Translate'; const boards = { - 'Microcontroller Boards': [ - { - name: 'Raspberry Pi Pico', - configName: 'Pico', - pinout: '/controller-build/wiring#raspberry-pi-pico', - website: 'https://www.raspberrypi.com/products/raspberry-pi-pico/', - image: '/img/boards/Pico.jpg', - supported: true, - desc: () => ( -

- The Raspberry Pi Pico is a powerful, low-cost board based on the - Raspberry Pi RP2040 microcontroller. This build is the reference - implementation for GP2040-CE. -

- ), - }, - { - name: 'Raspberry Pi Pico W', - configName: 'PicoW', - pinout: '/controller-build/wiring#raspberry-pi-pico', - website: 'https://www.raspberrypi.com/products/raspberry-pi-pico/', - image: '/img/boards/PicoW.jpg', - supported: true, - desc: () => ( -

- The Raspberry Pi Pico W is a powerful, low-cost board based on the - Raspberry Pi RP2040 microcontroller. -

- ), - }, - { - name: 'Raspberry Pi Pico 2', - configName: 'Pico2', - pinout: '/controller-build/wiring#raspberry-pi-pico', - website: 'https://www.raspberrypi.com/products/raspberry-pi-pico-2/', - image: '/img/boards/Pico2.jpg', - supported: true, - desc: () => ( -

- The Raspberry Pi Pico 2 is a powerful, low-cost board based on the - Raspberry Pi RP2350 microcontroller. -

- ), - }, - { - name: 'Adafruit KB2040', - configName: 'KB2040', - pinout: '/controller-build/wiring#adafruit-kb2040', - website: 'https://learn.adafruit.com/adafruit-kb2040', - image: '/img/boards/KB2040.jpg', - supported: true, - desc: () => ( -

- Another RP2040 board in the Pro Micro form factor, with 2 additional - pins for USB data. This build is configured for DIY gamepad mods. -

- ), - }, - { - name: 'Liatris', - configName: 'SparkFunProMicro', - pinout: '/controller-build/wiring#sparkfun-pro-micro---rp2040', - website: - 'https://splitkb.com/products/liatris', - image: '/img/boards/Liatris.jpg', - supported: true, - desc: () => ( -

- Drop in RP2040 replacement for Pro Micro builds by {' '} - - SplitKB.com - - . -

- ), - }, - { - name: 'Seeed XAIO RP2040', - configName: 'SeeedXIAORP2040', - pinout: '/controller-build/wiring#seeed-xiao-rp2040', - website: - 'https://wiki.seeedstudio.com/XIAO-RP2040/', - image: '/img/boards/SeeedXIAORP2040.jpg', - supported: true, - desc: () => ( -

- The Seeed Studio XIAO RP2040 is a small RP2040 board created by Seeed Studio. -

- ), - }, - { - name: 'SparkFun Pro Micro', - configName: 'SparkFunProMicro', - pinout: '/controller-build/wiring#sparkfun-pro-micro---rp2040', - website: - 'https://learn.sparkfun.com/tutorials/pro-micro-rp2040-hookup-guide', - image: '/img/boards/SparkFunProMicro.jpg', - supported: true, - desc: () => ( -

- An RP2040 board in the Pro Micro form factor. This build is a drop-in - replacement for the{' '} - - Daemonbite Arcade Encoder - - . -

- ), - }, - { - name: 'Waveshare RP2040-Zero', - configName: 'WaveshareZero', - pinout: '/controller-build/wiring#waveshare-rp2040-zero', - website: 'https://www.waveshare.com/wiki/RP2040-Zero', - image: '/img/boards/WaveshareZero.jpg', - supported: true, - desc: () => ( -

- The{' '} - - Waveshare RP2040-Zero - {' '} - is a small form factor board with castellated pins and USB-C, making - this a popular choice for custom built PCBs without the need for SMT - assembly. -

- ), - }, - ], - 'Community Devices': [ - { - name: 'ARC Accessibility Controller', - configName: 'ARCController', - pinout: null, - website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/ARC%20Accessibility%20Controller', - image: '/img/boards/ARCController.jpg', - category: 'official', - desc: () => ( -

- The ARC Controller is an accessibility controller.{' '} - This was designed by TheTrain taking some design ideas from jfedor2{' '} - as well as the universal standards for accessibility controller connectors. -

- ), - }, - { - name: 'ASi LVL ABC', - configName: 'ASiLVLABC', - pinout: null, - website: 'https://asindo.pro/products/lvl-abc', - image: '/img/boards/ASiLVLABC.jpg', - category: 'closed', - desc: () => ( -

- The ASi LVL ABC Controller is a compact leverless controller created by ASIndo. -

- ), - }, - { - name: 'ASi LVL WASD', - configName: 'ASiLVLWASD', - pinout: null, - website: 'https://asindo.pro/collections/lvl/products/lvl-wasd', - image: '/img/boards/ASiLVLWASD.jpg', - category: 'closed', - desc: () => ( -

- The ASi LVL WASD Controller is a compact leverless controller created by ASIndo. -

- ), - }, - { - name: 'Flatbox Rev 4', - configName: 'FlatboxRev4', - pinout: null, - website: 'https://github.com/jfedor2/flatbox/tree/master/hardware-rev4', - image: '/img/boards/FlatboxRev4.jpg', - category: 'open', - desc: () => ( -

- Stickless PCB designed by{' '} - jfedor2 using an embedded - RP2040 chip. -

- ), - }, - { - name: 'Flatbox Rev 5', - configName: 'FlatboxRev5', - pinout: null, - website: 'https://github.com/jfedor2/flatbox/tree/master/hardware-rev5', - image: '/img/boards/FlatboxRev5.jpg', - category: 'open', - desc: () => ( -

- Stickless PCB designed by{' '} - jfedor2 using the Waveshare - RP2040-Zero. -

- ), - }, - { - name: 'Flatbox Rev 5 Southpaw', - configName: 'FlatboxRev5Southpaw', - pinout: null, - website: 'https://github.com/SkylaHila/flatbox-southpaw', - image: '/img/boards/FlatboxRev5Southpaw.jpg', - category: 'open', - desc: () => ( -

- Mirrored version of the Flatbox Rev 5 by SkylaHila. Based on the Flatbox Rev 5 by - jfedor2. -

- ), - }, - { - name: 'Flatbox Rev 5 RGB', - configName: 'FlatboxRev5RGB', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Flatbox%20Rev%205%20RGB', - image: '/img/boards/FlatboxRev5RGB.jpg', - category: 'open', - desc: () => ( -

- Stickless PCB designed by{' '} - jfedor2 and{' '} - TheTrain using the - Waveshare RP2040-Zero. -

- ), - }, - { - name: 'Flatbox Rev 5 USB Passthrough', - configName: 'FlatboxRev5USBPassthrough', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Flatbox%20Rev%205%20Passthrough', - image: '/img/boards/FlatboxRev5USBPassthrough.jpg', - category: 'open', - desc: () => ( -

- Stickless PCB designed by{' '} - jfedor2 and{' '} - TheTrain using the - Waveshare RP2040-Zero. -

- ), - }, - { - name: 'GP2040-CE Keyboard Converter', - configName: 'KeyboardConverter', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/Supported%20Boards/GP2040%20Keyboard%20Converter/Waveshare%20Zero-PCB', - image: '/img/boards/KeyboardConverter.jpg', - category: 'open', - desc: () => ( -

- The GP2040-CE Keyboard Converter Case is designed to be a USB Host - Device for the use of a keyboard with the GP2040-CE project. -

- ), - }, - { - name: 'Granola Summit', - configName: 'Granola', - pinout: null, - website: 'https://granola.games/collections/controllers', - image: '/img/boards/Granola.jpg', - category: 'open', - desc: () => ( -

- Configuration for the {' '} - - Granola Summit - - . PCB and design files can be found here. -

- ), - }, - { - name: 'Granola Beacon', - configName: 'GranolaBeacon', - pinout: null, - website: 'https://granola.games/products/beacon', - image: '/img/boards/GranolaBeacon.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the {' '} - - Granola Beacon - -

- ), - }, - { - name: 'Haute42 Series', - configName: 'Haute42COSMOX', - pinout: null, - website: 'https://haute42.com/', - image: '/img/boards/Haute42.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the {' '} - - Haute42 Series - - . The Haute42 products are all compatible with the same configuration file. - These products include the Haute42 Pad M Series, T Series, G Series, and mini. -

- ), - }, - { - name: 'HautePad M Lite', - configName: 'Haute42COSMOXMLite', - pinout: null, - website: 'https://cosmoxgaming.com/m-lite/', - image: '/img/boards/Haute42COSMOXMLite.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the {' '} - - HautePad M Lite - - . The HautePad M Lite product contains special case RGB code specific to the M-Lite. - The firmware uf2 will automatically set the case rgbs and mode to enable full LEDs. -

- ), - }, - { - name: 'HautePad M Ultra', - configName: 'Haute42COSMOXMUltra', - pinout: null, - website: 'https://cosmoxgaming.com/m-ultra/', - image: '/img/boards/Haute42COSMOXMUltra.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the {' '} - - HautePad M Ultra - - . The HautePad M Ultra product contains special case RGB code specific to the M Ultra. - The firmware uf2 will automatically set the case rgbs and mode to enable full LEDs. -

- ), - }, - { - name: 'HautePad X (Analog Configuration)', - configName: 'Haute42COSMOXXAnalog', - pinout: null, - website: 'https://cosmoxgaming.com/x/', - image: '/img/boards/Haute42COSMOXXAnalog.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the {' '} - - HautePad X Series in Analog Configuration - - . The HautePad X Series with the analog attachment requires a special configuration file to work immediately. -

- ), - }, - { - name: 'Mavercade Rev1', - configName: 'MavercadeRev1', - pinout: null, - website: - 'https://mavercade.com/', - image: '/img/boards/MavercadeRev1.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the{' '} - - Mavercade Rev1 - - . These revisions use a Waveshare RP2040-Zero board. -

- ), - }, - { - name: 'Mavercade Rev2', - configName: 'MavercadeRev2', - pinout: null, - website: - 'https://mavercade.com/', - image: '/img/boards/MavercadeRev2.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the{' '} - - Mavercade Rev2 - - . These revisions use a Waveshare RP2040-Zero board. -

- ), - }, - { - name: 'Mavercade Rev3', - configName: 'MavercadeRev3', - pinout: null, - website: - 'https://mavercade.com/', - image: '/img/boards/MavercadeRev3.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the{' '} - - Mavercade Rev3 - - . These revisions use a Waveshare RP2040-Zero board. -

- ), - }, - { - name: 'MiSTercadeV2', - configName: 'MiSTercadeV2', - pinout: null, - website: - 'https://github.com/misteraddons/MiSTercadeV1', - image: '/img/boards/MistercadeV2.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the{' '} - - Mistercade V2 - - . MiSTercade is the original JAMMA extension for MiSTer FPGA. -

- ), - }, - { - name: 'Open Core0', - configName: 'OpenCore0', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Open_Core0', - image: '/img/boards/OpenCore0.jpg', - category: 'official', - desc: () => ( -

- Open source stickless controller designed by {' '} - - TheTrain - . -

- ), - }, - { - name: 'Open Core0 WASD', - configName: 'OpenCore0WASD', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Open_Core0%20WASD', - image: '/img/boards/OpenCore0WASD.jpg', - category: 'official', - desc: () => ( -

- Open source stickless WASD controller designed by {' '} - - TheTrain - . -

- ), - }, - { - name: 'OSUMGP-RP2040', - configName: 'OSUMGP-RP2040', - pinout: null, - website: - 'https://github.com/NickGuyver/OSUMGP-RP2040', - image: '/img/boards/OSUMGP-RP2040.jpg', - category: 'open', - desc: () => ( -

- OSUMGP-RP2040: Open Source Universal Modern Game Pad - RP2040 Edition by - - NickGuyver - . -

- ), - }, - { - name: 'Pico Fighting Board', - configName: 'PicoFightingBoard', - pinout: null, - website: 'https://github.com/FeralAI/PicoFightingBoard', - image: '/img/boards/PicoFightingBoard.jpg', - category: 'open', - desc: () => ( -

- Arcade encoder board designed by {' '} - FeralAI using a Raspberry Pi - Pico or pin-equivalent RP2040 board. -

- ), - }, - { - name: 'PXP-Gamepad', - configName: 'PXPGamepad', - pinout: null, - website: 'https://github.com/MegaBitmap/PXP-Gamepad', - image: '/img/boards/PXPGamepad.png', - category: 'open', - desc: () => ( -

- DIY universal controller pocket gamepad by {' '} - MegaBitmap using - an RP2040-Zero MCU soldered onto a custom PCB. -

- ), - }, - { - name: 'Reflex Encode v1.2', - configName: 'ReflexEncodeV1.2', - pinout: null, - website: 'https://github.com/misteraddons/ReflexFightingBoard', - image: '/img/boards/ReflexEncode_v1.2.jpg', - category: 'open', - desc: () => ( -

- Arcade encoder board designed and sold by{' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'Reflex Encode v2.0', - configName: 'ReflexEncodeV2.0', - pinout: null, - website: 'https://github.com/misteraddons/ReflexFightingBoard', - image: '/img/boards/ReflexEncode_v2.0.jpg', - category: 'open', - desc: () => ( -

- Arcade encoder board designed and sold by {' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'Reflex CTRL Genesis 6', - configName: 'ReflexCtrlGenesis6', - pinout: null, - website: 'https://github.com/misteraddons/Reflex-CTRL', - image: '/img/boards/ReflexCTRLGenesis6.png', - category: 'open', - desc: () => ( -

- Reflex Board Open source PCB for Sega Genesis 6 button Controller replacement PCBs - designed and sold by{' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'Reflex CTRL NES', - configName: 'ReflexCtrlNES', - pinout: null, - website: 'https://github.com/misteraddons/Reflex-CTRL', - image: '/img/boards/ReflexCTRLNES.png', - category: 'open', - desc: () => ( -

- Reflex Board Open source PCB for NES Controller replacement PCBs - designed and sold by{' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'Reflex CTRL SNES', - configName: 'ReflexCtrlSNES', - pinout: null, - website: 'https://github.com/misteraddons/Reflex-CTRL', - image: '/img/boards/ReflexCTRLSNES.png', - category: 'open', - desc: () => ( -

- Reflex Board Open source PCB for SNES Controller replacement PCBs - designed and sold by{' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'Reflex CTRL Saturn', - configName: 'ReflexCtrlSaturn', - pinout: null, - website: 'https://github.com/misteraddons/Reflex-CTRL', - image: '/img/boards/ReflexCTRLSaturn.png', - category: 'open', - desc: () => ( -

- Reflex Board Open source PCB for Sega Saturn Controller replacement PCBs - designed and sold by{' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'Reflex CTRL Virtual Boy', - configName: 'ReflexCtrlVB', - pinout: null, - website: 'https://github.com/misteraddons/Reflex-CTRL', - image: '/img/boards/ReflexCTRLVB.png', - category: 'open', - desc: () => ( -

- Reflex Board Open source PCB for Virtual Boy Controller replacement PCBs - designed and sold by{' '} - MiSTerAddons using an - embedded RP2040 chip. -

- ), - }, - { - name: 'RP2040 Advanced Breakout', - configName: 'RP2040AdvancedBreakoutBoard', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Boards/RP2040%20Advanced%20Breakout%20Board/RP2040%20Advanced%20Breakout%20Board', - image: '/img/boards/RP2040AdvancedBreakoutBoard.jpg', - category: 'official', - desc: () => ( -

- Arcade encoder board designed by {' '} - TheTrain using an - embedded RP2040, and is the official board of the GP2040-CE project. -

- ), - }, - { - name: 'RP2040 Advanced Breakout (USB Passthrough)', - configName: 'RP2040AdvancedBreakoutBoardUSBPassthrough', - pinout: null, - website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Boards/RP2040%20Advanced%20Breakout%20Board/RP2040%20Advanced%20Breakout%20Board%20-%20Passthrough', - image: '/img/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg', - category: 'official', - desc: () => -

- Official USB Passthrough Board of the Open Stick project. Updated version of - the RP2040 Advanced Breakout Board with USB passthrough included on the board. -

, - }, - { - name: 'RP2040 Mini Breakout Board', - configName: 'RP2040MiniBreakoutBoard', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Boards/RP2040%20Mini%20Breakout%20Board/RP2040%20Mini%20Breakout%20Board', - image: '/img/boards/RP2040MiniBreakoutBoard.jpg', - category: 'open', - desc: () => ( -

- A reduced-footprint spin off of the RP2040 Advanced Breakout Board designed by {' '} - - TheTrain - . -

- ), - }, - { - name: 'ScrubTier BentoBox', - configName: 'BentoBox', - pinout: null, - website: - 'https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs/BentoBox', - image: '/img/boards/BentoBox.jpg', - category: 'closed', - desc: () => ( -

- Configuration for the{' '} - - ScrubTier BentoBox v1 and v2 as well as the GGEZStick Keebfighters - - . -

- ), - }, - { - name: 'SGF Devices', - configName: 'SGFDevices', - pinout: null, - website: 'https://sgfdevices.com/collections/controllers', - image: '/img/boards/SGFFaust.jpg', - category: 'closed', - desc: () => ( -

- The SGF stickless controllers are inspired by the open-source - flatbox rev4 design by jfedor. -

- ), - }, - { - name: 'Stress', - configName: 'Stress', - pinout: null, - website: 'https://github.com/GroooveBob/Stress', - image: '/img/boards/Stress.jpg', - category: 'open', - desc: () => ( -

- A small and portable PCB-as-a-controller designed by{' '} - GroooveBob using the - Waveshare RP-2040-Zero. -

- ), - }, - { - name: 'Zero Rhythm', - configName: 'ZeroRhythm', - pinout: null, - website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Zero%20Rhythm', - image: '/img/boards/Zero_Rhythm.jpg', - category: 'official', - desc: () => ( -

- The Zero Rhythm is a controller for the Theatrhythm game on the Nintendo Switch.{' '} - It allows you to play rhythm as well as dual stick games in a double WASD layout. -

- ), - }, - ], + 'Microcontroller Boards': [ + { + name: translate({ + id: 'boards.microcontroller.pico.name', + message: 'Raspberry Pi Pico', + }), + configName: 'Pico', + pinout: '/controller-build/wiring#raspberry-pi-pico', + website: 'https://www.raspberrypi.com/products/raspberry-pi-pico/', + image: '/img/boards/Pico.jpg', + supported: true, + desc: () => ( +

+ + {'The Raspberry Pi Pico is a powerful, low-cost board based on the Raspberry Pi RP2040 microcontroller. This build is the reference implementation for GP2040-CE.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.pico_w.name', + message: 'Raspberry Pi Pico W', + }), + configName: 'PicoW', + pinout: '/controller-build/wiring#raspberry-pi-pico', + website: 'https://www.raspberrypi.com/products/raspberry-pi-pico/', + image: '/img/boards/PicoW.jpg', + supported: true, + desc: () => ( +

+ + {'The Raspberry Pi Pico W is a powerful, low-cost board based on the Raspberry Pi RP2040 microcontroller.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.pico2.name', + message: 'Raspberry Pi Pico 2', + }), + configName: 'Pico2', + pinout: '/controller-build/wiring#raspberry-pi-pico', + website: 'https://www.raspberrypi.com/products/raspberry-pi-pico-2/', + image: '/img/boards/Pico2.jpg', + supported: true, + desc: () => ( +

+ + {'The Raspberry Pi Pico 2 is a powerful, low-cost board based on the Raspberry Pi RP2350 microcontroller.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.kb2040.name', + message: 'Adafruit KB2040', + }), + configName: 'KB2040', + pinout: '/controller-build/wiring#adafruit-kb2040', + website: 'https://learn.adafruit.com/adafruit-kb2040', + image: '/img/boards/KB2040.jpg', + supported: true, + desc: () => ( +

+ + {'Another RP2040 board in the Pro Micro form factor, with 2 additional pins for USB data. This build is configured for DIY gamepad mods.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.liatris.name', + message: 'Liatris', + }), + configName: 'SparkFunProMicro', + pinout: '/controller-build/wiring#sparkfun-pro-micro---rp2040', + website: 'https://splitkb.com/products/liatris', + image: '/img/boards/Liatris.jpg', + supported: true, + desc: () => ( +

+ + SplitKB.com + + ), + }} + > + {'Drop in RP2040 replacement for Pro Micro builds by {SplitKB}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.seeed_xiao.name', + message: 'Seeed XAIO RP2040', + }), + configName: 'SeeedXIAORP2040', + pinout: '/controller-build/wiring#seeed-xiao-rp2040', + website: 'https://wiki.seeedstudio.com/XIAO-RP2040/', + image: '/img/boards/SeeedXIAORP2040.jpg', + supported: true, + desc: () => ( +

+ + {'The Seeed Studio XIAO RP2040 is a small RP2040 board created by Seeed Studio.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.sparkfun_pm.name', + message: 'SparkFun Pro Micro', + }), + configName: 'SparkFunProMicro', + pinout: '/controller-build/wiring#sparkfun-pro-micro---rp2040', + website: 'https://learn.sparkfun.com/tutorials/pro-micro-rp2040-hookup-guide', + image: '/img/boards/SparkFunProMicro.jpg', + supported: true, + desc: () => ( +

+ + Daemonbite Arcade Encoder + + ), + }} + > + {'An RP2040 board in the Pro Micro form factor. This build is a drop-in replacement for the {Daemonbite}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.microcontroller.waveshare_zero.name', + message: 'Waveshare RP2040-Zero', + }), + configName: 'WaveshareZero', + pinout: '/controller-build/wiring#waveshare-rp2040-zero', + website: 'https://www.waveshare.com/wiki/RP2040-Zero', + image: '/img/boards/WaveshareZero.jpg', + supported: true, + desc: () => ( +

+ + Waveshare RP2040-Zero + + ), + }} + > + {'The {WaveshareLink} is a small form factor board with castellated pins and USB-C, making this a popular choice for custom built PCBs without the need for SMT assembly.'} + +

+ ), + }, + ], + 'Community Devices': [ + { + name: translate({ + id: 'boards.community.arc.name', + message: 'ARC Accessibility Controller', + }), + configName: 'ARCController', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/ARC%20Accessibility%20Controller', + image: '/img/boards/ARCController.jpg', + category: 'official', + desc: () => ( +

+ + TheTrain + + ), + }} + > + {'The ARC Controller is an accessibility controller. This was designed by {TheTrain} taking some design ideas from {jfedor2} as well as the universal standards for accessibility controller connectors.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.asi_lvl_abc.name', + message: 'ASi LVL ABC', + }), + configName: 'ASiLVLABC', + pinout: null, + website: 'https://asindo.pro/products/lvl-abc', + image: '/img/boards/ASiLVLABC.jpg', + category: 'closed', + desc: () => ( +

+ + {'The ASi LVL ABC Controller is a compact leverless controller created by ASIndo.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.asi_lvl_wasd.name', + message: 'ASi LVL WASD', + }), + configName: 'ASiLVLWASD', + pinout: null, + website: 'https://asindo.pro/collections/lvl/products/lvl-wasd', + image: '/img/boards/ASiLVLWASD.jpg', + category: 'closed', + desc: () => ( +

+ + {'The ASi LVL WASD Controller is a compact leverless controller created by ASIndo.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.flatbox_rev4.name', + message: 'Flatbox Rev 4', + }), + configName: 'FlatboxRev4', + pinout: null, + website: 'https://github.com/jfedor2/flatbox/tree/master/hardware-rev4', + image: '/img/boards/FlatboxRev4.jpg', + category: 'open', + desc: () => ( +

+ + jfedor2 + + ), + }} + > + {'Stickless PCB designed by {jfedor2} using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.flatbox_rev5.name', + message: 'Flatbox Rev 5', + }), + configName: 'FlatboxRev5', + pinout: null, + website: 'https://github.com/jfedor2/flatbox/tree/master/hardware-rev5', + image: '/img/boards/FlatboxRev5.jpg', + category: 'open', + desc: () => ( +

+ + jfedor2 + + ), + }} + > + {'Stickless PCB designed by {jfedor2} using the Waveshare RP2040-Zero.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.flatbox_rev5_southpaw.name', + message: 'Flatbox Rev 5 Southpaw', + }), + configName: 'FlatboxRev5Southpaw', + pinout: null, + website: 'https://github.com/SkylaHila/flatbox-southpaw', + image: '/img/boards/FlatboxRev5Southpaw.jpg', + category: 'open', + desc: () => ( +

+ + jfedor2 + + ), + SkylaHila: ( + + SkylaHila + + ), + }} + > + {'Mirrored version of the Flatbox Rev 5 by {SkylaHila}. Based on the Flatbox Rev 5 by {jfedor2}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.flatbox_rev5_rgb.name', + message: 'Flatbox Rev 5 RGB', + }), + configName: 'FlatboxRev5RGB', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Flatbox%20Rev%205%20RGB', + image: '/img/boards/FlatboxRev5RGB.jpg', + category: 'open', + desc: () => ( +

+ + jfedor2 + + ), + TheTrain: ( + + TheTrain + + ), + }} + > + {'Stickless PCB designed by {jfedor2} and {TheTrain} using the Waveshare RP2040-Zero.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.flatbox_rev5_passthrough.name', + message: 'Flatbox Rev 5 USB Passthrough', + }), + configName: 'FlatboxRev5USBPassthrough', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Flatbox%20Rev%205%20Passthrough', + image: '/img/boards/FlatboxRev5USBPassthrough.jpg', + category: 'open', + desc: () => ( +

+ + jfedor2 + + ), + TheTrain: ( + + TheTrain + + ), + }} + > + {'Stickless PCB designed by {jfedor2} and {TheTrain} using the Waveshare RP2040-Zero.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.keyboard_converter.name', + message: 'GP2040-CE Keyboard Converter', + }), + configName: 'KeyboardConverter', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/Supported%20Boards/GP2040%20Keyboard%20Converter/Waveshare%20Zero-PCB', + image: '/img/boards/KeyboardConverter.jpg', + category: 'open', + desc: () => ( +

+ + {'The GP2040-CE Keyboard Converter Case is designed to be a USB Host Device for the use of a keyboard with the GP2040-CE project.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.granola.name', + message: 'Granola Summit', + }), + configName: 'Granola', + pinout: null, + website: 'https://granola.games/collections/controllers', + image: '/img/boards/Granola.jpg', + category: 'open', + desc: () => ( +

+ + Granola Summit + + ), + repo: ( + + here + + ), + }} + > + {'Configuration for the {granola}. PCB and design files can be found {repo}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.granola_beacon.name', + message: 'Granola Beacon', + }), + configName: 'GranolaBeacon', + pinout: null, + website: 'https://granola.games/products/beacon', + image: '/img/boards/GranolaBeacon.jpg', + category: 'closed', + desc: () => ( +

+ + Granola Beacon + + ), + }} + > + {'Configuration for the {site}'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.haute42.name', + message: 'Haute42 Series', + }), + configName: 'Haute42COSMOX', + pinout: null, + website: 'https://haute42.com/', + image: '/img/boards/Haute42.jpg', + category: 'closed', + desc: () => ( +

+ + {'Configuration for the Haute42 Series. The Haute42 products are all compatible with the same configuration file. These products include the Haute42 Pad M Series, T Series, G Series, and mini.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.hautepad_m_lite.name', + message: 'HautePad M Lite', + }), + configName: 'Haute42COSMOXMLite', + pinout: null, + website: 'https://cosmoxgaming.com/m-lite/', + image: '/img/boards/Haute42COSMOXMLite.jpg', + category: 'closed', + desc: () => ( +

+ + HautePad M Lite + + ), + }} + > + {'Configuration for the {site}. The HautePad M Lite product contains special case RGB code specific to the M-Lite. The firmware uf2 will automatically set the case rgbs and mode to enable full LEDs.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.hautepad_m_ultra.name', + message: 'HautePad M Ultra', + }), + configName: 'Haute42COSMOXMUltra', + pinout: null, + website: 'https://cosmoxgaming.com/m-ultra/', + image: '/img/boards/Haute42COSMOXMUltra.jpg', + category: 'closed', + desc: () => ( +

+ + HautePad M Ultra + + ), + }} + > + {'Configuration for the {site}. The HautePad M Ultra product contains special case RGB code specific to the M Ultra. The firmware uf2 will automatically set the case rgbs and mode to enable full LEDs.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.hautepad_x_analog.name', + message: 'HautePad X (Analog Configuration)', + }), + configName: 'Haute42COSMOXXAnalog', + pinout: null, + website: 'https://cosmoxgaming.com/x/', + image: '/img/boards/Haute42COSMOXXAnalog.jpg', + category: 'closed', + desc: () => ( +

+ + HautePad X Series in Analog Configuration + + ), + }} + > + {'Configuration for the {site}. The HautePad X Series with the analog attachment requires a special configuration file to work immediately.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.mavercade_rev1.name', + message: 'Mavercade Rev1', + }), + configName: 'MavercadeRev1', + pinout: null, + website: 'https://mavercade.com/', + image: '/img/boards/MavercadeRev1.jpg', + category: 'closed', + desc: () => ( +

+ + Mavercade Rev1 + + ), + }} + > + {'Configuration for the {site}. These revisions use a Waveshare RP2040-Zero board.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.mavercade_rev2.name', + message: 'Mavercade Rev2', + }), + configName: 'MavercadeRev2', + pinout: null, + website: 'https://mavercade.com/', + image: '/img/boards/MavercadeRev2.jpg', + category: 'closed', + desc: () => ( +

+ + Mavercade Rev2 + + ), + }} + > + {'Configuration for the {site}. These revisions use a Waveshare RP2040-Zero board.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.mavercade_rev3.name', + message: 'Mavercade Rev3', + }), + configName: 'MavercadeRev3', + pinout: null, + website: 'https://mavercade.com/', + image: '/img/boards/MavercadeRev3.jpg', + category: 'closed', + desc: () => ( +

+ + Mavercade Rev3 + + ), + }} + > + {'Configuration for the {site}. These revisions use a Waveshare RP2040-Zero board.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.mistercade_v2.name', + message: 'MiSTercadeV2', + }), + configName: 'MiSTercadeV2', + pinout: null, + website: 'https://github.com/misteraddons/MiSTercadeV1', + image: '/img/boards/MistercadeV2.jpg', + category: 'closed', + desc: () => ( +

+ + Mistercade V2 + + ), + }} + > + {'Configuration for the {site}. MiSTercade is the original JAMMA extension for MiSTer FPGA.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.opencore0.name', + message: 'Open Core0', + }), + configName: 'OpenCore0', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Open_Core0', + image: '/img/boards/OpenCore0.jpg', + category: 'official', + desc: () => ( +

+ + TheTrain + + ), + }} + > + {'Open source stickless controller designed by {TheTrain}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.opencore0_wasd.name', + message: 'Open Core0 WASD', + }), + configName: 'OpenCore0WASD', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Open_Core0%20WASD', + image: '/img/boards/OpenCore0WASD.jpg', + category: 'official', + desc: () => ( +

+ + TheTrain + + ), + }} + > + {'Open source stickless WASD controller designed by {TheTrain}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.osumgp.name', + message: 'OSUMGP-RP2040', + }), + configName: 'OSUMGP-RP2040', + pinout: null, + website: 'https://github.com/NickGuyver/OSUMGP-RP2040', + image: '/img/boards/OSUMGP-RP2040.jpg', + category: 'open', + desc: () => ( +

+ + NickGuyver + + ), + }} + > + {'OSUMGP-RP2040: Open Source Universal Modern Game Pad - RP2040 Edition by {NickGuyver}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.pico_fighting.name', + message: 'Pico Fighting Board', + }), + configName: 'PicoFightingBoard', + pinout: null, + website: 'https://github.com/FeralAI/PicoFightingBoard', + image: '/img/boards/PicoFightingBoard.jpg', + category: 'open', + desc: () => ( +

+ + FeralAI + + ), + }} + > + {'Arcade encoder board designed by {FeralAI} using a Raspberry Pi Pico or pin-equivalent RP2040 board.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.pxp_gamepad.name', + message: 'PXP-Gamepad', + }), + configName: 'PXPGamepad', + pinout: null, + website: 'https://github.com/MegaBitmap/PXP-Gamepad', + image: '/img/boards/PXPGamepad.png', + category: 'open', + desc: () => ( +

+ + MegaBitmap + + ), + }} + > + {'DIY universal controller pocket gamepad by {MegaBitmap} using an RP2040-Zero MCU soldered onto a custom PCB.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_encode_v1_2.name', + message: 'Reflex Encode v1.2', + }), + configName: 'ReflexEncodeV1.2', + pinout: null, + website: 'https://github.com/misteraddons/ReflexFightingBoard', + image: '/img/boards/ReflexEncode_v1.2.jpg', + category: 'open', + desc: () => ( +

+ + MiSTerAddons + + ), + }} + > + {'Arcade encoder board designed and sold by {MiSTerAddons} using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_encode_v2.name', + message: 'Reflex Encode v2.0', + }), + configName: 'ReflexEncodeV2.0', + pinout: null, + website: 'https://github.com/misteraddons/ReflexFightingBoard', + image: '/img/boards/ReflexEncode_v2.0.jpg', + category: 'open', + desc: () => ( +

+ + {'Arcade encoder board designed and sold by MiSTerAddons using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_ctrl_genesis6.name', + message: 'Reflex CTRL Genesis 6', + }), + configName: 'ReflexCtrlGenesis6', + pinout: null, + website: 'https://github.com/misteraddons/Reflex-CTRL', + image: '/img/boards/ReflexCTRLGenesis6.png', + category: 'open', + desc: () => ( +

+ + {'Reflex Board Open source PCB for Sega Genesis 6 button Controller replacement PCBs designed and sold by MiSTerAddons using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_ctrl_nes.name', + message: 'Reflex CTRL NES', + }), + configName: 'ReflexCtrlNES', + pinout: null, + website: 'https://github.com/misteraddons/Reflex-CTRL', + image: '/img/boards/ReflexCTRLNES.png', + category: 'open', + desc: () => ( +

+ + {'Reflex Board Open source PCB for NES Controller replacement PCBs designed and sold by MiSTerAddons using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_ctrl_snes.name', + message: 'Reflex CTRL SNES', + }), + configName: 'ReflexCtrlSNES', + pinout: null, + website: 'https://github.com/misteraddons/Reflex-CTRL', + image: '/img/boards/ReflexCTRLSNES.png', + category: 'open', + desc: () => ( +

+ + {'Reflex Board Open source PCB for SNES Controller replacement PCBs designed and sold by MiSTerAddons using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_ctrl_saturn.name', + message: 'Reflex CTRL Saturn', + }), + configName: 'ReflexCtrlSaturn', + pinout: null, + website: 'https://github.com/misteraddons/Reflex-CTRL', + image: '/img/boards/ReflexCTRLSaturn.png', + category: 'open', + desc: () => ( +

+ + {'Reflex Board Open source PCB for Sega Saturn Controller replacement PCBs designed and sold by MiSTerAddons using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.reflex_ctrl_vb.name', + message: 'Reflex CTRL Virtual Boy', + }), + configName: 'ReflexCtrlVB', + pinout: null, + website: 'https://github.com/misteraddons/Reflex-CTRL', + image: '/img/boards/ReflexCTRLVB.png', + category: 'open', + desc: () => ( +

+ + {'Reflex Board Open source PCB for Virtual Boy Controller replacement PCBs designed and sold by MiSTerAddons using an embedded RP2040 chip.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.rp2040_advanced_breakout.name', + message: 'RP2040 Advanced Breakout', + }), + configName: 'RP2040AdvancedBreakoutBoard', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Boards/RP2040%20Advanced%20Breakout%20Board/RP2040%20Advanced%20Breakout%20Board', + image: '/img/boards/RP2040AdvancedBreakoutBoard.jpg', + category: 'official', + desc: () => ( +

+ + TheTrain + + ), + }} + > + {'Arcade encoder board designed by {TheTrain} using an embedded RP2040, and is the official board of the GP2040-CE project.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.rp2040_passthrough.name', + message: 'RP2040 Advanced Breakout (USB Passthrough)', + }), + configName: 'RP2040AdvancedBreakoutBoardUSBPassthrough', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Boards/RP2040%20Advanced%20Breakout%20Board/RP2040%20Advanced%20Breakout%20Board%20-%20Passthrough', + image: '/img/boards/RP2040AdvancedBreakoutBoardUSBPassthrough.jpg', + category: 'official', + desc: () => ( +

+ + {'Official USB Passthrough Board of the Open Stick project. Updated version of the RP2040 Advanced Breakout Board with USB passthrough included on the board.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.rp2040_mini_breakout.name', + message: 'RP2040 Mini Breakout Board', + }), + configName: 'RP2040MiniBreakoutBoard', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Boards/RP2040%20Mini%20Breakout%20Board/RP2040%20Mini%20Breakout%20Board', + image: '/img/boards/RP2040MiniBreakoutBoard.jpg', + category: 'open', + desc: () => ( +

+ + TheTrain + + ), + }} + > + {'A reduced-footprint spin off of the RP2040 Advanced Breakout Board designed by {TheTrain}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.bentobox.name', + message: 'ScrubTier BentoBox', + }), + configName: 'BentoBox', + pinout: null, + website: 'https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs/BentoBox', + image: '/img/boards/BentoBox.jpg', + category: 'closed', + desc: () => ( +

+ + ScrubTier BentoBox + + ), + }} + > + {'Configuration for the {ScrubTier}.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.sgf_devices.name', + message: 'SGF Devices', + }), + configName: 'SGFDevices', + pinout: null, + website: 'https://sgfdevices.com/collections/controllers', + image: '/img/boards/SGFFaust.jpg', + category: 'closed', + desc: () => ( +

+ + {'The SGF stickless controllers are inspired by the open-source flatbox rev4 design by jfedor.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.stress.name', + message: 'Stress', + }), + configName: 'Stress', + pinout: null, + website: 'https://github.com/GroooveBob/Stress', + image: '/img/boards/Stress.jpg', + category: 'open', + desc: () => ( +

+ + GroooveBob + + ), + }} + > + {'A small and portable PCB-as-a-controller designed by {GroooveBob} using the Waveshare RP-2040-Zero.'} + +

+ ), + }, + { + name: translate({ + id: 'boards.community.zero_rhythm.name', + message: 'Zero Rhythm', + }), + configName: 'ZeroRhythm', + pinout: null, + website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Boards/GP2040-CE%20Official%20Controllers/Zero%20Rhythm', + image: '/img/boards/Zero_Rhythm.jpg', + category: 'official', + desc: () => ( +

+ + {'The Zero Rhythm is a controller for the Theatrhythm game on the Nintendo Switch. It allows you to play rhythm as well as dual stick games in a double WASD layout.'} + +

+ ), + }, + ], }; export default boards;