

Sandy 3in1
a Keyboard with key height optimization
- Size
- 302.4 × 230.7 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 288
- Nets
- 149
- Pads
- 1,178
- Tracks, vias
- 1,806, 709
- Pours
- 35
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 31 Dec 2022
- Updated
- 22 Sep 2024
Overview
Sandy 3in1 is an open-source printed circuit board by jpskenn, from the jpskenn/Sandy repository on GitHub, published under the MIT licence. It is a 2-layer board of 302.4 × 230.7 mm with 288 parts on 149 nets, routed with 1,806 tracks and 709 vias.
It is built around the ATMEGA32U4-MU, 24LC64(LX) and SK6812MINI-E, with the JS5208 and PRTR5V0U2X among its other parts. Its parts include 80 diodes, 16 connectors, 8 resistors, 7 capacitors and 2 ICs. It belongs with the keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.
Main components
5ATMEGA32U4-MU
VQFN-44-EP(7x7)-40℃~+85℃ 10bit 16MHz 1KB 2.5KB 2.7V~5.5V 26 32KB 8 Bit AVR Built-in FLASH VQFN-44-EP(7x7) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)24LC64(LX)
SOP-8-40℃~+85℃ 1,000,000 cycles 1.8V~5.5V 100 Years 1MHz 5ms 64Kbit Hardware write protection function、Noise suppression function I2C SOP-8 EEPROM ROHSlingxingicEEPROMSK6812MINI-E
SMD-40℃~+85℃ 0.6mA 1.78mm 120mcd~240mcd 120° 160mcd~320mcd 1kHz 2.8mm 2000V 3.2mm 3.7V~5.5V 460nm~470nm 515nm~525nm 620nm~625nm 800Kbit/s 815mcd~1275mcd Semi-transparent lens SMD RGB LEDs(Built-in IC) ROHSOPSCO OptoelectronicsRGB LEDs(Built-In IC)JS5208
SMDSMD Pushbutton Switches ROHSE-SwitchPushbutton SwitchesPRTR5V0U2X
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.mdSandy(サンディ)

Sandy is a keyboard with key height optimization.
Layered PCB will make height differences for each key. This covers the lack of optimization to physical key layout that only adjust x-y direction in a plane.
Sandyは、スイッチの配置を立体的にして高さ方向への最適化を加えた、左右対称レイアウトの60%キーボードです。
平面上のキーレイアウトだけでは最適化しきれない部分を、キーの位置に応じてスイッチを配置する高さを変えることで補っています。
名前の由来は、立体的、つまり3Dという意味を込めて…
3D → スリーディー → さんディー → サンディ → Sandyという言葉遊びで、Sandy(サンディ)に決まりました。
お知らせ
2023-11-04
キー割り当て書き換えツールRemapがQMKファームウェアのバージョン 0.22.2以降に対応したことに伴い、新しくビルドしたSandyのファームウェアを公開しました。
参考:Remap supports QMK Firmware 0.22.2 or higher
今すぐファームウェアを更新する必要はありませんが、ロータリーエンコーダへのキー割り当てを変更したい場合は、ファームウェアを更新するとよいでしょう。
Remapによる旧バージョンのサポート終了後は、ファームウェアを更新してください。
詳しくは、ビルドガイドの「Sandy関連ファイル」等をご覧ください。
特徴
-
左右対称のキーレイアウト
Jonesと同様の、2行目と3行目にずれのない、左右対称な、シンメトリカル ロースタッガードのレイアウトです。
-
キースイッチを立体的に配置
3段階の高さで、キースイッチを立体的に配置しています。
平面上のキー配置だけでは最適化しきれない部分を、キーの位置に応じて高さを変え、立体的に配置することで補っています。
Jonesに比べて、ホームポジションから遠いキーへの打鍵しやすさが向上しています。 -
60%ケースと組み合わせられる
GH60型ケース互換のネジ穴を用意してあるので、市販のケースと組み合わせて使用できます。
※詳しくはビルドガイドを参照 -
RemapやVIAによるキー割り当て変更
プログラミング等の知識がなくても、ブラウザ上で簡単にキー割り当てを変更することができます。 -
外部EEPROM搭載
Remapでたくさんのレイヤーを使用できます。 -
オプション機能
以下のオプション機能を使用できます。- ロータリーエンコーダ
- インジケータLED
- アンダーグローLED
レイアウト
バリエーション
キーのバリエーションを含むレイアウトは以下の通りです。
Ctrl(左)とEnter(右)にはキーサイズのバリエーションがあり、最下行の中央にはロータリーエンコーダを配置できます。

Keyboard Layout Editor: Sandy (DN0030)
キーの高さ
キーの高さはLow(0mm), Middle(3.6mm), High(8.6mm)の3段階で、以下のように配置されます。

推奨キーマッピング
このレイアウトは、左右の手の運指を同じにするため、SemiErgo Layoutに準ずるキーマッピングで使用することを念頭に設計されています。
つまり、一般的なロースタッガードレイアウトから、アルファ部の左手側Z行を左へ1キー、数字行の右手側を右側へ1キーずらしたものが、推奨キーマッピングとなります。
以下にSemiErgoを適用した推奨キーマッピングの例を示します。
枠で囲った部分が、一般的なロースタッガードからの変更箇所です。
💡ヒント:このキーマッピング例ではスペースキーをSandS(Space & Shift)にしているので、左右端のシフトキーを取り除いています。
ビルドガイド
-
最新版
-
試作版
SNSタグ
ギャラリー

v.0.1, Cherryプロファイルキーキャップ使用

v.0.1, KATプロファイルキーキャップ使用

キーの段差(Cherryプロファイル)

キーの段差(KATプロファイル)

キーの段差(横)
残る課題
Sandyは複数基板を重ねるという手法で製作しているため、その技術的な制限や、製作工程を複雑にしすぎない配慮により、全てのスイッチをなめらかな高さ変化で配置できていません。
そのため、高さ方向へ最適化しきれていない部分が残っています。
参考事例
-
Genesis2.5(販売ページ
行ごとに高さと傾きを変えることができる自作キーボードキット。 -
Thumbs Up!
カラムスタガをベースに親指や中央のキーを高くした設計の自作キーボードキット。 -
Kinesis Advantage series
”エルゴノミクス”、”3Dキーボード”と言えばこれが思い浮かぶのはこれ。凹形状にキーが配置されている。 -
Microsoft Sculpt
ほんのり放射状に並んだキーと、中央部が高くなった形状。 -
Dactyl
3Dプリンタで作る、スイッチを3D配置したキーボード。 -
"3D" キーキャップ
キーボードはそのままに、キーごとに高さを変えた3D形状のキーキャップ。MXスイッチ用。 -
Gravity Keycaps
Choc用の3D形状キーキャップ。
開発経緯
元々の計画
当初(2021年1月ごろ)は、Chocスイッチを使用するキーボード、Noraの打鍵しやすさ向上を目的に、スイッチの配置を立体的に改修する計画でした。
Choc用キーキャップには、行ごとに高さの異なるプロファイルのものが存在しません。すべてのキーが同じ形状になっているため、1行目の数字行や、ホームポジションから遠いキーへ指が届きにくくなります。
その状況を改善するための改修計画でしたが、あまりモチベーションも上がらず、手をつけずに放置していました。
Sandy計画の始動
2022年12月の末ごろ、SMKJのアドベントカレンダーを久しぶりに読み返しながら、様々なアイデアや取り組みについて思いをめぐらせていました。 そのとき、ふとした思いつきでJonesのキーキャップを部分的に背の高いものに入れ替えたところ、思いのほか打鍵しやすくなることに気がつきました。

奥:通常のJones,手前:一部のキーを入れ替えたJones
Cherryプロファイルをベースにして、T Yは倍ほどの高さのSAプロファイル、GやQなどは少しだけ背の高いKATプロファイルに交換しました。
この時点では左右のシフトなどをOEMプロファイルでほんの少し高くしようとしていますが、後にボツとなります。
これをきっかけとして、MXスイッチを使用するキーボード、Jonesを改修する計画として復活することになりました。
ロードテスト
先ほどのテスト機を使い部分的にキーキャップを交換してどのキーを最適化の対象にするかを調べたり、スチレンボードにスイッチをのせたモックアップを作成して最適な高さを探ったりしました。(0+2+2は、ベースの0mmに対して、1段目が2mm、2段目も2mmの段差を意味するメモ)

テスト機は、数字行をSAプロファイルへ、また、T YをSAプロファイル1行目のキーに交換してさらに高くした最終形態になりました。

この形態をロードテストとして3ヶ月ほど使用し、日常的な使用で問題ないことを確認した上で基板の製作に取り掛かりました。
Parts
288| Qty | Value | Footprint | References |
|---|---|---|---|
| 75 | D | Diode_SMD:D_SOD-123 | D1, D2, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24 +59 |
| 60 | SW_Push | MX_Alps_Hybrid:MXOnly-1U-NoLED | SW_-1, SW_;1, SW_;2, SW_'1, SW_<1, SW_=1, SW_1, SW_2, SW_3, SW_4, SW_5, SW_6, SW_7, SW_8, SW_9, SW_10 +44 |
| 42 | Conn_01x01 | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | EXT_C0, EXT_C1, EXT_C2, EXT_C3, EXT_C4, EXT_C5, EXT_C6, EXT_C7, EXT_MC0, EXT_MC2, EXT_MC3, EXT_MC4, EXT_MC6, EXT_MC7, EXT_MR1, EXT_MR2 +26 |
| 38 | MountingHole | MountingHole:MountingHole_2.2mm_M2_Pad_minimal | H10, H11, H12, H13, H14, H15, H16, H17, H18, H19, H20, H21, H22, H23, H24, H25 +22 |
| 12 | Conn_02x02_Top_Bottom | locallib:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal_wCable_housing_spare_pin | J6, J7, J8, J9, J10, J12, J13, J14, J15, J23, J24, J25 |
| 7 | SW_Push | MX_Alps_Hybrid:MXOnly-1.25U-NoLED | SW_CTL1.25u1, SW_ENT1.25u1, SW_LALT1.25u1, SW_LWIN1.25u1, SW_RALT1.25u1, SW_ROPT1.25u1, SW_TAB1.25u1 |
| 4 | MountingHole | MountingHole:MountingHole_2.2mm_M2_No_Cu | H1, H2, H3, H5 |
| 4 | RotaryEncoder_Switch | locallib:RotaryEncoder_Alps_EC11K-Switch_Vertical_H20mm_NPTH_MP | SW_RE_L1, SW_RE_L2, SW_RE_R1, SW_RE_R2 |
| 4 | SK6812MINI | locallib:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm_TriangleMark_Thick | LED1, LED2, LED3, LED4 |
| 4 | SW_Push | MX_Alps_Hybrid:MXOnly-1.5U-NoLED | SW_BS1.5u1, SW_CTL1.5u1, SW_ENT1.5u1, SW_TAB1.5u1 |
| 3 | 0.1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C4, C5, C7 |
| 2 | clipboard:1d23b097-72e0-487b-bec7-a328ee8b6ed7 | , | |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R5, R6 |
| 2 | 22 | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R3, R4 |
| 2 | 22pF | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C2, C3 |
| 2 | 4.7k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R8, R9 |
| 2 | 5.1k | Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R1, R2 |
| 2 | JS5208 | locallib:SW_JS5208_add_MP_hole | S1, S2 |
| 2 | SW_Push | MX_Alps_Hybrid:MXOnly-2U-ReversedStabilizers-NoLED | SW_LSPC2u1, SW_RSPC2u1 |
| 2 | SolderJumper_3_Open | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabels | JP_LED1, JP_LED2 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C1 |
| 1 | 16MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering | Y1 |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C6 |
| 1 | 24LC64 | Package_SO:SO-8_3.9x4.9mm_P1.27mm | U2 |
| 1 | 5.2x5.2mm | Button_Switch_SMD:SW_SPST_TL3342 | ResetSW1 |
| 1 | 500mA | Fuse:Fuse_1206_3216Metric_Pad1.42x1.75mm_HandSolder | F1 |
| 1 | ATmega32U4-MU | Housings_DFN_QFN:QFN-44-1EP_7x7mm_Pitch0.5mm | U1 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J4 |
| 1 | Logo_Base | Jones.local:Sandy_logo_w55 | LOGO1 |
| 1 | PRTR5V0U2X | Package_TO_SOT_SMD:SOT-143 | D10 |
| 1 | SW_Push | MX_Alps_Hybrid:MXOnly-2U-NoLED | SW_LSFT2u1 |
| 1 | SW_Push | MX_Alps_Hybrid:MXOnly-1.75U-NoLED | SW_LSFT1.75u1 |
| 1 | USB_C_Receptacle_USB2.0 | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J1 |
The 286 most common of 288 parts.
More from jpskenn/Sandy
4- 2 layers285 × 95.1 mm

- 2 layers285 × 75.2 mm

- 2 layers285 × 37 mm

- 2 layers285 × 73.4 mm

Similar boards
- 2 layers285.7 × 95.5 mm

Jones
jpskenn/Jones
Row-staggered 60% keyboard with gapless R2-R3 row. GH60 case compatible.
249 parts12MIT - 2 layers285 × 95.1 mm

Nora
jpskenn/Nora
Narrow pitch keyboard with Choc switches and keycaps. GH60 compatible.
303 parts12MIT - 2 layers285 × 95.1 mm

- 2 layers113.3 × 73.7 mm

- 2 layers73.8 × 119.1 mm

- 4 layers120 × 150 mm

VolumeMixer
lheywang/VolumeMixer
motorized voluem mixxer (deej like) with PCB / STM32 code !
186 parts1MIT - 2 layers344 × 124.5 mm

- 2 layers285 × 95.1 mm

Questions
How big is the Sandy 3in1 PCB?
It measures 302.4 × 230.7 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Sandy 3in1 use?
288 parts, built around the ATMEGA32U4-MU, 24LC64(LX), SK6812MINI-E and JS5208. 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 Sandy 3in1 KiCad files?
From the jpskenn/Sandy repository on GitHub, at the commit this page was made from: the board is PCB/Sandy_3in1/Sandy_3in1.kicad_pcb and its schematic PCB/Sandy_3in1/Sandy_3in1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Sandy 3in1 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).