40%直列鍵盤和行列輸入法

日期:2025/03/18 (二)

使用60%鍵盤一些時間了,一直覺得總有一天會走火入魔、栽進40%鍵盤的世界,但這種規格已經不在量產鍵盤的守備範圍了,客製鍵盤的錢坑多少也有所耳聞,遲遲不敢踏入。而最近開始慢慢受不了公司配備的薄膜鍵盤,輕輕一摸就會發出很大的聲音,對我這個使用鍵盤操作佔大多數的人來說,多少會有些不好意思,因此這一泯餘火又漸漸在我心中死灰復燃。

匱乏的資訊

由於討論度太低,以往各坑常用的巴哈/ptt/facebook二手社團幾乎不管用(不過巴哈入門推薦這篇),說到客製鍵盤,中文圈的資訊不外乎來自對岸的ZF。但再加上我要找的條件跟方向,交集起來幾乎沒人,ptt鍵鼠版40%鍵盤的文甚至只有十篇不到,更遑論更細節的討論。 直到我找到了一個叫r/olkb的subred,reddit人口基數夠大,再小眾的東西也有足夠的討論量,因此主要都在這裡打滾。

而要在英文圈混,沒有一個適當的關鍵字實在很難找到想要的資訊,因此以下介紹一些重要的名詞解釋:

Layout

  • ortholinear / staggered:說了這麼多,到底什麼是直列式鍵盤?相較於我們平時熟悉的按鍵之接交錯排列的staggered鍵盤,按鍵之間像方格一般對齊排列的layout就是ortholinear,中文叫直列式佈局。關於這兩種layout,可以參考這篇更加詳細的解說。
  • planck / preonic:或許還有許多細節,但以我粗淺的理解,planck就是40%的ortho,而preonic就是60%的ortho。
  • 鍵盤玩家都很熟悉鍵帽的長度單位 1u、2u 的 u 即是 unit 之意。而不同於常見的 staggered 鍵盤中 Shift 鍵 2.25u、Space 鍵 6.25u 的鍵長,ortho 幾乎所有鍵(包括功能鍵)都是 1u 及 2u 的整數長度。src

Case Types

再來是我最在意,但也最困擾最少人提的「殼的種類」大致分為四種:High / Middle / Low ProfileEOTW

下圖是我自己的理解:Hi-Pro case的圍牆較高,切齊鍵帽,將軸擋住;Mid-Pro跟Lo-pro比較接近,大家名稱時常混用,圍牆較矮,切齊plate或是被plate蓋住,即是我們俗稱的懸浮式設計,我的最愛。而EOTW就比較少見了,case退化成bottom plate,兩個plate像三明治一樣將PCB夾起來,而且超出鍵帽外的邊界(紅色部份)通常會比較寬(?)。

olkb官網的購買頁面也有很直觀的分解圖:

想看更多角度的圖,可以到商品頁面下方的PHOTO區,看到大家精美的作品。這邊就放一張配置標準的mid-pro,上傳者看來也是個unix nerd,這種portable的setup感覺還滿不賴的。

題外話,搜尋lo-pro的時候要小心不要跟矮軸鍵帽(low profile keycaps)搞混了,常常點進文章才發現在講鍵帽==,所以要找懸浮式通常用mid-pro找就可以了。

條件與候選 (編輯中)

介紹完Preliminaries,接著就可以進入Problem Statement了(X)

features i want:

  • ortholinear 40%, i.e. planck
  • split space keys
  • mid-profile case

觀望很久

  • Drop OLKB Planck但最後一代 rev7是兩年前的事 planck的作者Jack Humbert聽說跑去開遊戲實況了

candidates:

  • Boardsource

  • YMDK Air40

  • NIU40

  • KRepublic的BM40 / CSTC40 / 非熱插拔需要焊接的JJ40

  • Quarkeys的Z40

  • Drop OLKB Planck rev7

開箱與組裝

我是直接在drop販賣頁面下訂,然後請MyDay代收服務代收。現在這些海外代購平台都很方便,遙想當年要買駿河屋還要去露天找買家比各種匯率,真是感慨。

總之到貨了就,開組!

  • steel的plate跟PCB板,polycarbonate(某種材質吧)的白色半透明Hi-pro case
  • 預設type-C和螺絲配件,還附贈一張Layout卡。
  • 因為我不是這麼講究按壓感跟聲音的哈扣玩家,鍵帽跟軸就蝦皮上隨便買買,外觀好看就好。
  • 因為空白鍵要用的2u鍵十分難找,單買超級貴,因此就用一套無刻白108鍵套組(取Backspace跟數字鍵的長鍵,都是2u)和散裝的自訂色1u鍵自己搭配,高度當然是我們beloved的XDA。
  • 右邊則是rev7預設的OEM鍵帽,加10美金就有,以防萬一前面的組合不合還能墊背用就買了。
  • 為了彌補一下之前60%沒買到靜音紅軸的遺憾,這次選用的是高特的靜音白軸,雖然還是買不到靜音紅但白軸也不錯,安靜很多。

因為是熱插拔的板子,只要按照YT上rev6的教學,猴子都會組。

組一半休息一下,拍個美照

完成。精神象徵的HJKL當然要來點不一樣的顏色,而老梗的電話線也不能少。最後來跟60%來個大小比一比

QMK Firmware (編輯中)

組裝完還不要高興的太早,接著就進入program your own keyboard的環節了。常看到reddit的客製鍵盤玩家這麼稱呼,我就在想,哪那麼臭屁,啊不就設定一下key mappings跟寫程式什麼關係,那就讓我們來揭開燒機鍵盤的的神秘面紗吧。

在Windows或Mac上基本上可以輕鬆的透過精美的GUI網頁介面(QMK configurator)及程式(QMK Toolbox)就完成基本的設定跟燒韌體。

但是!身為一個pretentious nerd,我們當然要learn it the HARD way。

官網上的documentation十分詳盡,基本上只要follow這個官網教學,想要的資訊應有盡有(反而該說是多到令人卻步...我甚至懷疑官網的資訊量會不會大到讓沒有linux/cli/c語言經驗的人眼花撩亂,從而不知從何下手)。

install on Arch Linux

    $ yay -S qmk

setup local environment (move qmk/qmk_firmware to ~/qmk_firmware)

    $ qmk setup

configs user settings

    $ qmk config user.keyboard=planck/rev7
    $ qmk config user.keymap=olkb

start programmin your keyboard

  • mainly in the keymaps.c file
    • Keymaps
      1. edit with qmk.configurator
      2. or directly edit the keymaps.c file (with vim ofc)
    • LED
          printf();
      

compile

    $ qmk compile

flash your keyboard

  1. first, make sure your keyboard is in the bootloader mode. only pressing the reset button needed with the planck rev7.
  2. Then, flash with the command
    $ qmk flash
  • about RGB settings
    • tutorial
    • RGB v.s. HSV:概念上有點像,RGB是三維座標,而HSV是極座標+強度的表示方法。
    #define RGB_WHITE 0, 0, 63

    const rgblight_segment_t PROGMEM rgb_layer_0[] = RGBLIGHT_LAYER_SEGMENTS(
        { 0, 9, RGB_WHITE }
    );

    const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
        rgb_layer_0
    );

    void keyboard_post_init_user(void) {
        rgblight_layers = rgb_layers;
    }

    layer_state_t default_layer_state_set_user(layer_state_t state) {
        rgblight_set_layer_state(0, layer_state_cmp(state, 0));
        return state;
    }

行列輸入法

完成了基礎的設定,剩下的就是無盡的練習。除了ortho的鍵位熟悉需要一些磨合期之外,少了數字鍵,就要克服一個更艱難的問題:怎麼用注音輸入法打中文?多數的解法是換個輸入法,拼音輸入法,或是嘸蝦米、倉頡、行列這種形碼輸入法,想到從小就一直想學倉頡,或許這是一個機會。經過一些爬文比較後,行列的輸入速度最快,而且也有左右手上下列平均分配的特性在,因此可以使左右手分工

總結與心得

結果買了個鍵盤還要學東學西的,也沒比較好用,就跟買了手排車發現不太會開一樣。但,這樣才有趣嘛,不覺得生活中又多了一項挑戰,一個想達成的目標了嗎?