Revert "Revert "Documentation - Docusaurus port"" (#612)
Revert "Revert "Documentation - Docusaurus port" (#611)"
This reverts commit 63e6a24b0f.
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -7,7 +7,7 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### Have you checked the GP2040-CE documentation [HERE](https://gp2040-ce.info/#/) to confirm this feature doesn't already exist?
|
||||
### Have you checked the GP2040-CE documentation [HERE](https://gp2040-ce.info/) to confirm this feature doesn't already exist?
|
||||
|
||||
Yes/No
|
||||
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/issue---bug-report.md
vendored
@@ -12,7 +12,7 @@ assignees: ''
|
||||
Please check the following before posting an issue / bug report.
|
||||
|
||||
- [ ] I am running the latest version of the firmware found [HERE](https://github.com/OpenStickCommunity/GP2040-CE/releases)
|
||||
- [ ] I have checked the documentation [HERE](https://gp2040-ce.info/#/) and found no answer
|
||||
- [ ] I have checked the documentation [HERE](https://gp2040-ce.info/) and found no answer
|
||||
- [ ] I checked to make sure that this issue has not already been filed [HERE](https://github.com/OpenStickCommunity/GP2040-CE/issues)
|
||||
- [ ] I am reporting the issue to the correct repository
|
||||
|
||||
|
||||
45
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: Deploy to GitHub Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
# Review gh actions docs if you want to further define triggers, paths, etc
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Deploy to GitHub Pages
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
cache: npm
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install --frozen-lockfile
|
||||
working-directory: site
|
||||
- name: Build website
|
||||
run: npm run build
|
||||
working-directory: site
|
||||
|
||||
# Popular action to deploy to GitHub Pages:
|
||||
# Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus
|
||||
- name: Deploy to GitHub Pages
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.ACTION_SECRET }}
|
||||
# Build output to publish to the `gh-pages` branch:
|
||||
publish_dir: site/build
|
||||
# The following lines assign commit authorship to the official
|
||||
# GH-Actions bot for deploys to `gh-pages` branch:
|
||||
# https://github.com/actions/checkout/issues/13#issuecomment-724415212
|
||||
# The GH actions bot is used by default if you didn't specify the two fields.
|
||||
# You can swap them out with your own user credentials.
|
||||
user_name: github-actions[bot]
|
||||
user_email: 41898282+github-actions[bot]@users.noreply.github.com
|
||||
26
.github/workflows/test-deploy.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Test Docs Deployment
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
# Review gh actions docs if you want to further define triggers, paths, etc
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
|
||||
|
||||
jobs:
|
||||
test-deploy:
|
||||
name: Test docs deployment
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
cache: npm
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install --frozen-lockfile
|
||||
working-directory: site
|
||||
- name: Test build website
|
||||
run: npm run build
|
||||
working-directory: site
|
||||
3
.gitignore
vendored
@@ -12,5 +12,4 @@ lib/httpd/fsdata.c
|
||||
modules/Custom.cmake
|
||||
.idea
|
||||
cmake-*
|
||||
env.ini
|
||||
|
||||
env.ini
|
||||
10
README.md
@@ -26,7 +26,7 @@
|
||||
|
||||
## Links
|
||||
|
||||
[Downloads](https://gp2040-ce.info/#/download) | [Installation](https://gp2040-ce.info/#/installation) | [Wiring](https://gp2040-ce.info/#/wiring) | [Usage](https://gp2040-ce.info/#/usage) | [FAQ](https://gp2040-ce.info/#/faq) | [GitHub](https://github.com/OpenStickCommunity/GP2040-CE)
|
||||
[Downloads](https://gp2040-ce.info/downloads/download-page) | [Installation](https://gp2040-ce.info/installation) | [Wiring](https://gp2040-ce.info/controller-build/wiring) | [Usage](https://gp2040-ce.info/usage) | [FAQ](https://gp2040-ce.info/faq/faq-general) | [GitHub](https://github.com/OpenStickCommunity/GP2040-CE)
|
||||
|
||||
Full documentation can be found at <https://gp2040-ce.info>
|
||||
|
||||
@@ -38,16 +38,16 @@ Full documentation can be found at <https://gp2040-ce.info>
|
||||
* Left and Right stick emulation via D-pad inputs as well as dedicated toggle switches.
|
||||
* Dual direction via D-pad + LS/RS.
|
||||
* Reversed input via a button.
|
||||
* [Turbo and Turbo LED](https://gp2040-ce.info/#/add-ons/turbo) with selectable speed
|
||||
* [Turbo and Turbo LED](https://gp2040-ce.info/add-ons/turbo) with selectable speed
|
||||
* Per-button RGB LED support.
|
||||
* PWM Player indicator LED support (XInput only).
|
||||
* Multiple LED profiles support.
|
||||
* Support for 128x64 monochrome I2C displays - SSD1306, SH1106, and SH1107 compatible.
|
||||
* Custom startup splash screen and easy image upload via web configuration.
|
||||
* Support for passive buzzer speaker (3v or 5v).
|
||||
* [Built-in, embedded web configuration](https://gp2040-ce.info/#/web-configurator) - No download required!
|
||||
* [Built-in, embedded web configuration](https://gp2040-ce.info/web-configurator) - No download required!
|
||||
|
||||
Visit the [GP2040-CE Usage](https://gp2040-ce.info/#/usage) page for more details.
|
||||
Visit the [GP2040-CE Usage](https://gp2040-ce.info/usage) page for more details.
|
||||
|
||||
## Performance
|
||||
|
||||
@@ -58,7 +58,7 @@ Input latency is tested using the methodology outlined at [WydD's inputlag.scien
|
||||
| v0.7.5 | All modes (except PS4) | 1 ms | 0.45 ms | 1.28 ms | 0.77 ms | 0.24 ms | 96.27% | 3.73% | 0% |
|
||||
| v0.7.5 | PS4 Mode | 1 ms | 1.34 ms | 2.01 ms | 1.72 ms | 0.16 ms | 90.55% | 9.45% | 0% |
|
||||
|
||||
Full results can be found in the [GP2040-CE Firmware Latency Test Results](https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/docs/latency_tests/GP2040-CE_Firmware_Latency_Test_Results.xlsx) .xlsx Sheet.
|
||||
Full results can be found in the [GP2040-CE Firmware Latency Test Results](https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/site/latency_tests/GP2040-CE_Firmware_Latency_Test_Results.xlsx) .xlsx Sheet.
|
||||
|
||||
## Support
|
||||
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
#define KEY_BUTTON_A1 HID_KEY_9 // A1 / Guide / Home / PS / 13 / ~
|
||||
#define KEY_BUTTON_A2 HID_KEY_F2 // A2 / ~ / Capture / ~ / 14 / ~
|
||||
|
||||
// For details on this, see: https://gp2040-ce.info/#/development?id=i2c-display-splash
|
||||
// For details on this, see: https://gp2040-ce.info/development?id=i2c-display-splash
|
||||
#define DEFAULT_SPLASH \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
#define KEY_BUTTON_A1 HID_KEY_9 // A1 / Guide / Home / PS / 13 / ~
|
||||
#define KEY_BUTTON_A2 HID_KEY_F2 // A2 / ~ / Capture / ~ / 14 / ~
|
||||
|
||||
// For details on this, see: https://gp2040-ce.info/#/development?id=i2c-display-splash
|
||||
// For details on this, see: https://gp2040-ce.info/development/firmware-development#i2c-display-splash
|
||||
#define DEFAULT_SPLASH \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
|
||||
@@ -316,7 +316,7 @@
|
||||
#define PSPASSTHROUGH_HOST_PIN_DPLUS -1
|
||||
#define PSPASSTHROUGH_HOST_PIN_5V -1
|
||||
|
||||
// For details on this, see: https://gp2040-ce.info/#/development?id=i2c-display-splash
|
||||
// For details on this, see: https://gp2040-ce.info/development?id=i2c-display-splash
|
||||
#define DEFAULT_SPLASH \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
#define KEYBOARD_HOST_PIN_DPLUS -1
|
||||
#define KEYBOARD_HOST_PIN_5V -1
|
||||
|
||||
// For details on this, see: https://gp2040-ce.info/#/development?id=i2c-display-splash
|
||||
// For details on this, see: https://gp2040-ce.info/development/firmware-development#i2c-display-splash
|
||||
#define DEFAULT_SPLASH \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
[**Home**](README "GP2040-CE | RP2040 Gamepad Firmware Documentation")
|
||||
[**Download**](download "GP2040-CE | Download")
|
||||
**General**
|
||||
- [Introduction](introduction "GP2040-CE | Introduction")
|
||||
- [Firmware Installation](installation "GP2040-CE | Firmware Installation")
|
||||
- [Usage](usage "GP2040-CE | Usage")
|
||||
- [Hotkeys](hotkeys "GP2040-CE | Hotkeys")
|
||||
- [RGB LEDs](rgb-leds "GP2040-CE | RGB LEDs")
|
||||
- [Getting Help/Support](getting-help-support "GP2040-CE | Getting Help")
|
||||
|
||||
**FAQs**
|
||||
|
||||
- [General FAQ](faq "GP2040-CE | Frequently Asked Questions (FAQ)")
|
||||
- [PS4/PS5 Compatibility FAQ](faq-ps4-ps5-compatibility "GP2040-CE | PS4-PS5 Compatibility")
|
||||
|
||||
**Web Configurator**
|
||||
|
||||
- [Web Configurator](web-configurator "GP2040-CE | Web Configurator")
|
||||
- [Macros](macros "GP2040-CE | Macros")
|
||||
- [Add-Ons](add-ons "GP2040-CE | Web Configurator - Add-ons")
|
||||
- [Analog](add-ons/analog.md)
|
||||
- [BOOTSEL Button](add-ons/bootsel-button.md)
|
||||
- [Buzzer Speaker](add-ons/buzzer-speaker.md)
|
||||
- [Dual Directional Input](add-ons/dual-direction-input.md)
|
||||
- [Extra Button](add-ons/extra-button.md)
|
||||
- [Focus Mode](add-ons/focus-mode.md)
|
||||
- [I2C Analog ADS1219](add-ons/i2c-analog-ads1219.md)
|
||||
- [Input Reverse](add-ons/input-reverse.md)
|
||||
- [Joystick Selection Slider](add-ons/joystick-selection-slider.md)
|
||||
- [On-board LED](add-ons/on-board-led.md)
|
||||
- [Player Number](add-ons/player-number.md)
|
||||
- [PS4 Mode](add-ons/ps4-mode.md)
|
||||
- [SNES Input](add-ons/snes-input.md)
|
||||
- [SOCD Selection Slider](add-ons/socd-selection-slider.md)
|
||||
- [Tilt Input](add-ons/tilt-input.md)
|
||||
- [Turbo](add-ons/turbo.md)
|
||||
- [USB Host Based Add-ons](add-ons/usb-host-based-add-ons.md)
|
||||
- [PS Passthrough](add-ons/ps-passthrough.md)
|
||||
- [Keyboard Host](add-ons/keyboard-host.md)
|
||||
- [Wii Extensions](add-ons/wii-extensions.md)
|
||||
|
||||
**Controller Building**
|
||||
|
||||
- [Wiring](wiring "GP2040-CE | Wiring Guide")
|
||||
|
||||
**Developing GP2040-CE**
|
||||
|
||||
- [Firmware Development](development "GP2040-CE | Development")
|
||||
|
||||
**References**
|
||||
|
||||
- [Contribution Guide](contribution-guide "GP2040-CE | Contribution Guide")
|
||||
- [Templates](templates "GP2040-CE | Templates")
|
||||
@@ -1,26 +0,0 @@
|
||||
# Add-Ons Configuration
|
||||
|
||||
This section is for custom add-ons that can be enabled to expand the functionality of GP2040-CE. Some of these add-ons are experimental. Please note that not all add-ons may work together.
|
||||
|
||||
## Available Add-ons
|
||||
|
||||
- [Analog](add-ons/analog.md)
|
||||
- [BOOTSEL Button Configuration](add-ons/bootsel-button.md)
|
||||
- [Buzzer Speaker](add-ons/buzzer-speaker.md)
|
||||
- [Dual Directional Input](add-ons/dual-direction-input.md)
|
||||
- [Extra Button Configuration](add-ons/extra-button.md)
|
||||
- [Focus Mode Configuration](add-ons/focus-mode.md)
|
||||
- [I2C Analog ADS1219](add-ons/i2c-analog-ads1219.md)
|
||||
- [Input Reverse](add-ons/input-reverse.md)
|
||||
- [Joystick Selection Slider](add-ons/joystick-selection-slider.md)
|
||||
- [On-board LED Configuration](add-ons/on-board-led.md)
|
||||
- [Player Number (X-INPUT ONLY)](add-ons/player-number.md)
|
||||
- [PS4 Mode](add-ons/ps4-mode.md)
|
||||
- [SNES Input](add-ons/snes-input.md)
|
||||
- [SOCD Selection Slider](add-ons/socd-selection-slider.md)
|
||||
- [Tilt Input](add-ons/tilt-input.md)
|
||||
- [Turbo](add-ons/turbo.md)
|
||||
- [USB Host Based Add-ons](add-ons/usb-host-based-add-ons.md)
|
||||
- [PS Passthrough](add-ons/ps-passthrough.md)
|
||||
- [Keyboard Host Configuration](add-ons/keyboard-host.md)
|
||||
- [Wii Extensions](add-ons/wii-extensions.md)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Keyboard Host Configuration
|
||||
|
||||

|
||||
@@ -1,5 +0,0 @@
|
||||
# Player Number (X-INPUT ONLY)
|
||||
|
||||

|
||||
|
||||
* `Player Number` - Choose what player number this RP2040 based device will be representing. This is only for X-INPUT mode.
|
||||
@@ -1,5 +0,0 @@
|
||||
# PS Passthrough
|
||||
|
||||

|
||||
|
||||
Enabling this add-on will allow you to use a licensed 3rd party device to authenticate off of. This add-on requires that you have something like the  or a board with a USB passthrough port on it already. If you have passthrough enabled you can turn off the above `PS4 Mode` add-on as the two will not work together. Please also ensure that under the `Settings` section you have chosen PS4 mode and picked if you want the GP2040-CE unit to function as a controller or as a fightstick.
|
||||
@@ -1,18 +0,0 @@
|
||||
# USB Host Based Add-ons
|
||||
|
||||
These add-ons are predicated on having and using a USB Host Port on the device. These settings are shared between the add-ons in this section.
|
||||
|
||||
* `D+` - The GPIO Pin used to carry Data Plus between the USB Host Port and RP2040
|
||||
* `D-` - The GPIO Pin used to carry Data Minus between the USB Host Port and RP2040. This cannot be set and will be automatically determined from `D+`.
|
||||
* `5V Power (optional)` - The GPIO Pin used to enable 5V power to the host port on the board. This is only applicable to a small number of boards (e.g. Adafruit RP2040 Feather USB Host) and most boards do not require this to be set.
|
||||
|
||||
## Example Wiring Diagram
|
||||
|
||||
This example wiring diagram is applicable to both the PS Passthrough and the Keyboard Host Configuration Add-ons as both require a USB host port to be set up and connected to the board.
|
||||
|
||||

|
||||
|
||||
* `VCC` - Connects to 5V power (Example: VBUS on the Raspberry Pi Pico)
|
||||
* `D+` - Connects to the `D+` GPIO Pin above, set in the Web Configurator. (Example: GPIO0 on the Raspberry Pi Pico)
|
||||
* `D-` - Connects to the `D-` GPIO Pin above, automatically set based on D+. (Example: GPIO1 on the Raspberry Pi Pico)
|
||||
* `GND` - Connects to a ground pin, any `GND` pin will work. (Example: GND on the Raspberry Pi Pico)
|
||||
487
docs/app.js
@@ -1,487 +0,0 @@
|
||||
const configCategories = [
|
||||
'Microcontroller Boards',
|
||||
'Open Source Devices',
|
||||
'Closed Source Devices',
|
||||
'Legacy Devices'
|
||||
];
|
||||
|
||||
const configData = {
|
||||
AlpacaOwO: {
|
||||
name: 'Alpaca-OwO',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/Project-Alpaca/Alpaca-OwO',
|
||||
desc: 'Arcade controller I/O platform designed by <a href="https://github.com/dogtopus">dogtopus</a>.'
|
||||
},
|
||||
BentoBox: {
|
||||
name: 'ScrubTier BentoBox',
|
||||
category: configCategories[2],
|
||||
website: 'https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs/BentoBox',
|
||||
desc: ''
|
||||
},
|
||||
DURAL: {
|
||||
name: 'BatiKING DURAL',
|
||||
category: configCategories[3],
|
||||
website: 'https://github.com/BatiKING/DURAL_DIY',
|
||||
desc: ''
|
||||
},
|
||||
FightboardV3: {
|
||||
name: 'thnikk Fightboard V3',
|
||||
category: configCategories[3],
|
||||
website: 'https://docs.thnikk.moe/models/fightboard/v3.html',
|
||||
desc: ''
|
||||
},
|
||||
FightboardV3Mirrored: {
|
||||
name: 'thnikk Fightboard V3 (Mirrored)',
|
||||
category: configCategories[3],
|
||||
website: 'https://docs.thnikk.moe/models/fightboard/v3.html',
|
||||
desc: ''
|
||||
},
|
||||
FlatboxRev4: {
|
||||
name: 'Flatbox Rev 4',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/jfedor2/flatbox/tree/master/hardware-rev4',
|
||||
desc: 'Stickless PCB designed by <a href="https://github.com/jfedor2">jfedor2</a> using an embedded RP2040 chip.'
|
||||
},
|
||||
FlatboxRev5: {
|
||||
name: 'Flatbox Rev 5',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/jfedor2/flatbox/tree/master/hardware-rev5',
|
||||
desc: 'Stickless PCB designed by <a href="https://github.com/jfedor2">jfedor2</a> using the Waveshare RP2040-Zero.'
|
||||
},
|
||||
FlatboxRev5RGB: {
|
||||
name: 'Flatbox Rev 5 RGB',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Flatbox%20Rev%205%20RGB',
|
||||
desc: 'Stickless PCB designed by <a href="https://github.com/jfedor2">jfedor2</a> and <a href="https://github.com/TheTrainGoes">TheTrain</a> using the Waveshare RP2040-Zero.'
|
||||
},
|
||||
FlatboxRev5Southpaw: {
|
||||
name: 'Flatbox Rev 5 Southpaw',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/SkylaHila/flatbox-southpaw
',
|
||||
desc: 'Mirrored version of the Flatbox Rev 5 by SkylaHila. Based on the Flatbox Rev 5 by <a href="https://github.com/jfedor2">jfedor2</a>.'
|
||||
},
|
||||
KB2040: {
|
||||
name: 'Adafruit KB2040',
|
||||
category: configCategories[0],
|
||||
pinout: '/#/wiring?id=adafruit-kb2040',
|
||||
website: 'https://learn.adafruit.com/adafruit-kb2040',
|
||||
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.'
|
||||
},
|
||||
KeyboardConverter: {
|
||||
name: 'GP2040-CE Keyboard Converter',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/blob/main/GP2040%20Keyboard%20Converter/Waveshare%20Zero-PCB/README.md',
|
||||
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. The end result is a device that allows you to play on a keyboard, but have it registered just as GP2040-CE controller, whether that is XInput, DInput, PS4, or Switch.'
|
||||
},
|
||||
Liatris: {
|
||||
name: 'Liatris',
|
||||
category: configCategories[0],
|
||||
website: 'https://splitkb.com/products/liatris',
|
||||
desc: 'Drop in RP2040 replacement for Pro Micro builds by SplitKB.com'
|
||||
},
|
||||
MavercadeKeebfighter: {
|
||||
name: 'Mavercade Keebfighter',
|
||||
category: configCategories[2],
|
||||
website: 'https://github.com/OpenStickCommunity/GP2040-CE/tree/main/configs/MavercadeKeebfighter',
|
||||
desc: ''
|
||||
},
|
||||
OpenCore0: {
|
||||
name: 'Open Core0',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Open_Core0',
|
||||
desc: 'Open source stickless controller designed by <a href="https://github.com/TheTrainGoes">TheTrain</a>.'
|
||||
},
|
||||
OpenCore0WASD: {
|
||||
name: 'Open Core0 WASD',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/Open_Core0%20WASD',
|
||||
desc: 'Open source stickless WASD controller designed by <a href="https://github.com/TheTrainGoes">TheTrain</a>.'
|
||||
},
|
||||
Pico: {
|
||||
name: 'Raspberry Pi Pico',
|
||||
category: configCategories[0],
|
||||
pos: 1,
|
||||
pinout: '/#/wiring?id=raspberry-pi-pico',
|
||||
website: 'https://www.raspberrypi.com/products/raspberry-pi-pico/',
|
||||
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.'
|
||||
},
|
||||
PicoAnn: {
|
||||
name: 'PicoAnn',
|
||||
category: configCategories[3],
|
||||
website: '',
|
||||
desc: ''
|
||||
},
|
||||
PicoFightingBoard: {
|
||||
name: 'Pico Fighting Board',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/FeralAI/PicoFightingBoard',
|
||||
desc: 'Arcade encoder board designed by <a href="https://github.com/FeralAI">FeralAI</a> using a Raspberry Pi Pico or pin-equivalent RP2040 board.'
|
||||
},
|
||||
PicoW: {
|
||||
name: 'Raspberry Pi Pico W',
|
||||
category: configCategories[0],
|
||||
pos: 2,
|
||||
pinout: '/#/wiring?id=raspberry-pi-pico',
|
||||
website: 'https://www.raspberrypi.com/products/raspberry-pi-pico/',
|
||||
desc: 'The Raspberry Pi Pico W is a powerful, low-cost board based on the Raspberry Pi RP2040 microcontroller.'
|
||||
},
|
||||
RanaTadpole: {
|
||||
name: 'Rana Tadpole',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/rana-sylvatica/rana-tadpole',
|
||||
desc: 'Pocket-sized digital controller from RanaLabs.'
|
||||
},
|
||||
RP2040AdvancedBreakoutBoard: {
|
||||
name: 'RP2040 Advanced Breakout',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Advanced%20Breakout%20Board',
|
||||
desc: 'Arcade encoder board designed by <a href="https://github.com/TheTrainGoes">TheTrain</a> using an embedded RP2040, and is the official board of the GP2040-CE project.'
|
||||
},
|
||||
RP2040AdvancedBreakoutBoardUSBPassthrough: {
|
||||
name: 'RP2040 Advanced Breakout (USB Passthrough)',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Advanced%20Breakout%20Board%20-%20Passthrough',
|
||||
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.'
|
||||
},
|
||||
RP2040MiniBreakoutBoard: {
|
||||
name: 'RP2040 Mini Breakout',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Mini%20Breakout%20Board',
|
||||
desc: 'A reduced-footprint spin off of the RP2040 Advanced Breakout Board designed by <a href="https://github.com/TheTrainGoes">TheTrain</a>.'
|
||||
},
|
||||
ReflexEncodeV1: {
|
||||
name: 'Reflex Arcade Encoder v1',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/misteraddons/ReflexFightingBoard',
|
||||
desc: 'Open source PCB for arcade sticks v1 designed and sold by <a href="https://github.com/misteraddons">MiSTerAddons</a> using an embedded RP2040 chip.'
|
||||
},
|
||||
ReflexEncodeV2: {
|
||||
name: 'Reflex Arcade Encoder v2',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/misteraddons/ReflexFightingBoard',
|
||||
desc: 'Open source PCB for arcade sticks v2 designed and sold by <a href="https://github.com/misteraddons">MiSTerAddons</a> using an embedded RP2040 chip.'
|
||||
},
|
||||
ReflexCtrlSNES: {
|
||||
name: 'Reflex CTRL SNES',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/misteraddons/Reflex-CTRL',
|
||||
desc: 'Reflex Board Open source PCB for SNES Controller replacement PCBs designed and sold by <a href="https://github.com/misteraddons">MiSTerAddons</a> using an embedded RP2040 chip.'
|
||||
},
|
||||
SGFDevices: {
|
||||
name: 'SGF Flatbox',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/sgfdevices/SGFlatbox',
|
||||
desc: 'Configuration for the <a href="https://github.com/sgfdevices/SGFlatbox">SGF Flatbox-based controllers</a>, based on the excellent revisions of the Flatbox design by jfedor2 powered by an RP2040 MCU.'
|
||||
},
|
||||
SparkFunProMicro: {
|
||||
name: 'SparkFun Pro Micro',
|
||||
category: configCategories[0],
|
||||
pos: 2,
|
||||
pinout: '/#/wiring?id=sparkfun-pro-micro-rp2040',
|
||||
website: 'https://learn.sparkfun.com/tutorials/pro-micro-rp2040-hookup-guide',
|
||||
desc: 'An RP2040 board in the Pro Micro form factor. This build is a drop-in replacement for the <a href="https://github.com/MickGyver/DaemonBite-Arcade-Encoder">Daemonbite Arcade Encoder</a>.'
|
||||
},
|
||||
Stress: {
|
||||
name: 'Stress',
|
||||
category: configCategories[1],
|
||||
website: 'https://github.com/GroooveBob/Stress',
|
||||
desc: 'A small and portable PCB-as-a-controller designed by <a href="https://github.com/GroooveBob">GroooveBob</a> using the Waveshare RP-2040-Zero.'
|
||||
},
|
||||
WaveshareZero: {
|
||||
name: 'Waveshare RP2040-Zero',
|
||||
category: configCategories[0],
|
||||
pos: 3,
|
||||
pinout: '/#/wiring?id=waveshare-rp2040-zero',
|
||||
website: 'https://www.waveshare.com/wiki/RP2040-Zero',
|
||||
desc: 'The <a href="https://www.waveshare.com/rp2040-zero.htm">Waveshare RP2040-Zero</a> 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.'
|
||||
},
|
||||
};
|
||||
|
||||
window.$docsify = {
|
||||
name: 'GP2040-CE',
|
||||
repo: 'https://github.com/OpenStickCommunity/GP2040-CE',
|
||||
homepage: 'https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/README.md',
|
||||
search: {
|
||||
maxAge: 86400000, // Expiration time, the default one day
|
||||
placeholder: 'Type to search',
|
||||
depth: 6,
|
||||
hideOtherSidebarContent: false,
|
||||
},
|
||||
logo: 'assets/images/gp2040-ce-logo.png',
|
||||
loadSidebar: true,
|
||||
alias: {
|
||||
'/.*/_sidebar.md': '/_sidebar.md',
|
||||
},
|
||||
auto2top: true,
|
||||
subMaxLevel: 1,
|
||||
sidebarDisplayLevel: 3, // set sidebar display level
|
||||
externalLinkTarget: '_self',
|
||||
cornerExternalLinkTarget: '_self',
|
||||
themeable: {
|
||||
readyTransition : true, // default
|
||||
responsiveTables: true // default
|
||||
},
|
||||
vueGlobalOptions: {
|
||||
directives: {
|
||||
VScrollThreshold,
|
||||
VueStickyElement,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
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" },
|
||||
"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)" },
|
||||
"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" },
|
||||
"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" },
|
||||
"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" },
|
||||
"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)" },
|
||||
"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)" },
|
||||
},
|
||||
selectedLabels: localStorage.getItem('selectedLabels') || 'GP2040',
|
||||
};
|
||||
}
|
||||
},
|
||||
vueComponents: {
|
||||
'download-box': {
|
||||
props: ['release'],
|
||||
template: `
|
||||
<div class="download-box">
|
||||
<a class="download-img" :href="release.url">
|
||||
<img :src="'/assets/boards/' + release.key + '.jpg'">
|
||||
</a>
|
||||
<div class="download-info">
|
||||
<div class="download-title">{{ release.name }}</div>
|
||||
<ul class="download-links">
|
||||
<li>
|
||||
<a :href="release.url">
|
||||
<i class="fa-solid fa-file-arrow-down fa-2xl"></i>
|
||||
Download
|
||||
</a>
|
||||
</li>
|
||||
<li v-if="release.pinout">
|
||||
<a :href="release.pinout">
|
||||
<i class="fa-solid fa-gamepad fa-2xl"></i>
|
||||
Pinout
|
||||
</a>
|
||||
</li>
|
||||
<li v-if="release.website">
|
||||
<a :href="release.website">
|
||||
<i class="fa-solid fa-globe fa-2xl"></i>
|
||||
Website
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div v-if="release.desc" class="download-desc" v-html="release.desc">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
},
|
||||
|
||||
'download-category': {
|
||||
props: ['category'],
|
||||
template: `
|
||||
<div class="download-category">
|
||||
<h3>{{ category }}</h3>
|
||||
<div v-if="category === 'Legacy Devices'">
|
||||
<p>GP2040-CE builds for these devices have been deprecated due to one or more of the following reasons:</p>
|
||||
<ul>
|
||||
<li>The manufacturer already provides a custom build of GP2040-CE</li>
|
||||
<li>The device is no longer available for purchase</li>
|
||||
<li>The operation of the device running an updated GP2040-CE build cannot be verified by the development team</li>
|
||||
</ul>
|
||||
<p>These builds remain available, however <strong>legacy devices are not supported by the GP2040-CE team</strong>.</p>
|
||||
<p><strong>Please ensure you have a backup of the original firmware and your settings before updating your device!</strong></p>
|
||||
</div>
|
||||
<div class="download-category-list">
|
||||
<download-box
|
||||
v-for="release in releases[category]"
|
||||
:key="release.title"
|
||||
:release="release">
|
||||
</download-box>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
releases: this.$root.releases,
|
||||
};
|
||||
},
|
||||
},
|
||||
|
||||
'download-page': {
|
||||
template: `
|
||||
<div v-if="fetched">
|
||||
<version-name></version-name>
|
||||
<download-category
|
||||
v-for="category of configCategories"
|
||||
:key="category"
|
||||
:category="category">
|
||||
</download-category>
|
||||
<div>
|
||||
<h3>Flash Nuke</h3>
|
||||
<p>
|
||||
Use the <a href="https://raw.githubusercontent.com/OpenStickCommunity/GP2040-CE/main/docs/downloads/flash_nuke.uf2">flash_nuke.uf2</a>
|
||||
file to completely erase the flash of the RP2040 board. <strong>THIS WILL ERASE ALL SAVED SETTINGS!</strong>
|
||||
Use this prior to flashing GP2040-CE on your device if you want to start from a clean slate, or as a troubleshooting step before to reporting an issue.
|
||||
</p>
|
||||
</div>
|
||||
<release-notes></release-notes>
|
||||
</div>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
configCategories,
|
||||
configData,
|
||||
fetched: false,
|
||||
releaseNotes: this.$root.releaseNotes,
|
||||
releaseVersion: this.$root.releaseVersion,
|
||||
releases: this.$root.releases,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
fetch("https://api.github.com/repos/OpenStickCommunity/GP2040-CE/releases/latest", { method: "GET", cache: "force-cache" })
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
const releaseInfo = data;
|
||||
/*
|
||||
Tries to find a board and redirects to download url based on the URL
|
||||
e.g: https://gp2040-ce.info/#/download?RP2040AdvancedBreakoutBoard
|
||||
*/
|
||||
const uf2ToDownload = window.location.hash
|
||||
.split('?')?.[1]
|
||||
?.toLowerCase();
|
||||
if (uf2ToDownload) {
|
||||
releaseInfo.assets.forEach(({ browser_download_url, name }) => {
|
||||
if (
|
||||
name
|
||||
.substring(name.lastIndexOf('_') + 1)
|
||||
.replace('.uf2', '')
|
||||
.toLowerCase() === uf2ToDownload
|
||||
) {
|
||||
window.location.href = browser_download_url;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$root.releaseNotes = releaseInfo.body;
|
||||
this.$root.releaseVersion = releaseInfo.name;
|
||||
|
||||
this.$root.releases = releaseInfo.assets
|
||||
.filter(a => a.name.startsWith('GP2040-CE_'))
|
||||
.filter(a => {
|
||||
const key = a.name.substring(a.name.lastIndexOf('_') + 1).replace('.uf2', '');
|
||||
return Object.keys(this.configData).indexOf(key) > -1;
|
||||
})
|
||||
.map(a => {
|
||||
const key = a.name.substring(a.name.lastIndexOf('_') + 1).replace('.uf2', '');
|
||||
return {
|
||||
key,
|
||||
...this.configData[key],
|
||||
url: a.browser_download_url,
|
||||
img: `/assets/boards/${key}.jpg`,
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
if (a.name < b.name) return -1;
|
||||
if (a.name > b.name) return 1;
|
||||
return 0;
|
||||
})
|
||||
.sort((a, b) => (a.pos === undefined ? Number.MAX_VALUE : a.pos) - (b.pos === undefined ? Number.MAX_VALUE : b.pos))
|
||||
.reduce((p, r) => {
|
||||
let values = { ...p };
|
||||
if (!values[r.category])
|
||||
values[r.category] = [];
|
||||
|
||||
values[r.category].push(r);
|
||||
return values;
|
||||
}, { });
|
||||
|
||||
this.fetched = true;
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
'label-selector': {
|
||||
template: `
|
||||
<VueStickyElement visibleOnDirection="disabled" class="label-select" stuckClass="sticky-label-select">
|
||||
<div class="form-dropdown">
|
||||
<select name="labelSelect" v-model="selectedLabels" v-on:change="setSelectedLabels">
|
||||
<option v-for="item in labelData" :key="item.name" :value="item.name">{{ item.name }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</VueStickyElement>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
labelData: this.$root.labelData,
|
||||
selectedLabels: this.$root.selectedLabels,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
setSelectedLabels($event) {
|
||||
localStorage.setItem('selectedLabels', $event.target.value);
|
||||
this.$root.selectedLabels = $event.target.value;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
'hotkey': {
|
||||
props: ['buttons'],
|
||||
template: `
|
||||
<strong>
|
||||
<code class="hotkey">{{ buttons.reduce((prev, next) => prev ? prev + " + " + labelData[state.selectedLabels][next] : labelData[state.selectedLabels][next] , "") }}</code>
|
||||
</strong>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
state: this.$root.$data,
|
||||
labelData: this.$root.labelData,
|
||||
};
|
||||
},
|
||||
},
|
||||
|
||||
'version-name': {
|
||||
template: `<h2>GP2040-CE <strong v-text="version" v-if="version"></strong></h2>`,
|
||||
data() {
|
||||
return {
|
||||
version: this.$root.releaseVersion,
|
||||
};
|
||||
},
|
||||
},
|
||||
|
||||
'release-notes': {
|
||||
template: `
|
||||
<div v-html="body"></div>
|
||||
`,
|
||||
data() {
|
||||
marked.use({
|
||||
renderer: {
|
||||
heading(text, level) {
|
||||
return `<h3>${text}</h3>`;
|
||||
}
|
||||
}
|
||||
})
|
||||
return {
|
||||
body: marked.parse(this.$root.releaseNotes ? "---\r\n## Release Notes\r\n" + this.$root.releaseNotes : ""),
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
},
|
||||
tabs: {
|
||||
persist : true, // default
|
||||
sync : true, // default
|
||||
theme : 'classic', // default
|
||||
tabComments: true, // default
|
||||
tabHeadings: true // default
|
||||
},
|
||||
toc: {
|
||||
tocMaxLevel: 6,
|
||||
target: 'h2, h3, h4, h5, h6',
|
||||
ignoreHeaders: ['<!-- {docsify-ignore} -->', '<!-- {docsify-ignore-all} -->']
|
||||
// scope: '.markdown-section',
|
||||
// headings: 'h1, h2, h3, h4, h5, h6',
|
||||
// title: 'Table of Contents',
|
||||
}
|
||||
};
|
||||
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 56 KiB |
@@ -1,10 +0,0 @@
|
||||
# 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.
|
||||
|
||||
|  |  |  |  |  |
|
||||
|---|---|---|---|---|
|
||||
|  |  |  |  |  |
|
||||
|  |  | | | |
|
||||
@@ -1,3 +0,0 @@
|
||||
# Downloads
|
||||
|
||||
<download-page></download-page>
|
||||
@@ -1,48 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>GP2040-CE | Community Edition Firmware</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<link rel="icon" href="/favicon.ico">
|
||||
<meta name="description" content="GP2040-CE is a gamepad firmware for the Raspberry Pi Pico and other boards based on the RP2040 microcontroller, and provides high performance with a rich feature set across multiple platforms. GP2040-CE is compatible with platforms such as PC, Nintendo Switch, PS3/PS4, Steam Deck, MiSTer and Android.">
|
||||
<meta name="keywords" content="gp2040,gp2040ce,gp2040-ce,rp2040,controller,firmware,ps3,ps4,switch">
|
||||
<meta name="robots" content="index, archive">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<link rel="canonical" href="https://gp2040-ce.info/">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple-dark.css">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/prism-themes@1.9.0/themes/prism-coldark-dark.min.css">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css">
|
||||
<link rel="stylesheet" href="https://unpkg.com/docsify-plugin-toc@1.3.1/dist/light.css">
|
||||
<link rel="stylesheet" href="/site.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
<!-- Vue 2.x -->
|
||||
<script src="//cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
|
||||
<!-- <script src="//cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> -->
|
||||
<script src="//cdn.jsdelivr.net/npm/v-scroll-threshold@2.0.0/dist/v-scroll-threshold.min.js"></script>
|
||||
<script>var thresholdPlugin = VScrollThreshold;</script>
|
||||
<script src="//cdn.jsdelivr.net/npm/vue-sticky-element@1.1.2/dist/vue-sticky-element.min.js"></script>
|
||||
<!-- Docsify v4 -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/docsify.min.js"></script>
|
||||
<!-- docsify-themeable (latest v0.x.x) -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/prismjs@1.x/components/prism-c.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/prismjs@1.x/components/prism-cpp.min.js"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/prismjs@1.x/components/prism-ini.min.js"></script>
|
||||
<!-- Font Awesome -->
|
||||
<script src="//cdn.jsdelivr.net/gh/zignis/docsify-fa/script.min.js"></script>
|
||||
<script src="app.js"></script>
|
||||
<!-- Docsify Search -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.min.js"></script>
|
||||
<!-- docsify-tabs (latest v1.x.x) -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/docsify-tabs"></script>
|
||||
<!-- docsify-plugin-toc (latest v1.x.x) -->
|
||||
<script src="https://unpkg.com/docsify-plugin-toc@1.3.1/dist/docsify-plugin-toc.min.js"></script>
|
||||
<!-- docsify-plugin-toc (latest v1.x.x) -->
|
||||
<!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script> -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/docsify-sidebar-collapse.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
2234
docs/package-lock.json
generated
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": "docs",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"scripts": {
|
||||
"start": "docsify serve ./ --open"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"docsify-cli": "^4.4.4"
|
||||
}
|
||||
}
|
||||
176
docs/site.css
@@ -1,176 +0,0 @@
|
||||
:root {
|
||||
--mono-hue: 0;
|
||||
--mono-saturation : 0%;
|
||||
--modular-scale : 1.25;
|
||||
--base-font-size: 0.875rem;
|
||||
--theme-color : #C73C8B;
|
||||
--sidebar-width : 20rem;
|
||||
/* --sidebar-padding: 0 0.75rem; */
|
||||
--content-max-width: 70em;
|
||||
--docsifytabs-border-color: #ededed;
|
||||
--docsifytabs-tab-highlight-color: #C73C8B;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1.5em 0;
|
||||
}
|
||||
|
||||
.form-dropdown label {
|
||||
display: none;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.hotkey {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.label-select {
|
||||
display: inline-block;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.sticky-label-select {
|
||||
/* width: 100%; */
|
||||
position: fixed !important;
|
||||
top: var(--sidebar-toggle-offset-top);
|
||||
height: var(--sidebar-toggle-height);
|
||||
right: 0px;
|
||||
background: var(--sidebar-toggle-background, transparent);
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
transform: translateY(-100%);
|
||||
opacity: 0.8;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.sticky-label-select label {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-top: -4px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.sidebar .search .clear-button {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
/*************/
|
||||
/* Downloads */
|
||||
/*************/
|
||||
|
||||
.download-category {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.download-category h3 {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.download-category-list {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 2rem 1rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.download-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.download-box .download-img {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.download-box .download-img img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.download-box .download-info {
|
||||
display: flex;
|
||||
flex: 1 0 auto;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
color: #000000;
|
||||
background-color: #d2d2d2;
|
||||
border-bottom-left-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
}
|
||||
|
||||
.download-box .download-info .download-title {
|
||||
text-align: center;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
padding: 0.5rem 0rem 1.5rem 0.5rem;
|
||||
}
|
||||
|
||||
.download-box .download-info .download-links {
|
||||
display: flex;
|
||||
list-style: none;
|
||||
justify-content: space-around;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.download-box .download-info .download-links li {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.download-box .download-info .download-links li a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.download-box .download-info .download-links li a:hover {
|
||||
color: var(--theme-color);
|
||||
}
|
||||
|
||||
.download-box .download-info .download-links li a i {
|
||||
height: 1rem;
|
||||
}
|
||||
|
||||
.download-box .download-info .download-desc {
|
||||
padding: 0rem 1.25rem 1rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 500px) {
|
||||
.download-category-list {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 900px) {
|
||||
.download-category-list {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
/*************/
|
||||
/* Table of Contents */
|
||||
/*************/
|
||||
|
||||
@media only screen and (max-width: 1299px) {
|
||||
aside.toc-nav {
|
||||
max-width: 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1300px) {
|
||||
section.content {
|
||||
padding-right: 285px;
|
||||
}
|
||||
}
|
||||
|
||||
aside.toc-nav {
|
||||
right: 1%;
|
||||
margin-right: 0px;
|
||||
width: 270px;
|
||||
max-height: 85vh;
|
||||
}
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
# GP2040-CE Usage
|
||||
|
||||
Select the button labels to be displayed in the usage guide: <label-selector></label-selector>
|
||||
|
||||
!> The v0.5+ release has some breaking changes to boards other than the Raspberry Pi Pico. If you are using such a board, do not update from an older version unless you have a backup .uf2 from a known good version, or you know what you're doing.
|
||||
|
||||
## Buttons
|
||||
|
||||
GP2040-CE uses generic button labeling for gamepad state, which is then converted to the appropriate input type before sending. This table provides a map of GP2040-CE buttons to the supported input types and layouts:
|
||||
|
||||
| GP2040-CE | XInput | Switch | PS4 | PS3 | DirectInput | Arcade |
|
||||
| ---------- | ------ | ------- | ------------ | ------------ | ------------ | ------ |
|
||||
| B1 | A | B | Cross | Cross | 2 | K1 |
|
||||
| B2 | B | A | Circle | Circle | 3 | K2 |
|
||||
| B3 | X | Y | Square | Square | 1 | P1 |
|
||||
| B4 | Y | X | Triangle | Triangle | 4 | P2 |
|
||||
| L1 | LB | L | L1 | L1 | 5 | P4 |
|
||||
| R1 | RB | R | R1 | R1 | 6 | P3 |
|
||||
| L2 | LT | ZL | L2 | L2 | 7 | K4 |
|
||||
| R2 | RT | ZR | R2 | R2 | 8 | K3 |
|
||||
| S1 | Back | Minus | Share | Select | 9 | Coin |
|
||||
| S2 | Start | Plus | Options | Start | 10 | Start |
|
||||
| L3 | LS | LS | L3 | L3 | 11 | LS |
|
||||
| R3 | RS | RS | R3 | R3 | 12 | RS |
|
||||
| A1 | Guide | Home | PS | PS | 13 | Home |
|
||||
| A2 | - | Capture | Touchpad | - | 14 | - |
|
||||
|
||||
If your controller is missing dedicated buttons for any specific inputs, check the [Hotkeys page](hotkeys) on how to map a button combination that will emulate those missing inputs.
|
||||
|
||||
?> Unlike other controllers, Keyboard gets different keys for directional buttons. <br> You can change the key mappings for Keyboard mode in [Webconfig mode > Configuration > Keyboard Mapping](web-configurator.md#keyboard-mapping)
|
||||
|
||||
| Direction | Keyboard |
|
||||
| --------- | ---------- |
|
||||
| Up | Up Arrow |
|
||||
| Down | Down Arrow |
|
||||
| Left | Left Arrow |
|
||||
| Right | Right Arrow|
|
||||
|
||||
## Bootsel Mode
|
||||
|
||||
Bootsel Mode is the state of the board where firmware can be flashed onto the board. You will need to use this whenever there is an update or as part of the troubleshooting process.
|
||||
|
||||
You can boot into Bootsel Mode by either holding <hotkey v-bind:buttons='["S1", "S2", "Up"]'></hotkey> buttons while plugging in the controller or by booting into the Web Configurator and then restarting in Bootsel Mode.
|
||||
|
||||
## Webconfig Mode
|
||||
|
||||
Webconfig Mode is the state of the board where built-in web browser-based configuration application is launched. From here, you can customize and configure your controller as needed.
|
||||
|
||||
You can boot into Webconfig Mode by holding the <hotkey v-bind:buttons='["S2"]'></hotkey> button while plugging in the controller.
|
||||
|
||||
## Input Modes
|
||||
|
||||
GP2040-CE is compatible with a number of systems and input modes. To change the input mode, **hold one of the following buttons as the controller is plugged in:**
|
||||
|
||||
| Input Mode | Button Held |
|
||||
|:----------------|:-----------------------------------------:|
|
||||
| Nintendo Switch | <hotkey v-bind:buttons='["B1"]'></hotkey> |
|
||||
| XInput | <hotkey v-bind:buttons='["B2"]'></hotkey> |
|
||||
| DirectInput/PS3 | <hotkey v-bind:buttons='["B3"]'></hotkey> |
|
||||
| PS4 | <hotkey v-bind:buttons='["B4"]'></hotkey> |
|
||||
| Keyboard | <hotkey v-bind:buttons='["R2"]'></hotkey> |
|
||||
|
||||
?> Input mode is saved across power cycles.
|
||||
|
||||
## Hotkeys
|
||||
|
||||
A number of useful hotkeys exist that change the functionality of GP2040 without needing to access the Web Configurator. Commonly used hotkeys include changing the directions to emulate a digital DPad, Left Analog Stick, Right Analog Stick or to change [Simultaneous Opposite Cardinal Direction (SOCD)](https://glossary.infil.net/?t=SOCD) cleaning modes. Different SOCD cleaning modes will ensure the controller obeys certain directional input rules when sending inputs to the computer or game console.
|
||||
|
||||
A number of hotkeys are enabled by default and if you are encountering issues with unexpected behavior on your controller, verify that you did not accidentally trigger a hotkey.
|
||||
|
||||
| Hotkeys Enabled By Default | Inputs |
|
||||
|:----------------------------------------------------|:-------------------------------------------------------|
|
||||
| [Home Button](hotkeys.md#home-button) | <hotkey v-bind:buttons='["S1","S2","Up"]'></hotkey> |
|
||||
| [Dpad Digital](hotkeys.md#dpad-digital) | <hotkey v-bind:buttons='["S1","S2","Down"]'></hotkey> |
|
||||
| [Dpad Left Analog](hotkeys.md#dpad-left-analog) | <hotkey v-bind:buttons='["S1","S2","Left"]'></hotkey> |
|
||||
| [Dpad Right Analog](hotkeys.md#dpad-right-analog) | <hotkey v-bind:buttons='["S2","A1","Right"]'></hotkey> |
|
||||
| [SOCD Up Priority](hotkeys.md#socd-up-priority) | <hotkey v-bind:buttons='["S2","A1","Up"]'></hotkey> |
|
||||
| [SOCD Neutral](hotkeys.md#socd-neutral) | <hotkey v-bind:buttons='["S2","A1","Down"]'></hotkey> |
|
||||
| [SOCD Last Wins](hotkeys.md#socd-last-win) | <hotkey v-bind:buttons='["S2","A1","Left"]'></hotkey> |
|
||||
| [SOCD Invert Y Axis](hotkeys.md#invert-y-axis) | <hotkey v-bind:buttons='["S2","A1","Right"]'></hotkey> |
|
||||
|
||||
?> Selected D-Pad mode and SOCD cleaning mode are saved across power cycles.
|
||||
|
||||
## Add-Ons and Additional Features
|
||||
|
||||
There are a number of add-ons that expand the functionality of GP2040-CE, such as [analog stick emulation](add-ons/analog) and [turbo functions](add-ons/turbo). Due to the large number of add-ons created by the community, they are located in a separate documentation page. Navigate to [Add-Ons page](add-ons) for more information on the individual add-ons.
|
||||
@@ -1,193 +0,0 @@
|
||||
# GP2040-CE Web Configurator
|
||||
|
||||
Select the button labels to be displayed in the web configurator guide: <label-selector></label-selector>
|
||||
|
||||
GP2040-CE contains a built-in web-based configuration application which can be started up by holding <hotkey v-bind:buttons='["S2"]'></hotkey> when plugging your controller into a PC. Then access <http://192.168.7.1> in a web browser to begin configuration. This mode is compatible with Windows, Mac, Linux and SteamOS. When using the web-based configuration on Windows and Mac, RNDIS works on a default install. Linux distributions may need some extra steps to access the web configurator; see [Linux Setup](#linux-setup).
|
||||
|
||||
## Home
|
||||
|
||||

|
||||
|
||||
Here you can see the current version of your firmware and the latest version available on GitHub in the releases section. If a firmware update is available, a link to that release will appear.
|
||||
|
||||
The options in the main menu are:
|
||||
|
||||
* [Home](#home) - The start page.
|
||||
* [Settings](#settings) - Adjust settings like input mode, d-pad mode, etc.
|
||||
* [Configuration > Pin Mapping](#pin-mapping) - Allows for remapping of GPIO pins to different buttons.
|
||||
* [Configuration > Keyboard Mapping](#keyboard-mapping) - Allows for remapping of keyboard keys to different controller inputs.
|
||||
* [Configuration > Profile Settings](#profile-settings) - Allows for remapping of GPIO pins to different buttons.
|
||||
* [Configuration > LED Configuration](#led-configuration) - Enable and configure RGB LEDs here.
|
||||
* [Configuration > Display Configuration](#display-configuration) - Enable and configure display options.
|
||||
* [Configuration > Add-Ons Configuration](#add-ons-configuration) - Enable and configure available add-ons.
|
||||
* [Configuration > Data Backup and Restoration](#data-backup-and-restoration) - Backup and restore settings.
|
||||
* Links - Useful links to the project and documentation
|
||||
* [DANGER ZONE](#danger-zone) - Don't be afraid of the big red button. If something becomes misconfigured, you can reset your settings here.
|
||||
|
||||
## Settings
|
||||
|
||||

|
||||
|
||||
Here you can select the basic settings which are normally available via hotkeys.
|
||||
|
||||
* `Input Mode` - Choose the main input mode (XINPUT, DINPUT, Switch, PS4, HID-Keyboard) this connected device will boot into when powered on. This selection will persist through unplug / replug.
|
||||
* `D-Pad Mode` - Choose the default D-Pad mode (D-Pad, Left Stick or Right Stick).
|
||||
* `SOCD Cleaning Mode` - Choose the default SOCD Cleaning Mode (Neutral, Last Win, First Win, OFF). Please note that PS4, PS3 and Nintendo Switch modes do not support setting SOCD to off and will default to Neutral SOCD.
|
||||
* `Forced Setup Mode` - Allows you to lock out Input Mode, the ability to enter Web-Config or both. Enabling a web-config lockout will require you to nuke and reload the firmware if you wish to make further changes.
|
||||
* `4-Way Joystick Mode` - Enables 4-Way Joystick mode which will prevent cardinal directions.
|
||||
|
||||
Please note that if you choose `PS4` mode you will have an additional option to set the device as a `Controller` or a `Fightstick`. If you choose `Fightstick` and want to use this device with compatible PS5 games you will need to enable the `PS Passthrough` add-on and have a way to connect the device you with to use for passthrough authentication to the RP2040-CE based device via a USB passthrough port.
|
||||
|
||||
### Hotkey Settings
|
||||
|
||||

|
||||
|
||||
An arbitrary number of buttons and directions, plus the optional Function (Fn) button, can be used to define
|
||||
desired hotkey actions. Select Fn if desired, plus one or more buttons/directions, and associate them with a
|
||||
hotkey action. The default hotkeys can be modified or removed, and new ones added, up to 12 in total.
|
||||
|
||||
The available hotkey actions will expand over time. We may also expand the number of hotkeys available to
|
||||
configure in the future.
|
||||
|
||||
## Pin Mapping
|
||||
|
||||

|
||||
|
||||
Here you can remap the GP2040-CE buttons to different GPIO pins on the RP2040 chip. This can be used to simply remap buttons, or bypass a GPIO pin that may have issues on your device.
|
||||
|
||||
## Keyboard Mapping
|
||||
|
||||

|
||||
|
||||
Here you can remap the GP2040-CE buttons to different keyboard keycodes that will be sent to the PC or game console when pressed in Keyboard Mode.
|
||||
|
||||
## Profile Settings
|
||||
|
||||

|
||||
|
||||
Here you can set profiles that will change the GPIO to GP2040-CE button mapping based on what profile you have set. You can change the profile number either using the Web Configurator or using a hotkey shortcut.
|
||||
|
||||
## LED Configuration
|
||||
|
||||
If you have a setup with per-button RGB LEDs, they can be configured here.
|
||||
|
||||
### RGB LED Configuration
|
||||
|
||||

|
||||
|
||||
* `Data Pin` - The GPIO pin that will drive the data line for your RGB LED chain. Set to `-1` to disable RGB LEDs.
|
||||
* `LED Format` - The data format used to communicate with your RGB LEDs. If unsure the default `GRB` value is usually safe.
|
||||
* `LED Layout` - Select the layout for your controls/buttons. This is used for static themes and some per-button animations.
|
||||
* `LEDs Per Button` - Set the number of LEDs in each button on your chain.
|
||||
* `Max Brightness` - Set the maximum brightness for the LEDs. Ranges from 0-255.
|
||||
* `Brightness Steps` - The number of levels of brightness to cycle through when turning brightness up and down.
|
||||
|
||||
### RGB LED Button Order
|
||||
|
||||
!> Please note that RGB Button LEDs must be the first LEDs configured. They will start at index 0 on the RGB LED strip.
|
||||
|
||||

|
||||
|
||||
* `LED Button Order` - Configure which buttons and what order they reside on the LED chain.
|
||||
|
||||
### Player LEDs (XInput)
|
||||
|
||||
Available selections for `Player LED Type` are `None`, `PWM` or `RGB`.
|
||||
|
||||
#### PWM Player LEDs
|
||||
|
||||

|
||||
|
||||
* `PLED #[1-4] Pin` - The GPIO pin the standard LED is connected to.
|
||||
|
||||
#### RGB Player LEDs
|
||||
|
||||
!> Please note that RGB Player LEDs must be located at an index after the RGB LED Buttons on the LED strip! The Web Config interface will suggest a starting index based on the number of LED buttons mapped in [RGB LED Button Order](#rgb-led-button-order) and the select `LEDs Per Button` value. We hope to remove this limitation in the future.
|
||||
|
||||

|
||||
|
||||
* `PLED #[1-4] Index` - The index of the LED module on the RGB strip.
|
||||
* `RGB PLED Color` - Click the box to reveal a color picker, or manually enter the color.
|
||||
|
||||
## Custom LED Theme
|
||||
|
||||

|
||||
|
||||
* `Enable` - Enables the use of Custom LED Theme.
|
||||
* `Preview Layout` - Predefined layouts for previewing LED theme. **NOTE:** This is for preview only, does not affect controller operation.
|
||||
* `Clear All` - Prompts for confirmation to reset the current theme to all buttons black (LEDs off). Make sure you have saved and have a backup if you don't want to lose your customizations.
|
||||
* `Set All To Color` - Presents a color picker to set all buttons to the same normal or pressed color.
|
||||
* `Set Gradient` - Sets a horizontal gradient across the action buttons according to the `Preview Layout` selection.
|
||||
* `Set Pressed Gradient` - Same as `Set Gradient`, but for pressed button state.
|
||||
* `Save Color` - Save a custom color to the color picker palette.
|
||||
* `Delete Color` - Deletes a custom color from the color picker palette. Stock colors cannot be deleted.
|
||||
|
||||
?> All saved colors and gradient selections are saved to your browser's local storage.
|
||||
|
||||
If enabled, the Custom LED Theme will be available as another animation mode and will cycle with the `Previous Animation` and `Next Animation` shortcuts on your controller. You can also use the [Data Backup and Restoration](#data-backup-and-restoration) feature to create and share themes!
|
||||
|
||||
## Display Configuration
|
||||
|
||||

|
||||
|
||||
* `Use Display` - Turns on/off the display module.
|
||||
* `I2C Block` - The Pico I2C block that will be used. Set based on pins, refer to table on page.
|
||||
* `SDA Pin` - The GPIO pin used for the I2C SDA channel.
|
||||
* `SCL Pin` - The GPIO pin used for the I2C SCL channel.
|
||||
* `I2C Address` - The I2C address of your device, defaults to the very commonly used `0x3C`.
|
||||
* `I2C Speed` - Sets the speed of I2C communication. Common values are `100000` for standard, `400000` for fast and `800000` ludicrous speed.
|
||||
* `Flip Display` - Allows you to flip or mirror the display in a variety of ways.
|
||||
* `Invert Display` - Inverts the pixel colors, effectively giving you a negative image when enabled.
|
||||
* `Button Layout (Left)` - Changes the onscreen layout for the left side of the display and stick.
|
||||
* `Button Layout (Right)` - Changes the onscreen layout for the right side of the display and stick.
|
||||
* `Splash Mode` - Enables or disables a splash screen displaying when the unit is turned on.
|
||||
* `Splash Duration` - Sets the amount of time the splash screen displays for on boot.
|
||||
* `Display Saver Timeout` - Will cause the display to turn off after the specified number of minutes. Pressing any input will cause the display to turn back on.
|
||||
* `Choose File` - This will allow you to upload your own image to be used for the splash screen. It is recommend that you use a two color 128x64 image (or one that is sized appropriately for your display). Uploading any other type of image will result in a conversion and sizing of the image automatically. If the image is inverted upon upload, just check off the `Invert` box.
|
||||
|
||||
Check out our collection of great custom splash screens from the community [HERE](community-splash-screens.md)
|
||||
|
||||
## Add-Ons Configuration
|
||||
|
||||
This section is for custom add-ons that can be enabled to expand the functionality of GP2040-CE. Due to the large number of add-ons created by the community, they are located in a separate documentation page. Navigate to [Web Configurator - Add-ons](add-ons "GP2040-CE | Web Configurator - Add-ons") for more information.
|
||||
|
||||
## Data Backup and Restoration
|
||||
|
||||

|
||||
|
||||
* `Backup To File` - Allows you to select what to backup to a file (default is all selected).
|
||||
* `Restore From File` - Allows you to select what to restore from a file (default is all selected).
|
||||
|
||||
## DANGER ZONE
|
||||
|
||||

|
||||
|
||||
## Linux Setup
|
||||
|
||||
When you plug in your controller while holding <hotkey v-bind:buttons='["S2"]'></hotkey>, you should see it connect in the kernel logs if you run `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
|
||||
```
|
||||
|
||||
In the above example, **enp6s0f1u3** is the virtual Ethernet interface for your controller. If you don't see the first `rndis_host` line, make sure `CONFIG_USB_NET_RNDIS_HOST` is compiled in your kernel or as a module.
|
||||
|
||||
The web configurator is automatically running, you just need to be able to reach it. Some configurations automatically set up the route, so try <http://192.168.7.1> in your browser now. If it doesn't load, try configuring an IP for the interface manually via: `sudo ifconfig enp6s0f1u3 192.168.7.2`.
|
||||
|
||||
Whether or not you had to add an IP manually, you should end up with a route something like this:
|
||||
|
||||
```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 <---
|
||||
```
|
||||
|
||||
Then the configurator should be reachable in your browser.
|
||||
@@ -1,21 +0,0 @@
|
||||
# Wiring
|
||||
|
||||
These are the default pin mappings for each GP2040-CE supported microcontroller board.
|
||||
|
||||
## Raspberry Pi Pico
|
||||
|
||||
?> The Raspberry Pi Pico pinout can also be used on clone boards with the same form factor and pinout, such as the Pimironi Pico LiPo and the Waveshare RP2040-Plus.
|
||||
|
||||

|
||||
|
||||
## SparkFun Pro Micro - RP2040
|
||||
|
||||

|
||||
|
||||
## Waveshare RP2040-Zero
|
||||
|
||||

|
||||
|
||||
## Adafruit KB2040
|
||||
|
||||

|
||||
6
package-lock.json
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "GP2040-CE",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
32
site/.gitignore
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
.DS_Store
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
*.iml
|
||||
*.code-workspace
|
||||
.changelog
|
||||
.history
|
||||
|
||||
node_modules
|
||||
.yarn
|
||||
package-lock.json
|
||||
|
||||
.eslintcache
|
||||
|
||||
yarn-error.log
|
||||
build
|
||||
coverage
|
||||
.docusaurus
|
||||
.cache-loader
|
||||
types
|
||||
|
||||
packages/create-docusaurus/lib/
|
||||
packages/lqip-loader/lib/
|
||||
packages/docusaurus/lib/
|
||||
packages/docusaurus-*/lib/*
|
||||
packages/eslint-plugin/lib/
|
||||
packages/stylelint-copyright/lib/
|
||||
|
||||
CrowdinTranslations_*.zip
|
||||
|
||||
.netlify
|
||||
3
site/babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
|
||||
};
|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Analog
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Analog
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: BOOTSEL Button Configuration
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# BOOTSEL Button Configuration
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Buzzer Speaker
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Buzzer Speaker
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Dual Directional Input
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Dual Directional Input
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Extra Button Configuration
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Extra Button Configuration
|
||||
|
||||

|
||||
@@ -1,3 +1,10 @@
|
||||
---
|
||||
title: Focus Mode Configuration
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
# Focus Mode Configuration
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: I2C Analog ADS1219
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# I2C Analog ADS1219
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Input Reverse
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Input Reverse
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Joystick Selection Slider
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Joystick Selection Slider
|
||||
|
||||

|
||||
24
site/docs/add-ons/keyboard-host.mdx
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
title: Keyboard Host Configuration
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
import PinOption from './usb-host-add-on/_pin-options.mdx'
|
||||
import ExampleWiringDiagram from './usb-host-add-on/_example-wiring-diagram.mdx'
|
||||
|
||||
# Keyboard Host Configuration
|
||||
|
||||

|
||||
|
||||
<PinOption />
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
This add-on requires that you have something like the  or a board with a USB passthrough port on it already.
|
||||
|
||||
### Example Wiring Diagram
|
||||
|
||||
<ExampleWiringDiagram />
|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: On-board LED Configuration
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# On-board LED Configuration
|
||||
|
||||

|
||||
19
site/docs/add-ons/player-number.mdx
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Player Number
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Player Number
|
||||
|
||||
:::note
|
||||
|
||||
This add-on is applicable to X-Input mode only.
|
||||
|
||||
:::
|
||||
|
||||

|
||||
|
||||
* `Player Number` - Choose what player number this RP2040 based device will be representing.
|
||||
31
site/docs/add-ons/ps-passthrough.mdx
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: PS Passthrough
|
||||
tags:
|
||||
- PS4
|
||||
- PS5
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
import PinOption from './usb-host-add-on/_pin-options.mdx'
|
||||
import ExampleWiringDiagram from './usb-host-add-on/_example-wiring-diagram.mdx'
|
||||
|
||||
# PS Passthrough
|
||||
|
||||
Purpose: Enabling this add-on will allow you to use a licensed 3rd party device to authenticate off of.
|
||||
|
||||

|
||||
|
||||
<PinOption />
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
This add-on requires that you have something like the  or a board with a USB passthrough port on it already.
|
||||
|
||||
### Example Wiring Diagram
|
||||
|
||||
<ExampleWiringDiagram />
|
||||
|
||||
## Note
|
||||
|
||||
If you have passthrough enabled you can turn off the above `PS4 Mode` add-on as the two will not work together. Please also ensure that under the `Settings` section you have chosen PS4 mode and picked if you want the GP2040-CE unit to function as a controller or as a fightstick.
|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: PS4 Mode
|
||||
tags:
|
||||
- PS4
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# PS4 Mode
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: SNES Input
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# SNES Input
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: SOCD Selection Slider
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# SOCD Selection Slider
|
||||
|
||||

|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Tilt Input
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Tilt Input
|
||||
|
||||
Purpose: The Tilt Input add-on allows users to send analog inputs from the Left and Right analog sticks that are some percent of the maximum directional input (e.g. send 65% of a Down-Right input on the Right analog stick).
|
||||
@@ -24,11 +32,11 @@ Purpose: The Tilt Input add-on allows users to send analog inputs from the Left
|
||||
* `Tilt Right Analog Right Pin` - The GPIO pin used for the Right direction on the Right analog stick.
|
||||
* `Tilt SOCD Mode` - Choose the default SOCD Cleaning Mode (Neutral, Last Win, First Win).
|
||||
|
||||
Hardware Requirements:
|
||||
## Hardware Requirements:
|
||||
|
||||
- Additional buttons, switches, or joysticks, are recommended for this add-on as this add-on entirely prevents the primary Dpad from being set as the Left analog or Right analog stick.
|
||||
|
||||
Notes
|
||||
## Notes
|
||||
|
||||
- Because this add-on disables the Dpad from being set as Left analog and Right analog, using the hotkeys `Dpad Left Analog` and `Dpad Right Analog` deactivates the Dpad and using the `Dpad Digital` will reactivate the Dpad once more.
|
||||
- Not all Tilt analog pins are required to be set, but not setting the pins will prevent you from using that input without using the Web Configurator to remap the inputs.
|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Turbo
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Turbo
|
||||
|
||||

|
||||
@@ -0,0 +1,6 @@
|
||||

|
||||
|
||||
* `VCC` - Connects to 5V power (Example: VBUS on the Raspberry Pi Pico)
|
||||
* `D+` - Connects to the `D+` GPIO Pin above, set in the Web Configurator. (Example: GPIO0 on the Raspberry Pi Pico)
|
||||
* `D-` - Connects to the `D-` GPIO Pin above, automatically set based on D+. (Example: GPIO1 on the Raspberry Pi Pico)
|
||||
* `GND` - Connects to a ground pin, any `GND` pin will work. (Example: GND on the Raspberry Pi Pico)
|
||||
3
site/docs/add-ons/usb-host-add-on/_pin-options.mdx
Normal file
@@ -0,0 +1,3 @@
|
||||
* `D+` - The GPIO Pin used to carry Data Plus between the USB Host Port and RP2040
|
||||
* `D-` - The GPIO Pin used to carry Data Minus between the USB Host Port and RP2040. This cannot be set and will be automatically determined from `D+`.
|
||||
* `5V Power (optional)` - The GPIO Pin used to enable 5V power to the host port on the board. This is only applicable to a small number of boards (e.g. Adafruit RP2040 Feather USB Host) and most boards do not require this to be set.
|
||||
@@ -1,3 +1,11 @@
|
||||
---
|
||||
title: Wii Extensions
|
||||
# tags:
|
||||
# -
|
||||
pagination_next: null
|
||||
pagination_prev: null
|
||||
---
|
||||
|
||||
# Wii Extensions
|
||||
|
||||

|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
BIN
site/docs/assets/boards/Liatris.jpg
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
BIN
site/docs/assets/boards/ReflexEncoder.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 375 KiB After Width: | Height: | Size: 375 KiB |
|
Before Width: | Height: | Size: 348 KiB After Width: | Height: | Size: 348 KiB |
|
Before Width: | Height: | Size: 459 B After Width: | Height: | Size: 459 B |
|
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 501 B |
|
Before Width: | Height: | Size: 971 B After Width: | Height: | Size: 971 B |
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 406 B |
|
Before Width: | Height: | Size: 536 B After Width: | Height: | Size: 536 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 786 B After Width: | Height: | Size: 786 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 901 B After Width: | Height: | Size: 901 B |
|
Before Width: | Height: | Size: 770 B After Width: | Height: | Size: 770 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |