Skip to the content
2 layers431.4 × 264.6 mmSandyLPD Base, the printed circuit board in 3D

SandyLPD Base

jpskenn/SandyLP-Duo

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

4

README

README.md

SandyLP 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タグ

#SandyLP_Duo

ギャラリー

参考事例

開発経緯

Parts

391
QtyValueFootprintReferences
36Conn_01x01locallib:TestPoint_THTPad_D2.0mm_Drill1.0mmEXT_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
36Dlocallib:D_SOD-123_Emphasized_Direction_Line_Reference_on_bottomD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +20
28MountingHolelocallib:MountingHole_M2_Through-hole_tap_THC-0.8-x-2H_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
20100nCapacitor_SMD:C_0402_1005MetricC3, C4, C5, C10, C11, C12, C19, C20, C21, C24, C28, C29, C30, C31, C32, C33 +4
18MountingHolelocallib:MountingHole_1.8-2.2mm_M2_Pad_minimalH_top_1, H_top_3, H1, H1, H2, H2, H3, H3, H4, H4, H5, H5, H6, H6, H7, H8 +2
17Dlocallib:D_SOD-123_Emphasized_Direction_LineD1, D1, D2, D2, D3, D3, D3, D4, D4, D4, D5, D6, D7, D11, D12, D13 +1
81kResistor_SMD:R_0402_1005MetricR1, R5, R6, R7, R9, R14, R21, R22
62.2uFCapacitor_SMD:C_0402_1005MetricC13, C14, C15, C34, C35, C36
6MountingHolelocallib:MountingHole_2.2mm_M2_Pad_minimalH_top_2, H_top_6, H1, H2, H3, H4
6SW_Pushlocallib:Kailh_socket_ChocV2SW_'1, SW_]1, SW_H1, SW_T1, SW_U1, SW_Y1
6WS2812B-2020LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mmL1, L2, L3, L4, L5, L6
5SW_Pushlocallib:Kailh_socket_ChocV2_small_#2padSW_;1, SW_[1, SW_G1, SW_R1, SW_R4CNT_L1
410kResistor_SMD:R_0402_1005MetricR4, R8, R19, R20
410uCapacitor_SMD:C_0805_2012MetricC1, C2, C17, C18
427Resistor_SMD:R_0402_1005MetricR2, R3, R17, R18
45.1kResistor_SMD:R_0402_1005MetricR10, R11, R13, R15
4USB_C_Receptacle_USB2.0locallib:USB_C_Receptacle_HRO_TYPE-C-31-M-12J5, J6, J7, J8
3SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1, JP2, JP3
212MHzCrystal:Resonator_SMD_Murata_CSTxExxV-3Pin_3.0x1.1mmY1, Y2
25.6kResistor_SMD:R_0402_1005MetricR12, R16
2BOOT_ALTButton_Switch_SMD:SW_SPST_PTS810SW1, SW4
2Conn_01x03locallib:PinHeader_1x03_P2.54mm_Vertical_All_circleJ2, J11
2Conn_01x10_PinConnector_PinHeader_1.00mm:PinHeader_1x10_P1.00mm_VerticalJ4, J10
2Conn_02x02_Odd_Evenlocallib:PinHeader_2x02_P2.00mm_Vertical_2pairJ1, J9
2FuseFuse:Fuse_0603_1608MetricF1, F2
2LED_GREENLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderSTLED1, STLED2
2NCP1117-3.3_SOT223Package_TO_SOT_SMD:SOT-223-3_TabPin2U1, U2
2PRTR5V0U2XPackage_TO_SOT_SMD:SOT-143D36, D40
2RESET_ALTButton_Switch_SMD:SW_SPST_PTS810SW2, SW5
2RP2040locallib:RP2040-QFN-56U3, U5
2SW_DIP_x04Button_Switch_SMD:SW_DIP_SPSTx04_Slide_Copal_CHS-04B_W7.62mm_P1.27mmSW3, SW6
2SW_Pushlocallib:Kailh_socket_ChocV2_narrow_#2padSW_R4CNT_C1, SW_R4CNT_R1
2Schottky diodeDiode_SMD:D_SOD-123SD1, SD2
2SpeakerBuzzer_Beeper:Buzzer_Murata_PKMCS0909ELS1, LS4
2W25Q128JVPIQPackage_SON:WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4.3mmU4, U6
1-locallib:Kailh_socket_ChocV2SW_13
160_Outlinelocallib:SandyLP_outline_MidCutout1
160_Outlinelocallib:SandyLP_outline_Mid_Isolated_Area_gentle_cornerCutout1
1<,locallib:Kailh_socket_ChocV2SW_22
1>.locallib:Kailh_socket_ChocV2SW_23
1?/locallib:Kailh_socket_ChocV2SW_24
1Alocallib:Kailh_socket_ChocV2SW_6
1Blocallib:Kailh_socket_ChocV2SW_19
1Clocallib:Kailh_socket_ChocV2SW_17
1Dlocallib:Kailh_socket_ChocV2SW_8
1Elocallib:Kailh_socket_ChocV2SW_2
1ENTlocallib:Kailh_socket_ChocV2SW_14
1Flocallib:Kailh_socket_ChocV2SW_9
1Ilocallib:Kailh_socket_ChocV2SW_3
1Jlocallib:Kailh_socket_ChocV2SW_10
1Klocallib:Kailh_socket_ChocV2SW_11
1Llocallib:Kailh_socket_ChocV2SW_12
1LALTlocallib:Kailh_socket_ChocV2SW_27
1LCTLlocallib:Kailh_socket_ChocV2SW_5
1LOGOlocallib:SandyLP_QR_360dpiG***
1LSPClocallib:Kailh_socket_ChocV2SW_28
1LWINlocallib:Kailh_socket_ChocV2SW_LWIN1
1L_CNTlocallib:Kailh_socket_ChocV2SW_29
1L_RElocallib:ChocV2_AND_RotaryEncoder_Alps_EC11K-Switch_Vertical_H20mm_NPTH_MP_minimalSW_25
1Logo_Baselocallib:SandyLP_logo_LP40_w60LOGO1
1Mlocallib:Kailh_socket_ChocV2SW_21
1Nlocallib:Kailh_socket_ChocV2SW_20
1Olocallib:Kailh_socket_ChocV2SW_4
1RALTlocallib:Kailh_socket_ChocV2SW_32
1RSPClocallib:Kailh_socket_ChocV2SW_31
1RWINlocallib:Kailh_socket_ChocV2SW_33
1R_CNTlocallib:Kailh_socket_ChocV2SW_30
1R_RElocallib:ChocV2_AND_RotaryEncoder_Alps_EC11K-Switch_Vertical_H20mm_NPTH_MP_minimalSW_26
1Slocallib:Kailh_socket_ChocV2SW_7
1SW_Pushlocallib:Kailh_socket_ChocV2_for_ReverseSW_Q1
1SW_Pushlocallib:Kailh_socket_ChocV2_small_#2pad_for_Reverse_no_holeSW_P1
1SW_Pushlocallib:Kailh_socket_ChocV2_for_Reverse_no_holeSW_BS1
1SW_Pushlocallib:Kailh_socket_ChocV2_for_Reverse_narrow_#2padSW_TAB1
1Vlocallib:Kailh_socket_ChocV2SW_18
1Wlocallib:Kailh_socket_ChocV2SW_1
1Xlocallib:Kailh_socket_ChocV2SW_16
1Zlocallib:Kailh_socket_ChocV2SW_15

The 291 most common of 391 parts.

More from jpskenn/SandyLP-Duo

1
  • 2 layers139.6 × 212.8 mmSandyLPD Plate BottomA, the printed circuit board in 3D

    SandyLPD Plate BottomA

    jpskenn/SandyLP-Duo

    A split keyboard based on SandyLP

    147 partsMIT

Similar boards

  • 2 layers27.3 × 13.2 mmNovaMkII, the printed circuit board in 3D

    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 mmMask-2.0.0, the printed circuit board in 3D

    Mask-2.0.0

    marcoster/mask

    MArco's Split Keyboard

    161 parts44MPL-2.0
  • 2 layers275.5 × 80.3 mmSandyLP Base, the printed circuit board in 3D

    SandyLP Base

    jpskenn/SandyLP

    Low profile version of Sandy keyboard.

    229 partsMIT
  • 2 layers226.5 × 75 mmGridiron, the printed circuit board in 3D

    Gridiron

    dededecline/Gridiron

    Gridiron keyboard designed by me. All files for production are inside this repository.

    159 parts13GPL-3.0
  • 6 layers100 × 60 mmAether, the printed circuit board in 3D

    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 mmFrank core2 proto, the printed circuit board in 3D

    Frank core2 proto

    rh1tech/frank

    RP2350 Based Hardware Emulation Platform

    133 parts66GPL-3.0
  • 4 layers80.6 × 54 mmFrank core2, the printed circuit board in 3D

    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).