This ZMK shield repository provides support for the PandaKB Corne V3 Choc custom PCB with specialized configurations for the nice view display adapter and LED underglow functionality.
This repository contains a ZMK shield definition for the Corne (CRKBD) keyboard specifically tailored for the PandaKB Corne V3 Choc PCB kit. The shield includes optimized configurations for:
- Custom nice view adapter for display functionality
- LED underglow pin configurations for RGB lighting
- Low-profile Choc switch support for the V3 PCB variant
- PandaKB Corne V3 Choc PCB Kit: Available here
- Supports 42 keys with Kailh Choc V1 and V2 low-profile switches
- Hot-swappable switch sockets
- Supports 2 OLED displays or nice view displays
- Per-key RGB LEDs (SK6812MINI-E)
- Underglow RGB LEDs (WS2812B-5050)
- Power switch support for wireless controllers
- Battery socket compatibility
The shield is configured with the following pin mappings optimized for the PandaKB V3 PCB:
Matrix Pins:
- Rows: GPIO 4, 5, 6, 7
- Left columns: GPIO 21, 20, 19, 18, 15, 14
- Right columns: GPIO 14, 15, 18, 19, 20, 21 (reversed)
Display Configuration (nice!view SPI adapter):
- Protocol: SPI0
- SCK: GPIO 20 (P0.20)
- MOSI: GPIO 17 (P0.17)
- MISO: GPIO 25 (P0.25)
- CS: GPIO 8 (P0.08)
- I2C for displays is disabled in this adapter
- Supports only SPI nice!view displays via this overlay
RGB Underglow:
- Data pin: GPIO 6 (P0.06) configured for SPI3
- Chain length: 21 LEDs total (6 underglow + 15 per-key)
- Protocol: WS2812 via SPI
This shield includes a specialized nice view adapter configuration that:
- Enables compatibility with the nice!view display using hardware SPI
- Is optimized for low power consumption
- Sets the SPI pin mapping as follows:
- SCK: P0.20
- MOSI: P0.17
- MISO: P0.25 (often unused by display but defined on the bus)
- CS: P0.08
- Automatically disables I2C for display usage to prevent bus conflicts
- Is intended exclusively for SPI-connected nice!view displays (not I2C OLEDs)
crkbd/
├── boards/shields/
│ ├── crkbd/ # Main shield definition
│ │ ├── Kconfig.defconfig # Default configurations
│ │ ├── Kconfig.shield # Shield identification
│ │ ├── crkbd-layouts.dtsi # Key matrix layout definition
│ │ ├── crkbd.conf # Configuration overrides
│ │ ├── crkbd.dtsi # Main device tree source
│ │ ├── crkbd_left.conf # Left half advanced config
│ │ ├── crkbd_left.overlay # Left side pin mappings
│ │ ├── crkbd_right.conf # Right half advanced config
│ │ ├── crkbd_right.overlay # Right side pin mappings
│ │ └── crkbd.zmk.yml # Shield metadata
│ ├── nice_view_adapter/ # Custom adapter configuration
│ │ ├── boards/
│ │ │ └── nice_nano_v2.overlay # nice!view v2 pin mappings
│ │ ├── Kconfig.defconfig # Default configurations
│ │ ├── Kconfig.shield # Shield identification
│ │ ├── nice_view_adapter.conf # Configuration overrides
│ │ ├── nice_view_adapter.overlay # nice!view adapter pin mappings
│ │ └── nice_view_adapter.zmk.yml # Shield metadata
├── zephyr/
│ └── module.yml # Zephyr module definition
├── west.yml # West manifest
└── LICENSE # MIT License
Add this repository as a module to your zmk-config/config/west.yml:
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
- name: r0b2g1t
url-base: https://github.com/r0b2g1t
projects:
- name: zmk
remote: zmkfirmware
revision: main
import: app/west.yml
- name: crkbd-shield
remote: r0b2g1t
repo-path: crkbd
revision: main
self:
path: config- Create a
boards/shields/directory in your zmk-config - Copy the
crkbdfolder from this repository to yourconfig/boards/shields/directory - The shield will be available for building
Update your build.yaml to use the shield:
For OLED displays:
include:
- board: nice_nano_v2
shield: crkbd_left
- board: nice_nano_v2
shield: crkbd_rightFor nice view displays:
include:
- board: nice_nano_v2
shield: crkbd_left nice_view_adapter nice_view
- board: nice_nano_v2
shield: crkbd_right nice_view_adapter nice_viewCreate crkbd.conf in your config directory to enable features:
# Enable RGB underglow
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_WS2812_STRIP=y
# Enable display
CONFIG_ZMK_DISPLAY=y
# For nice view (if using)
CONFIG_ZMK_DISPLAY_STATUS_SCREEN_CUSTOM=y
# Battery optimizations for wireless
CONFIG_ZMK_SLEEP=y
CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=900000
- Dual display compatibility: Works with both traditional OLED and nice view displays
- Custom nice view adapter: Optimized power consumption and pin mapping
- Status information: Battery level, layer indication, and connectivity status
- Per-key RGB: Individual key illumination with SK6812MINI-E LEDs
- Underglow RGB: 6 WS2812B underglow LEDs for ambient lighting
- Multiple effects: Support for various RGB patterns and animations
- Battery-aware: Automatic brightness reduction when battery is low
- Power management: Optimized for battery life with wireless controllers
- Deep sleep support: Automatic sleep modes to conserve power
- Battery monitoring: Real-time battery level display and alerts
- Fork this repository or add it as a module to your zmk-config
- GitHub Actions will automatically build firmware on commits
- Download the
.uf2files from the Actions artifacts - Flash to your nice nano controllers
Follow the standard ZMK local build process:
west build -b nice_nano_v2 -- -DSHIELD="crkbd_left"
west build -b nice_nano_v2 -- -DSHIELD="crkbd_right"- Ensure proper pin connections match the shield configuration
- For nice view, verify the adapter shield is included in build
- Check I2C pull-up resistors are properly configured
- Verify underglow pin (P0.06) is correctly wired
- Ensure LED chain connections are solid and in correct order
- Check power supply can handle LED current draw
- Use the pin mapping reference to verify row/column connections
- Test continuity with multimeter if keys don't register
- Consider pin remapping if hardware damage occurs
This shield definition is based on the standard Corne configuration but optimized for the PandaKB V3 PCB variant. Contributions for improvements or additional features are welcome.
This project is licensed under the MIT License - see the LICENSE file for details.
- Original Corne design by foostan
- PandaKB for the V3 PCB improvements and kit
- ZMK firmware community for the excellent documentation and support
- nice view display innovation by nice keyboards
For additional support and community discussion, visit the ZMK Discord or r/ErgoMechKeyboards.