使用 QMK 的鍵盤可以製作自己的表情圖示鍵盤,你可以透過自訂按鍵的方式來直接按出 ???? 這樣的圖示喔,我們就來看看怎麼做吧!
先來看看影片
您可以透過 QMK Configurator 來線上編輯自訂鍵盤,但是因為還是需要寫一小段程式碼才能使用圖示。所以建議你使用 QMK CLI 的方式來編輯與燒錄。
我們使用 Dumbpad 來示範如何做一個表情鍵盤,請注意,可以使用 QMK 系統的鍵盤都可以建立自己的表情小圖示喔:
Dumbpad 17% 自組小鍵盤,數字鍵盤,試軸器
- 12% 自組小鍵盤
- 支援 QMK,可自訂配置
- 支援 EC11 旋鈕
- 可作數字鍵盤、快捷鍵、表情鍵
- 目前電路板為黑色
如何製作圖示小鍵盤
安裝 QMK 韌體
請先下載 QMK 韌體,並安裝在自己的電腦上,請參考,我們的線上文件。
編輯 rules.mk/keymap.c
找到你鍵盤的 rules.mk 與 keymap.c,如果你不知道放在哪裡,請參考這裡。
設定 rules.mk
如果你的設定檔資料夾中沒有 rules.mk,請直接建立一個新的即可,文字檔格式,並加入這一行:
UNICODEMAP_ENABLE = yes
作業系統
因為目前每個作業系統的規格不同,所以無法跨 OS 使用,在燒錄韌體之前,你必須指定要使用那一種作業系統,這是目前支援的:
- UC_LNX:Linux 系統的使用者。
- UC_OSX:MacOS 的用戶需要開啟系統設定,請參閱 官方文件。
- UC_WIN:Windows,不建議使用,需修改註冊檔,請參閱 官方文件。
- UC_WINC:在 Windows 使用 WinCompose 來輸入圖示,需安裝軟體,Windows 使用者建議下載並使用此選項。
編輯 keymap.c
接下來,請編輯 keymap.c,在 keymap.c 中有三個固定的函式 unicode_map
、keymaps[]
與 matrix_init_user(void)
。名稱都是固定的,只要修改內容即可:
matrix_init_user(void)
matrix_init_user(void) 就是設定你的作業系統,Windows 系統的話範例如下:
void matrix_init_user(void) {
set_unicode_input_mode(UC_WINC);
}
unicode_map[]
unicode_map 就是宣告你要用那些表情圖示,你可以在 這裡 找到表情圖示的 unicode 代碼,例如愛心的代碼是 U+2764
,前面 U+ 改成 0x,用 0 從前面部補滿 5 位就可以了。U+2764 => 0x02764
unicode_map 範例如下:
const uint32_t PROGMEM unicode_map[]=
{
0x02764,
0x02764,
0x1f42F,
0x1f498,
0x1f44D,
(向下新增)
};
keymaps[]
最後是 keymaps[]
,就是按鍵的 KeyCode,整個 keymap.c 的範例如下:
const uint32_t PROGMEM unicode_map[] = {
0x02764,
0x1f42F,
0x1f498,
0x1f44D
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
BASE LAYER
/-----------------------------------------------------`
| | 7 | 8 | 9 | Bkspc |
| |---------|---------|---------|---------|
| | 4 | 5 | 6 | Esc |
| |---------|---------|---------|---------|
| | 1 | 2 | 3 | Tab |
|-------------|---------|---------|---------|---------|
| Left mouse | TT(SUB) | 0 | . | Enter |
\-----------------------------------------------------'
*/
[_BASE] = LAYOUT(
TT(_SUB), KC_PSLS, KC_PAST, KC_PPLS,
KC_4, KC_5, KC_6, KC_PMNS,
KC_4, KC_5, KC_6, KC_DOT
KC_BTN1, KC_1, KC_2, KC_3, KC_0
),
[_SUB] = LAYOUT(
_______, _______, _______, RESET,
_______, _______, _______, KC_KP_PLUS,
_______, _______, _______, KC_KP_MINUS,
KC_LOCK, X(0), X(1), X(2), X(3)
),
};
void matrix_init_user(void) {
set_unicode_input_mode(UC_WINC);
}
FAQ
亂碼
如果你的的作業系統顯示亂碼,有可能是你的設定沒有完成。請詳閱本章節作業系統的說明。另外您可以前往 https://getemoji.com/ 如果你看到的是亂碼的畫面,就表示你的作業系統太舊了,不支援表情圖示。