From b8c455f8852afb859d6ce0e0cf4bae725d7a0e46 Mon Sep 17 00:00:00 2001 From: fayzjj Date: Thu, 3 Sep 2026 17:10:18 +0200 Subject: [PATCH] Add files via upload --- config/gallium_seniply.dtsi | 133 +++++++++++++++++++++++++++++++++++ config/piantor_pro_bt.conf | 43 ++++++----- config/piantor_pro_bt.keymap | 119 ++----------------------------- 3 files changed, 164 insertions(+), 131 deletions(-) create mode 100644 config/gallium_seniply.dtsi diff --git a/config/gallium_seniply.dtsi b/config/gallium_seniply.dtsi new file mode 100644 index 000000000..7c51f3267 --- /dev/null +++ b/config/gallium_seniply.dtsi @@ -0,0 +1,133 @@ +/* + * Gallium + Seniply — 42-key (Piantor Pro BT, 6-column) + * + * 字母层:Gallium colstag + * 层系统:Seniply(stevep99),按其 KMonad 参考实现逐键移植 + * - 无 home row mods / 无 mod-tap,全部由拇指切层 + * - 修饰键为 sticky(一次性),也可长按与导航键组合 + * + * 这个文件只包含 behaviors + keymap 节点,不含任何板级内容, + * 所以将来做 dongle 时可以被 dongle 的 .keymap 原样 #include。 + * + * 键位编号(Piantor 42 键,阅读顺序): + * 0 1 2 3 4 5 6 7 8 9 10 11 + * 12 13 14 15 16 17 18 19 20 21 22 23 + * 24 25 26 27 28 29 30 31 32 33 34 35 + * 36 37 38 39 40 41 + * 0/12/24 与 11/23/35 是外侧小指列(36 键版没有这一列) + */ + +// 注意:层索引由 keymap 里节点的出现顺序决定,不是由这些数字决定。 +// 两者必须一致,且 GAME 必须排在其它层之前,否则在 GAME 里按 SYM/NUM 会被 GAME 自己盖住。 +#define BASE 0 +#define GAME 1 +#define EXT 2 +#define SYM 3 +#define NUM 4 +#define FUN 5 + +// Override ZMK's built-in sticky-key behavior from . +// Do not define another `sk:` node label: node labels must be unique. +&sk { + release-after-ms = <1500>; + ignore-modifiers; +}; + +/ { + behaviors { + // Seniply 用 1500ms 的 sticky。不加 quick-release: + // 这样长按修饰键 + 鼠标点击/拖拽时修饰键会一直保持。 + // 点一下,接下来这个词自动大写,遇到空格自动关闭。 + // 字母和数字自动延续;加了 MINUS 以支持 KEBAB-CASE。 + // 数字不受 Shift 影响,所以 RETRY_2 里的 2 还是 2。 + caps_w: caps_word_code { + compatible = "zmk,behavior-caps-word"; + display-name = "Caps Word"; + #binding-cells = <0>; + continue-list = ; + }; + + }; + + keymap { + compatible = "zmk,keymap"; + + base_layer { + display-name = "GALLIUM"; + // ┌─────┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬─────┐ + // │ ESC │ B │ L │ D │ C │ V │ │ J │ Y │ O │ U │ , │BSPC │ + // │ TAB │ N │ R │ T │ S │ G │ │ P │ H │ A │ E │ I │ RET │ + // │CTRL │ X │ Q │ M │ W │ Z │ │ K │ F │ ' │ ; │ . │SHIFT│ + // └─────┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴─────┘ + // NUM EXT SHIFT SPC SYM F16 + bindings = < +&kp ESC &kp B &kp L &kp D &kp C &kp V &kp J &kp Y &kp O &kp U &kp COMMA &kp BSPC +&kp TAB &kp N &kp R &kp T &kp S &kp G &kp P &kp H &kp A &kp E &kp I &kp RET +&kp LCTRL &kp X &kp Q &kp M &kp W &kp Z &kp K &kp F &kp SQT &kp SEMI &kp DOT &kp RSHFT + &mo NUM &mo EXT &kp LSHFT &kp SPACE &mo SYM &kp F16 + >; + }; + + game_layer { + display-name = "QWERTY"; + // 游戏 / 借别人电脑 / 用别人快捷键时用。从 FUN 层右下角进, + // 右外拇指键退回 Gallium。拇指恢复成常规 Ctrl / Alt / 空格。 + bindings = < +&kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSPC +&kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp RET +&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp LCTRL + &kp LCTRL &kp LALT &kp SPACE &kp SPACE &mo NUM &to BASE + >; + }; + + extend_layer { + display-name = "EXTEND"; + // 左手主行 = sticky 修饰键(Alt / Win / Shift / Ctrl / AltGr) + // 右手 = 导航;Backspace 落在右食指,Delete 落在右小指主行 + // 例:Ctrl+A = EXT + t(Ctrl位) + a ; Alt+Tab = EXT + n(Alt位) + ,位 + bindings = < +&trans &kp ESC &kp LA(LEFT) &kp LC(F) &kp LA(RIGHT) &kp INS &kp PG_UP &kp HOME &kp UP &kp END &caps_w &trans +&trans &sk LALT &sk LGUI &sk LSHFT &sk LCTRL &sk RALT &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp DEL &trans +&trans &kp LC(Z) &kp LC(X) &kp LC(C) &kp LGUI &kp LC(V) &kp RET &kp BSPC &kp TAB &kp K_APP &kp PSCRN &trans + &trans &trans &mo NUM &trans &mo FUN &trans + >; + }; + + symbol_layer { + display-name = "SYMBOL"; + // US 排布。左手主行同样是 sticky 修饰键,方便 Ctrl+= 这类组合。 + // 括号按手指分配:( ) 都在食指,{ } 都在中指,[ ] 都在无名指。 + // 主行放的是左括号 —— IDE 会自动补右括号,左括号用得更多。 + bindings = < +&trans &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp EQUAL &kp GRAVE &kp COLON &kp SEMI &kp PLUS &trans +&trans &sk LALT &sk LGUI &sk LSHFT &sk LCTRL &kp CARET &kp ASTRK &kp LPAR &kp LBRC &kp LBKT &kp MINUS &trans +&trans &kp BSLH &kp PIPE &kp FSLH &kp TILDE &kp AMPS &kp DQT &kp RPAR &kp RBRC &kp RBKT &kp UNDER &trans + &trans &mo FUN &mo NUM &trans &trans &trans + >; + }; + + number_layer { + display-name = "NUMBER"; + // 右手小键盘式排布;左手主行仍是修饰键(Ctrl+4 这类) + // 外侧列在本层是蓝牙配置位,需要按住 NUM 才能碰到 + bindings = < +&bt BT_SEL 0 &trans &trans &trans &trans &kp KP_NUM &kp EQUAL &kp N7 &kp N8 &kp N9 &kp PLUS &bt BT_SEL 3 +&bt BT_SEL 1 &sk LALT &sk LGUI &sk LSHFT &sk LCTRL &sk RALT &kp ASTRK &kp N4 &kp N5 &kp N6 &kp MINUS &bt BT_SEL 4 +&bt BT_SEL 2 &trans &kp K_APP &kp TAB &kp BSPC &kp RET &kp N0 &kp N1 &kp N2 &kp N3 &kp FSLH &bt BT_CLR + &trans &trans &trans &trans &trans &trans + >; + }; + + function_layer { + display-name = "FUNCTION"; + // 由 EXT + SYM 两个拇指键同时按住进入(Seniply 原设计) + // 右手 F 键按小键盘方位排列:F1-F3 底排,F4-F6 主行,F7-F9 顶排 + bindings = < +&ext_power EP_TOG &kp C_STOP &kp C_PREV &kp C_PP &kp C_NEXT &kp C_BRI_DN &kp F12 &kp F7 &kp F8 &kp F9 &kp SLCK &trans +&kp CAPS &sk LALT &sk LGUI &sk LSHFT &sk LCTRL &kp C_BRI_UP &kp F11 &kp F4 &kp F5 &kp F6 &to BASE &trans +&sys_reset &kp C_MUTE &kp C_VOL_DN &kp LC(LS(C)) &kp C_VOL_UP &kp LC(LS(V)) &kp F10 &kp F1 &kp F2 &kp F3 &to GAME &trans + &studio_unlock &trans &trans &out OUT_TOG &trans &bootloader + >; + }; + }; +}; diff --git a/config/piantor_pro_bt.conf b/config/piantor_pro_bt.conf index ec26ea9ec..8279fd080 100644 --- a/config/piantor_pro_bt.conf +++ b/config/piantor_pro_bt.conf @@ -1,29 +1,36 @@ # Keyboard name shown to USB and Bluetooth hosts (max. 16 characters). CONFIG_ZMK_KEYBOARD_NAME="Piantor Pro BT" -# Optional pointing-device support. Smooth scrolling requires pointing support. -# CONFIG_ZMK_POINTING=y -# CONFIG_ZMK_POINTING_SMOOTH_SCROLLING=y - -# Optional compatibility with BIOS/UEFI and pre-boot environments. -# CONFIG_ZMK_USB_BOOT=y - -# Enter idle after five minutes and deep sleep after one hour of inactivity. +# --- 电源 / 休眠 --- CONFIG_ZMK_IDLE_TIMEOUT=300000 CONFIG_ZMK_SLEEP=y CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=3600000 -# Keep the display active when the keyboard enters idle. +# --- 显示 --- CONFIG_ZMK_DISPLAY_BLANK_ON_IDLE=n -# Use underglow by default and turn it off when the keyboard enters idle. -CONFIG_ZMK_RGB_UNDERGLOW_ON_START=y -CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y +# --- RGB --- +# 编译期整个砍掉:灯带是朝下的 underglow,配不透光键帽等于完全看不见, +# 而它是无线分体上最大的耗电项。 +# 注意:改回 y 之后 FUN 层的 &ext_power 键仍然有效,但要重新加 &rgb_ug 绑定。 +CONFIG_ZMK_RGB_UNDERGLOW=n -# Change underglow brightness in steps of five percentage points. -CONFIG_ZMK_RGB_UNDERGLOW_BRT_STEP=5 +# --- 深度关机 --- +# 不启用。本板未定义 zmk,soft-off-wakeup-sources,而 ZMK 在进入 soft-off 时会 +# 主动取消 kscan 的唤醒资格(见 app/src/pm.c),结果是关机后无法用按键唤醒。 +# 出差装包直接用板子上的物理电源拨钮。 +# CONFIG_ZMK_PM_SOFT_OFF=y -# Default underglow brightness, hue, and saturation after settings are reset. -CONFIG_ZMK_RGB_UNDERGLOW_BRT_START=20 -CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=200 -CONFIG_ZMK_RGB_UNDERGLOW_SAT_START=98 +# --- Seniply 相关 --- +# 本方案不使用 home row mods,所以不需要任何 mod-tap 调参 +# (require-prior-idle-ms / tapping-term 等在这里完全用不上)。 +# 双拼打快时不会有任何误触发风险。 + +# --- 可选:鼠标键 --- +# 目前不需要(继续用鼠标)。将来想加鼠标层,取消下面两行注释即可, +# 然后在 gallium_seniply.dtsi 里用 &mmv / &mkp / &msc。 +# CONFIG_ZMK_POINTING=y +# CONFIG_ZMK_POINTING_SMOOTH_SCROLLING=y + +# --- 可选:BIOS / UEFI 兼容 --- +# CONFIG_ZMK_USB_BOOT=y diff --git a/config/piantor_pro_bt.keymap b/config/piantor_pro_bt.keymap index 926190556..02eb66b33 100644 --- a/config/piantor_pro_bt.keymap +++ b/config/piantor_pro_bt.keymap @@ -1,13 +1,15 @@ /* - * Copyright (c) 2020 The ZMK Contributors + * Piantor Pro BT (6-column, 42 keys) — Gallium + Seniply * - * SPDX-License-Identifier: MIT + * 这个文件只负责板级的东西(选物理布局、引头文件)。 + * 所有键位在 gallium_seniply.dtsi 里,将来 dongle 版直接 include 同一个文件。 */ #include #include #include -#include +#include +#include / { chosen { @@ -15,113 +17,4 @@ }; }; -/ { - keymap { - compatible = "zmk,keymap"; - - default_layer { - display-name = "QWERTY"; - // -------------------------------------------------------------------------------- - // | TAB | Q | W | E | R | T | Y | U | I | O | P | BSPC | - // | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | - // | SHFT | Z | X | C | V | B | N | M | , | . | / | ESC | - // | GUI | LWR | SPC | ENT | RSE | ALT | - bindings = < - &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSPC - &kp LCTRL &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT - &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp ESC - &kp LGUI &mo 1 &kp SPACE &kp RET &mo 2 &kp RALT - >; - }; - - lower_layer { - display-name = "NUMBER"; - // ----------------------------------------------------------------------------------------- - // | TAB | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSPC | - // | CTRL | BT1 | BT2 | BT3 | BT4 | BT5 | LFT | DWN | UP | RGT | | | - // | SHFT | BTCR| RGB | RST | BOOT| Unlock| | | | | | | - // | GUI | | SPC | ENT | | ALT | - bindings = < - &kp TAB &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC - &kp LCTRL &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans &trans - &kp LSHFT &bt BT_CLR &rgb_ug RGB_TOG &sys_reset &bootloader &studio_unlock &trans &trans &trans &trans &trans &trans - &kp LGUI &trans &kp SPACE &kp LGUI &trans &kp SPACE - >; - }; - - raise_layer { - display-name = "SYMBOL"; - // ----------------------------------------------------------------------------------------- - // | TAB | ! | @ | # | $ | % | ^ | & | * | ( | ) | BSPC | - // | CTRL | HUD | HUI | | | | - | = | [ | ] | \ | ` | - // | SHFT | | | | | | _ | + | { | } | "|" | ~ | - // | GUI | | SPC | ENT | | ALT | - bindings = < - &kp TAB &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp ASTRK &kp LPAR &kp RPAR &kp BSPC - &kp LCTRL &rgb_ug RGB_HUD &rgb_ug RGB_HUI &trans &trans &trans &kp MINUS &kp EQUAL &kp LBKT &kp RBKT &kp BSLH &kp GRAVE - &kp LSHFT &trans &trans &trans &trans &trans &kp UNDER &kp PLUS &kp LBRC &kp RBRC &kp PIPE &kp TILDE - &kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT - >; - }; - - extra_layer_1 { - display-name = "EXTRA 1"; - bindings = < - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans - >; - }; - - extra_layer_2 { - display-name = "EXTRA 2"; - bindings = < - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans - >; - }; - - extra_layer_3 { - display-name = "EXTRA 3"; - bindings = < - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans - >; - }; - - extra_layer_4 { - display-name = "EXTRA 4"; - bindings = < - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans - >; - }; - - extra_layer_5 { - display-name = "EXTRA 5"; - bindings = < - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans - >; - }; - - extra_layer_6 { - display-name = "EXTRA 6"; - bindings = < - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans - &trans &trans &trans &trans &trans &trans - >; - }; - }; -}; +#include "gallium_seniply.dtsi"