fbpx

QMK 的 Auto shift 功能

如果您有使用 QMK 系列的機械鍵盤,可以啟用 Auto Shift 的功能。

Auto Shift

當你按下一個按鍵,就會得到一個符號; 但當你長按同樣的鍵時,鍵盤就會自動進入 Shift 狀態,所以你就不需要 Shift 鍵了!

Auto Shift 就是長按某一個按鍵,鍵盤就會自動進入 Shift 狀態。所以你只要定義某一個平常不會長按的按鍵為 Auto Shift,長按時,就會等於 Shift 的效果。

為什麼要 Auto Shift

因為 Shift 通常都放置在小指的位置,所以你需要長時間重複伸展小指,其實傷害很大,我們常常在切換大小寫或輸入法的時候這樣拉長小指,Auto Shift 可以解決這個問題。

如何使用 Auto Shift

當你按下按鍵時,同常都會很快速的放開按鍵,就會有一個短時間的按下狀態。每一個人的按下狀態時間都不太一樣。Auth Shift 會定義一個 AUTO_SHIFT_TIMEOUT 的值,通常是按下狀態時間的兩倍。當你按下某個鍵時,會啟動一個計時器,在你釋放按鍵時,計時器會停止,如果按下狀態的時間小於 AUTO_SHIFT_TIMEOUT 則會送出一般鍵盤,若時間大於或等於 AUTO_SHIFT_TIMEOUT 則會發出 Shift 鍵的狀態。

舉例來說,如果你設定時間是 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停止 Auto Shift
KC_ASTG切換 Auto Shift 的狀態

測試適合你的 Auto Shift

測試適合你的 Auto Shift 極為重要,能讓您在使用機械鍵盤上打字的速度更快且更方便,請依照下列方式測試:

  1. 輸入多個英文單字
  2. 查看是否有大寫的單字出現
  3. 如果沒有大寫的單字出現,按下 KC_ASDN來減低 AUTO_SHIFT_TIMEOUT 的值,然後回到步驟 1。
  4. 直到出現大寫字元,多測試幾次看是否需要增加按下狀態的時間。
  5. 要增加按下狀態時間,請按下 KC_ASUP來增加時間,並且回到步驟 1 再測試一次。
  6. 找到順手的時間後,請按下 KC_ASRP ,你的 AUTO_SHIFT_TIMEOUT 時間就會顯示在螢幕上 (就像你輸入到電腦一樣)。
  7. 更新你 config.h 內的 AUTO_SHIFT_TIMEOUT 的值。
  8. 移除 config.h 內的 AUTO_SHIFT_SETUP
  9. 移除 KC_ASDNKC_ASUPKC_ASRP這三個 KeyCode。
  10. 重新燒錄你的韌體
Show CommentsClose Comments

Leave a comment