VIA 教學 + 使用 Magic Keycode 切換 MAC/WIN

很久以前講說要寫的 VIA 教學以及要怎麼使用 VIA 來切換 GUI/ALT 來達成不用耗額外一層來分別放 MAC/WIN 用的

WINDOWS 跟 MACOS 鍵盤差別

在 WINDOWS 下時,左下角通常是安排成 CTRL, WIN(GUI), ALT,直接將這個鍵盤用在 MACOS 上的話,會變成 CTRL, CMD(GUI), Option(ALT),所以如果我們能做一個按鈕切換 GUIALT 的順序,同一層就都可以用在兩邊系統上了,如果要看怎麼使用的話,可以跳到 Magic Keycodes,下面會先講一下 VIA 基本上怎麼使用

VIA

VIA 是一款圖形化介面,可以馬上更改 QMK 鍵盤 (需將 VIA 功能開啟並燒錄) 的按鍵配置,並不用每次改個按鍵都要重刷一次,雖然並不能甚麼 QMK 功能都從 VIA 設置,但整體方便且簡單許多

當插著鍵盤時,打開 VIA,有的鍵盤如果有被納入的話,是可以馬上出現鍵盤配置的,但如果沒有的話,要額外加入鍵盤 json 設定檔。可以從左上 File → Import Keymap 選擇鍵盤設定檔,就可以出現以下畫面

這樣就可以來更改設定了。而在 Setting 那邊,可以將 Show Desgin tab 打開,會多一個 Design,可以看到鍵盤電路的接法

但不知道是否能利用這個來寫 QMK 相關的原始碼呢? 這我就不清楚了,目前我手上也沒有我這台 OM64PRO 的 QMK 原始碼。如果有人知道這個是否足夠還是要配上其他資訊才能把 QMK 弄出來,再麻煩在底下留言了,感謝

VIA 基礎設定

先貼一個 QMK 說明文件,很多設定跟解說都可以從這上面找到。切回到 CONFIGURE 可以來設定我們的鍵盤了

左上角

  • KEYMAP 我們現在看到的這個頁面
  • MACROS 設定每個 MACRO 要怎麼設置,配合左下角 MACRO 的鍵來執行
  • LIGHTING 我這台開這個會跳掉,但 QMK LIGHTING 可以使用,可能要看鍵盤的設定
  • SAVE + LOAD 將當前鍵盤設定存下來或者讀取舊的設定檔,這個也是 json 檔,但跟前面題的是不同功用,請勿覆蓋前面的 json

左下角

  • Basic Code 鍵盤上看得到的那些鍵,前面兩個有比較特殊的,分別為:空白(KC_NO)倒三角形(KC_TRNS),這兩個在解釋上會有點不同。空白是指這個鍵為空,按下去什麼事都不做;但倒三角形則是這層不設置東西,往下一層找(備註 QMK 第0層是排在最底下)。例如我在第一層 Z 設置空白但在 X 設置倒三角形,我按第一層的 Z 鍵什麼事都不會發生,但按第一層的 X 鍵,他會輸出我第零層 X 鍵值 - X 出來
  • MEDIA 一些關於多媒體的操作,如上下一首或者調整音量等
  • MACRO 用來觸發左上角 MACROS 的設定
  • LAYERS 切換鍵盤層的按紐
  • SPECIAL 這邊會有一些比較特別的值,例如 GRAVE ESC 或者 Any 等等,會在後面再詳細介紹
  • QMK LIGHTING 切換背光模式或者更改明亮度可以在這找到

設定鍵值

1- 先在右上角的鍵盤中選擇要更改的鍵

2- 下方選擇要變更的值
3- (選擇 Any 的話) 要輸入鍵值

4- 設定結束 (馬上生效,可以測試)

LAYERS 介紹

QMK 的 layers 是從將數字大排在最上面(最優先)而第0層最低,如果多層有打開的狀況,會優先使用最上面的值,而如果用 KC_TRNS 倒三角形的話,就會在往下面找,通常預設都是第0層為預設層(一直開啟),其他層都會關閉,所以可以在其他層短暫開啟,那按下去的鍵就會變成該層的鍵。更詳盡的解釋可以看 Keymap

  • MO(layer): 當壓著的時候切到指定層,該鍵位在指定層要用 KC_TRNS (我目前測起來感覺沒差,但也按不到所設定的值)
  • TG(layer): 開關指定層
  • TT(layer): 跟 MO 用途一樣,但按多次(預設5次)時會變成將指定層開關如 TG
  • OSL(layer): 短暫開啟指定層直到按下第二個鍵
  • TO(layer): 打開指定層,關閉其他層(除預設層外)
  • FN1(FN3)/FN2(FN3): 預先設置好的按著的時候是 FN1/2 但搭配 FN2/1 會是 FN3
  • Space Fn1/2/3: 按一次是空白鍵,按住是 Fn1/2/3

非在 LAYER 裏頭,需要使用 SPECIAL Any 來設置

  • DF(layer): 設置預設層
  • LM(layer, mod): 像 MO 一樣但會同時壓著 MOD (如 ALT/CTRL等)
  • LT(layer, kc): 壓著時使用指定層,按一次是輸出按鍵,例如前面所設置 LT(1, KC_CAPS) 就是 按住時用第一層,但按一次就會是 CAPSLOCK

SPECIAL 介紹

  • 一些需要 SHIFT 的鍵例如 ( ) ^ 等
  • 切換輸入如日文的片平假名
  • GRAVE ESC - ESC`(VIA 按紐) 一個蠻重要的功能,在比較小的鍵盤上,通常不會有 F 那一列也就不會有 ESC,這個設置後可以把 ESC`~ 放在一起,設置好後,正常按是 ESC,配合 SHIFT~,配合 WIN(GUI) 則是 `;但在 MAC 中 ` 是沒辦法這樣按的因為 CMD(GUI) 配合此鍵會變成 CMD + ` 會變成切同應用程式的不同視窗。
  • Space Cadet Shift - LS(, LC(, LA(、RS), RC), RA)、SftEnt,利用左右功能鍵達到輸入左右括號,例如 LC( 按一次是 ( 長壓就是正常左 CTRL,而 RA) 按一次是 ) 長壓是右 ALT,最後的 SftEnt 按一次是 ENTER 長壓是右 SHIFT。類似功能可以看 Mod-Tap MT(mod, kc) 長壓是 mod 但按一次是輸出 kc,mod 可以多個功能鍵組合(用|),但 kc 只能一些基礎鍵 (0x99 KC_SEPARATOR 之前),所以只能組出 這種,() {}這種就得要額外搭配 SHIFT,如 MT(MOD_LCTL | MOD_LSFT, KC_RBRC) 長壓輸出左 CTRL+SHIFT 但按一次輸出 ] 配合 SHIFT 就有 }
  • Toggle NKRO 開關全鍵無鬼鍵
  • 一些系統操作如睡眠、調整螢幕亮暗等
  • 滑鼠操作
  • 一些讓鍵盤發出聲音等 (這個我就不太懂)
  • Any 可以設一些 VIA 內建沒有的,例如前面講述到 MT/LT 或者是等等介紹的 Magic KeyCodes,注意有的鍵是只能用 VIA 所用的代稱,例如 KC_RBRC 可以但是 KC_RIGHT_BRACKET VIA 是認不出來的,另外有的只能使用 HEX 時溜進位來使用。如果輸入的 HEX 碼 VIA 認得出來,他也會用他的表示法顯示,例如 MT(mod, kc) = (QK_MOD_TAP | (((mod)&0x1F) << 8) | ((kc)&0xFF)) = 0x6000 | (((mod)&0x1F) << 8) | ((kc)&0xFF) 此算式可在此 #define MT(mod, kc) … 找到,MT 所使用的 MOD 表 mod_bits (非KC_),而一般 KC 表可在 hid_keyboard_keypad_usage 找到,因此 MT(MOD_LCTL | MOD_LSFT, KC_RBRC) = MT(0x01|0x02, 0x30) = 0x6330,設置好會發現他出現 ADV,可以把滑鼠移上去就會顯示更詳細的資料,如果沒有出來切到 KEY TESTER 再切回來應該就會有了。如果 VIA 無法表示,但該 HEX 是可以用的,就會直接出現 HEX 值如圖片空白鍵附近的 0x5c15,如果失敗可能會是空白或者上一次弄 Any 的值

Magic Keycodes

這邊除了防鬼鍵 Toggle NKRO (MAGIC_TOGGLE_NKRO) 已經有在 VIA 中之外,其他都只能用 HEX 碼設定,而相關 HEX 表可以在這裡搜尋相關的 MAGIC_… 找到。

  • MAGIC_TOGGLE_NKRO - 0x5c14 用 Any 輸入進去後可以發現,會出現 NKRO 跟使用 Toggle NKRO 設置後一樣的
  • MAGIC_TOGGLE_ALT_GUI - 0x5c13 切換 GUIALT,也就是最前面提到可以拿來切換 WIN/MAC 的使用環境,當我現在是 CTRL, GUI(WIN), ALT 按下此鍵就可以變成 CTRL, ALT, GUI 在 MAC 上就會是 CTRL, Opt, CMD 了,那在暗一次就可以切換回來。這也是上面那張圖我所設的功能,在 VIA 中他就只會顯示 0x5c13
  • MAGIC_TOGGLE_GUI - 切換 GUI 這個比較不建議使用,因為前面的 enum 是用算的,假如鍵盤有更改這些預設值,我們是沒辦法知道的,再更改的情況下,就不確定我們推出來的 HEX 碼正不正確,所以不建議去使用這個,而是用 MAGIC_NO_GUI 跟 MAGIC_UNNO_GUI 來達成
  • MAGIC_NO_GUI - 0x5c06 關閉 GUI,有的人玩遊戲可能想要關掉 Win 鍵就可以使用這個
  • MAGIC_UNNO_GUI - 0x5c0f 開啟 GUI,配合上述 MAGIC_NO_GUI 來達到 MAGIC_TOGGLE_GUI 的功能

還有其他例如切換 CTRLCAPSLOCK 或者切換 CTRLGUI 等功能可以從 QMK Magic Keycodes 來找有沒有自己想要的功能。

結語

VIA 可以很方便使用圖形化介面來設定,且設定是馬上生效,所以測試起來就方便很多,不用改一個鍵要從 QMK 然後再把它用進鍵盤中,這裡大致上介紹了 VIA 跟 QMK 可以做到的一些設定,並介紹一些沒有在 VIA 的選項中但可以使用的功能,如 LT, MT 又或者 Magic Keycodes 等,利用 HEX 碼達成方便切換 Win/Mac 按鍵順序的功能。我個人也還在嘗試 VIA 能怎樣設置讓鍵盤可以按得比較方便,如果有任何想知道的功能,或者我講不清楚的地方,歡迎在底下留言。

參考資料

1個讚

感謝分享!
另外在 Advanced Keycodes 下,Grave Escape 跟 Space Cadet Shift 有介紹到,並且可以使用
Leader Key 的話呢?

看完 qmk 的文件後,我感覺 Leader Key 只能使用 qmk ,也就是要寫好相關的檔案後在編譯進去,無法從 VIA 這裡設定

1個讚