如果您有使用 QMK 系列的機械鍵盤,可以啟用 Auto Shift 的功能。
Auto Shift
當你按下一個按鍵,就會得到一個符號; 但當你長按同樣的鍵時,鍵盤就會自動進入 Shift 狀態,所以你就不需要 Shift 鍵了!
為什麼要 Auto Shift
因為 Shift 通常都放置在小指的位置,所以你需要長時間重複伸展小指,其實傷害很大,我們常常在切換大小寫或輸入法的時候這樣拉長小指,Auto Shift 可以解決這個問題。
如何使用 Auto Shift
當你按下按鍵時,同常都會很快速的放開按鍵,就會有一個短時間的按下狀態。每一個人的按下狀態時間都不太一樣。Auth Shift 會定義一個
的值,通常是按下狀態時間的兩倍。當你按下某個鍵時,會啟動一個計時器,在你釋放按鍵時,計時器會停止,如果按下狀態的時間小於 AUTO_SHIFT_TIMEOUT
則會送出一般鍵盤,若時間大於或等於 AUTO_SHIFT_TIMEOUT
則會發出 Shift 鍵的狀態。AUTO_SHIFT_TIMEOUT
舉例來說,如果你設定時間是 150 毫秒,則你按下 ‘a’ ,放開,在 150 毫秒之內完成,電腦會接收到 ‘a’,如果你按下 ‘a’,稍微久一點放開,超過 150 毫秒,電腦會收到 Shift+a,也就是大寫的 ‘A’。
有什麼缺點?
有!
第一個是, Auto Shift 不能指定某一個按鍵,而是大部分的按鍵會啟動 Auto Shift 的功能 (後續會說明可排除一些按鍵),譬如你想輸入 20 個 ‘a’ ,你只要按住 a 按鍵大約 1 ~ 2 秒,就能有很多 ‘a’,但是啟用 Auto Shift 之後,你長時間按住 ‘a’,會變成 ‘A’ (Shift+a)。
第二個是,在還沒有習慣 Auto Shift 之前,你為以為已經啟用 Auto Shift,但其實沒有,反之,你需要 Shift 的時候,也有可能尚未啟用 Auto Shift。例如,若你正在快速輸入的時候,突然需要 shift 按鍵,您可能會因為按壓的時間不夠長,你以為你已經啟動了 shift,或是說,長時間按壓會影響你的輸入速度。
啟用 Auto Shift
在你的 keymap 內的
檔中加入:rules.mk
AUTO_SHIFT_ENABLE = yes
如果你沒有自己的 keymap 或 rules.mk,請參考 這邊。
輔助鍵 (Modifiers)
預設上,輔助鍵不會觸發 Auto Shift,輔助鍵就像 Ctrl、Alt。所以若你長按 Ctrl+A ,並不會變成 Ctrl+Shift+A。您可以啟用輔助鍵的觸發,同樣在
中設定:rules.mk
AUTO_SHIFT_MODIFIERS = yes
啟用後,如果你長時間按下 Ctrl+A,則會變成 Ctrl+Shift+A。
參數
您可以設定一些參數來控制 Auto Shift 的行為,請設定在
檔內:config.h
AUTO_SHIFT_TIMEOUT
設定按下狀態的觸發時間,單位是毫秒,每個人的習慣都不太一樣,通常會設定在 130 到 150 毫秒之間。預設值是 175,您可以從這個值開始試用鍵盤,然後依照自己的喜好調整這個值。範例:
#define AUTO_SHIFT_TIMEOUT 175
NO_AUTO_SHIFT_SPECIAL
設定後以下的按鍵不會啟用 Auto Shift
-_=+[{ ]};:'",<.>/?
範例:
#define NO_AUTO_SHIFT_SPECIAL
NO_AUTO_SHIFT_NUMERIC
設定後以下的按鍵不會啟用 Auto Shift
0 ~ 9
範例:
#define NO_AUTO_SHIFT_NUMBERIC
NO_AUTO_SHIFT_ALPHA
設定後以下的按鍵不會啟用 Auto Shift
A ~ Z
範例:
#define NO_AUTO_SHIFT_ALPHA
動態設定 Auto Shift
您可以用鍵盤直接控制 Auto Shift 的狀態,直接在 keymap 上面放置代碼即可:
鍵盤代碼 | 描述 |
KC_ASDN | 降低 AUTO_SHIFT_TIMEOUT 的值 |
KC_ASUP | 增加 AUTO_SHIFT_TIMEOUT 的值 |
KC_ASRP | 顯示 (打出) AUTO_SHIFT_TIMEOUT 的值 |
KC_ASON | 啟用 Auto Shift |
KC_ASOFF | 停止 |
KC_ASTG | 切換 |
測試適合你的 Auto Shift
測試適合你的 Auto Shift 極為重要,能讓您在使用機械鍵盤上打字的速度更快且更方便,請依照下列方式測試:
- 輸入多個英文單字
- 查看是否有大寫的單字出現
- 如果沒有大寫的單字出現,按下
來減低KC_ASDN
的值,然後回到步驟 1。AUTO_SHIFT_TIMEOUT
- 直到出現大寫字元,多測試幾次看是否需要增加按下狀態的時間。
- 要增加按下狀態時間,請按下
來增加時間,並且回到步驟 1 再測試一次。KC_ASUP
- 找到順手的時間後,請按下
,你的 AUTO_SHIFT_TIMEOUT 時間就會顯示在螢幕上 (就像你輸入到電腦一樣)。KC_ASRP
- 更新你
內的config.h
的值。AUTO_SHIFT_TIMEOUT
- 移除
內的config.h
。AUTO_SHIFT_SETUP
- 移除
、KC_ASDN
與KC_ASUP
這三個 KeyCode。KC_ASRP
- 重新燒錄你的韌體。