

SandyLPD Base
A split keyboard based on SandyLP
- Size
- 431.4 × 264.6 mm
- Copper layers
- 2
- Thickness
- 1.2 mm
- Parts
- 391
- Nets
- 168
- Pads
- 1,136
- Tracks, vias
- 936, 117
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 10 Dec 2024
- Updated
- 10 Jan 2025
Overview
SandyLPD Base is an open-source printed circuit board by jpskenn, from the jpskenn/SandyLP-Duo repository on GitHub, published under the MIT licence. It is a 2-layer board of 431.4 × 264.6 mm with 391 parts on 168 nets, routed with 936 tracks and 117 vias.
It is built around the RP2040, W25Q128JVPIQ and WS2812B-2020, with the PRTR5V0U2X among its other parts. Its parts include 55 diodes, 30 capacitors, 22 resistors, 10 connectors and 6 ICs. It belongs with the keyboards and input boards and the RP2040 boards of this library.
Main components
4RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)W25Q128JVPIQ
WSON-8-EP(5x6)-40℃~+85℃ 100,000 cycles 10uA 120ms@(32KB) 128Mbit 133MHz 2.7V~3.6V 20 Years Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection、Power lock protection SPI WSON-8-EP(5x6) NOR FLASH ROHSWinbond ElecNOR FLASHWS2812B-2020
SMD,2.2x2mm0.6mA 0.84mm 120us 160mcd 200mcd 2kHz 2mm 2mm 300ns 470.4nm 515.6nm 520mcd 5V 622.5nm 800Kbit/s Built-in power-on reset circuit、Built-in power-on reset circuit、Integrated intelligent reverse connection protection function Top-mount SMD,2.2x2mm RGB LEDs(Built-in IC) ROHSWorldsemiRGB LEDs(Built-In IC)PRTR5V0U2X
SOT-143-55℃~+125℃ 0.3pF、0.8pF 100W 10V、15V 5V 6.5V 6A 80nA ESD IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 Three channels Unidirectional SOT-143 ESD and Surge Protection (TVS/ESD) ROHSTECH PUBLICESD And Surge Protection (TVS/ESD)
README
README.mdSandyLP Duo(サンディ エルピー デュオ)
[Image blocked: SandyLP Duo keyboard]
"SandyLP Duo" is a Split 40% keyboard with symmetrical row staggered layout and key height optimization.
Layered PCB will make height differences for each key. This covers the lack of optimization to physical key layout in two dimensions that only adjust x-y plane.
SandyLP Duoは、スイッチの配置を立体的にして高さ方向への最適化を加えた、左右対称ロースタッガード配列の分割型40%キーボードです。
平面上のキーレイアウトだけでは最適化しきれない部分を、キーの位置に応じてスイッチを配置する高さを変えることで補っています。
開発の元となったSandyLPの機能や特徴を踏襲しつつ、肩や腕を開いたより自然なポジションでの打鍵と、テンティングによる手首や腕の負荷軽減を目指しています。
SandyLPのコンセプトをそのまま引きついだバリエーションモデルとして、分割型の特徴である左右ふたつのペアを思わせる言葉の「Duo」を後ろにつけ、「SandyLP Duo」としました。
元の元であるSandyから説明すると、スイッチを立体的(3D)に配置したキーボードの、ロープロファイル版、分割型バリエーションモデルということになります。
特徴
分割型
見てのとおり、右手用と左手用のふたつに分かれた、分割型キーボードです。 右手用または左手用のどちらかをPCやMacに接続し、もう一方へUSB Type-Cケーブルで接続します。
右手用と左手用を好みの場所に配置し、好みのポジションで打鍵できます。 前作の一体型キーボードSandyLP(中央部に2u分の間隔)に比べ、肩や腕を大きく開いたポジションをとることが可能で、肩や腕の負荷軽減が見込まれます。
また、ゴム足等を使ったテンティング(キーボードの内側を持ち上げて、親指側と小指側の高さを変える)をおこなうことで、手首や腕の負荷軽減が見込まれます。
左右対称のキーレイアウト
Jonesと同様の、2行目と3行目にずれのない、左右対称なシンメトリカル ロースタッガードのレイアウトです。

一般的なロースタッガードなレイアウトとの共通性を残しつつ、左右対称で打鍵しやすくなるよう、SemiErgo Layoutに準ずるキーマッピングで使用することを念頭に設計しています。
Z行の左右端にシフトキーを用意していないので、スペースキーを「Space and Shift」として使うと便利です。
このレイアウトは、市販の各種キーキャップセットのうち「Base Kit」と呼ばれる基本的なキットですべてを埋めることができます。また、104キーの英語キーキャップセットでも十分実用が可能です。
〓Base Kitと104の検証

詳しくは、Keyboard Layout Editor: SandyLP Duo [blocked]を参照してください。
キースイッチを立体的に配置
前機種のSandyと同じく、キースイッチを3段階の高さで立体的に配置しています。
平面上ではキーを配置できる範囲が限られるため、一部のキーはどうしても指が届きにくくなってしまいます。例えば、Jonesでは左右対称のレイアウトを採用することで右手小指のPやBack Space、Enterなどは打鍵しやすくなりましたが、右手人差し指のYは少し遠く感じられました。
このような箇所について、キーの配置を高くすることで打鍵しやすさを向上させています。

キーの高さはLow(基準高=0mm), Middle(3.6mm), High(8.7mm)の3段階で、以下のように配置されます。

キーボード自体が低い(薄い)
ロープロファイルのChoc V2スイッチを採用することでキーボード自体が低くなりました。
前機種のSandyからは7.2mm(※1)低くなり、パームレストを使わずとも、手首をあまり反らさないポジションで打鍵できます。
※1 ボトムプレートから1段目のスイッチ軸の天面までの高さを比較。なお、Sandyは理論上あと0.8mm低くすることが可能です。

RP2040を採用した構成により、多機能なファームウェアを使用可能
RP2040を採用した構成により、キーボード向けのファームウェアを格納するには十分すぎるほどのフラッシュ容量を得ることができました。
エンコーダーやオーディオ、その他各種機能の同時有効化や、多数のレイヤーを使用するなど、多機能なファームウェアを使用可能です。
Remap、Vialによるキー割り当ての変更
初期書き込み済みのファームウェアはRemapに対応しており、プログラミング等の知識がなくても、キーマッピングやロータリーエンコーダへの割り当てを、ブラウザ等を使って簡単に変更できます。
また、Vial対応のファームウェアに書き換えて使用することもできます。
オプション機能
- ロータリーエンコーダ
- インジケータLED
- オーディオ
ビルドガイド
SNSタグ
ギャラリー
参考事例
開発経緯
Parts
391| Qty | Value | Footprint | References |
|---|---|---|---|
| 36 | Conn_01x01 | locallib:TestPoint_THTPad_D2.0mm_Drill1.0mm | EXT_MC2, EXT_MC3, EXT_MC4, EXT_MR0, EXT_MR2, EXT_MR4, EXT_MR5, EXT_MR6, EXT_TC3, EXT_TC4, EXT_TR0, EXT_TR1, EXT_TR4, T_C0/C6, T_L_C0, T_L_C1 +20 |
| 36 | D | locallib:D_SOD-123_Emphasized_Direction_Line_Reference_on_bottom | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +20 |
| 28 | MountingHole | locallib:MountingHole_M2_Through-hole_tap_THC-0.8-x-2 | H_btm_1, H_btm_2, H_btm_3, H_btm_4, H_btm_5, H_btm_6, H_mid_1, H_mid_10, H_mid_11, H_mid_12, H_mid_13, H_mid_14, H_mid_15, H_mid_16, H_mid_17, H_mid_18 +12 |
| 20 | 100n | Capacitor_SMD:C_0402_1005Metric | C3, C4, C5, C10, C11, C12, C19, C20, C21, C24, C28, C29, C30, C31, C32, C33 +4 |
| 18 | MountingHole | locallib:MountingHole_1.8-2.2mm_M2_Pad_minimal | H_top_1, H_top_3, H1, H1, H2, H2, H3, H3, H4, H4, H5, H5, H6, H6, H7, H8 +2 |
| 17 | D | locallib:D_SOD-123_Emphasized_Direction_Line | D1, D1, D2, D2, D3, D3, D3, D4, D4, D4, D5, D6, D7, D11, D12, D13 +1 |
| 8 | 1k | Resistor_SMD:R_0402_1005Metric | R1, R5, R6, R7, R9, R14, R21, R22 |
| 6 | 2.2uF | Capacitor_SMD:C_0402_1005Metric | C13, C14, C15, C34, C35, C36 |
| 6 | MountingHole | locallib:MountingHole_2.2mm_M2_Pad_minimal | H_top_2, H_top_6, H1, H2, H3, H4 |
| 6 | SW_Push | locallib:Kailh_socket_ChocV2 | SW_'1, SW_]1, SW_H1, SW_T1, SW_U1, SW_Y1 |
| 6 | WS2812B-2020 | LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm | L1, L2, L3, L4, L5, L6 |
| 5 | SW_Push | locallib:Kailh_socket_ChocV2_small_#2pad | SW_;1, SW_[1, SW_G1, SW_R1, SW_R4CNT_L1 |
| 4 | 10k | Resistor_SMD:R_0402_1005Metric | R4, R8, R19, R20 |
| 4 | 10u | Capacitor_SMD:C_0805_2012Metric | C1, C2, C17, C18 |
| 4 | 27 | Resistor_SMD:R_0402_1005Metric | R2, R3, R17, R18 |
| 4 | 5.1k | Resistor_SMD:R_0402_1005Metric | R10, R11, R13, R15 |
| 4 | USB_C_Receptacle_USB2.0 | locallib:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J5, J6, J7, J8 |
| 3 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1, JP2, JP3 |
| 2 | 12MHz | Crystal:Resonator_SMD_Murata_CSTxExxV-3Pin_3.0x1.1mm | Y1, Y2 |
| 2 | 5.6k | Resistor_SMD:R_0402_1005Metric | R12, R16 |
| 2 | BOOT_ALT | Button_Switch_SMD:SW_SPST_PTS810 | SW1, SW4 |
| 2 | Conn_01x03 | locallib:PinHeader_1x03_P2.54mm_Vertical_All_circle | J2, J11 |
| 2 | Conn_01x10_Pin | Connector_PinHeader_1.00mm:PinHeader_1x10_P1.00mm_Vertical | J4, J10 |
| 2 | Conn_02x02_Odd_Even | locallib:PinHeader_2x02_P2.00mm_Vertical_2pair | J1, J9 |
| 2 | Fuse | Fuse:Fuse_0603_1608Metric | F1, F2 |
| 2 | LED_GREEN | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | STLED1, STLED2 |
| 2 | NCP1117-3.3_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1, U2 |
| 2 | PRTR5V0U2X | Package_TO_SOT_SMD:SOT-143 | D36, D40 |
| 2 | RESET_ALT | Button_Switch_SMD:SW_SPST_PTS810 | SW2, SW5 |
| 2 | RP2040 | locallib:RP2040-QFN-56 | U3, U5 |
| 2 | SW_DIP_x04 | Button_Switch_SMD:SW_DIP_SPSTx04_Slide_Copal_CHS-04B_W7.62mm_P1.27mm | SW3, SW6 |
| 2 | SW_Push | locallib:Kailh_socket_ChocV2_narrow_#2pad | SW_R4CNT_C1, SW_R4CNT_R1 |
| 2 | Schottky diode | Diode_SMD:D_SOD-123 | SD1, SD2 |
| 2 | Speaker | Buzzer_Beeper:Buzzer_Murata_PKMCS0909E | LS1, LS4 |
| 2 | W25Q128JVPIQ | Package_SON:WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4.3mm | U4, U6 |
| 1 | - | locallib:Kailh_socket_ChocV2 | SW_13 |
| 1 | 60_Outline | locallib:SandyLP_outline_Mid | Cutout1 |
| 1 | 60_Outline | locallib:SandyLP_outline_Mid_Isolated_Area_gentle_corner | Cutout1 |
| 1 | <, | locallib:Kailh_socket_ChocV2 | SW_22 |
| 1 | >. | locallib:Kailh_socket_ChocV2 | SW_23 |
| 1 | ?/ | locallib:Kailh_socket_ChocV2 | SW_24 |
| 1 | A | locallib:Kailh_socket_ChocV2 | SW_6 |
| 1 | B | locallib:Kailh_socket_ChocV2 | SW_19 |
| 1 | C | locallib:Kailh_socket_ChocV2 | SW_17 |
| 1 | D | locallib:Kailh_socket_ChocV2 | SW_8 |
| 1 | E | locallib:Kailh_socket_ChocV2 | SW_2 |
| 1 | ENT | locallib:Kailh_socket_ChocV2 | SW_14 |
| 1 | F | locallib:Kailh_socket_ChocV2 | SW_9 |
| 1 | I | locallib:Kailh_socket_ChocV2 | SW_3 |
| 1 | J | locallib:Kailh_socket_ChocV2 | SW_10 |
| 1 | K | locallib:Kailh_socket_ChocV2 | SW_11 |
| 1 | L | locallib:Kailh_socket_ChocV2 | SW_12 |
| 1 | LALT | locallib:Kailh_socket_ChocV2 | SW_27 |
| 1 | LCTL | locallib:Kailh_socket_ChocV2 | SW_5 |
| 1 | LOGO | locallib:SandyLP_QR_360dpi | G*** |
| 1 | LSPC | locallib:Kailh_socket_ChocV2 | SW_28 |
| 1 | LWIN | locallib:Kailh_socket_ChocV2 | SW_LWIN1 |
| 1 | L_CNT | locallib:Kailh_socket_ChocV2 | SW_29 |
| 1 | L_RE | locallib:ChocV2_AND_RotaryEncoder_Alps_EC11K-Switch_Vertical_H20mm_NPTH_MP_minimal | SW_25 |
| 1 | Logo_Base | locallib:SandyLP_logo_LP40_w60 | LOGO1 |
| 1 | M | locallib:Kailh_socket_ChocV2 | SW_21 |
| 1 | N | locallib:Kailh_socket_ChocV2 | SW_20 |
| 1 | O | locallib:Kailh_socket_ChocV2 | SW_4 |
| 1 | RALT | locallib:Kailh_socket_ChocV2 | SW_32 |
| 1 | RSPC | locallib:Kailh_socket_ChocV2 | SW_31 |
| 1 | RWIN | locallib:Kailh_socket_ChocV2 | SW_33 |
| 1 | R_CNT | locallib:Kailh_socket_ChocV2 | SW_30 |
| 1 | R_RE | locallib:ChocV2_AND_RotaryEncoder_Alps_EC11K-Switch_Vertical_H20mm_NPTH_MP_minimal | SW_26 |
| 1 | S | locallib:Kailh_socket_ChocV2 | SW_7 |
| 1 | SW_Push | locallib:Kailh_socket_ChocV2_for_Reverse | SW_Q1 |
| 1 | SW_Push | locallib:Kailh_socket_ChocV2_small_#2pad_for_Reverse_no_hole | SW_P1 |
| 1 | SW_Push | locallib:Kailh_socket_ChocV2_for_Reverse_no_hole | SW_BS1 |
| 1 | SW_Push | locallib:Kailh_socket_ChocV2_for_Reverse_narrow_#2pad | SW_TAB1 |
| 1 | V | locallib:Kailh_socket_ChocV2 | SW_18 |
| 1 | W | locallib:Kailh_socket_ChocV2 | SW_1 |
| 1 | X | locallib:Kailh_socket_ChocV2 | SW_16 |
| 1 | Z | locallib:Kailh_socket_ChocV2 | SW_15 |
The 291 most common of 391 parts.
More from jpskenn/SandyLP-Duo
1- 2 layers139.6 × 212.8 mm

Similar boards
- 2 layers27.3 × 13.2 mm

NovaMkII
SpacehuhnTech/USB-Nova-MkII-PCB
USB Nova is a cute little USB “drive” that acts as a keyboard, much like the USB Rubber Ducky, WiFi Duck, and other BadUSBs.
36 parts7CERN-OHL-P-2.0 - 2 layers307.3 × 148.3 mm

- 2 layers275.5 × 80.3 mm

- 2 layers226.5 × 75 mm

Gridiron
dededecline/Gridiron
Gridiron keyboard designed by me. All files for production are inside this repository.
159 parts13GPL-3.0 - 2 layers284.7 × 94.2 mm

- 6 layers100 × 60 mm

Aether
nasheed-x/aether
Aether is a versatile flight computer for testing flight hardware and software, focusing on sensor fusion to monitor rocket states and interface with on-board systems.
180 parts10 - 4 layers55 × 55 mm

- 4 layers80.6 × 54 mm

Frank core2
rh1tech/frank-lab
FRANK Board Laboratory (work-in-progress board prototopyes)
195 parts4GPL-3.0
Questions
How big is the SandyLPD Base PCB?
It measures 431.4 × 264.6 mm and has 2 copper layers, 1.2 mm thick.
What parts does the SandyLPD Base use?
391 parts, built around the RP2040, W25Q128JVPIQ, WS2812B-2020 and PRTR5V0U2X. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the SandyLPD Base KiCad files?
From the jpskenn/SandyLP-Duo repository on GitHub, at the commit this page was made from: the board is PCB/SandyLPD_Base/SandyLPD_Base.kicad_pcb and its schematic PCB/SandyLPD_Base/SandyLPD_Base.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SandyLPD Base design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).