是否可以在 Sublime Text 3 的鍵綁定中使用哈希(#、磅)鍵?

是否可以在 Sublime Text 3 的鍵綁定中使用哈希(#、磅)鍵?

在英國鍵盤上,井號符號(#,在其他地方也稱為井號)有自己的按鍵(上面有波形符號)。

大概是因為它不是美國鍵盤上的標準鍵,所以它沒有列在文檔中命名鍵的列表用於自訂擊鍵。

創建自訂鍵綁定時有沒有辦法引用它?

答案1

對您問題的簡短回答是,這是可能的,但由於您的鍵盤佈局和/或您可能沒有想到的邏輯“打嗝”,您需要的綁定可能不是您所期望的Sublime 映射鍵。

不過,解釋其原因以及如何確定該(或任何其他)鍵的綁定需要是什麼樣子會更複雜一些。

一般來說,Sublime 使用掃描代碼來確定您按下的按鍵。掃描碼是基於鍵盤上按鍵的位置,而不是它們實際建立的字元。

這樣做的結果是,Sublime 會看到您按下的按鍵就像在美式鍵盤上一樣,即使它們不是美式鍵盤;您在問題中提到的清單中的鍵列表假定採用標準美國鍵盤佈局。

為了診斷按鍵綁定問題或查看 Sublime 如何讀取您的輸入,您可以透過從View > Show Console選單開啟 Sublime 控制台並輸入以下命令來開啟輸入日誌記錄:

sublime.log_input(True)

開啟輸入日誌記錄後,Sublime 將在控制台中報告有關其看到的每個輸入事件的訊息。輸入日誌記錄將一直有效,直到您使用 Sublime 執行相同的命令False或重新啟動 Sublime。

您通常會看到以下內容之一:

  • chr evt: #,這告訴您您按了特點
  • key evt: backspace,這告訴您您按了鑰匙
  • key evt後跟chr evt,這意味著您按下的鍵類似於死鑰匙這是試圖為一個字元添加一個變音符號。
  • 如果按鍵真的死了或 Sublime 以外的某些東西(例如作業系統)在 Sublime 有機會看到它之​​前就吃掉了鍵盤事件,則什麼也不做

若要將鍵綁定到報告chr事件的內容,您的對應應僅包含以下字元:

{ "keys": ["#"], "command": "echo"},

若要綁定作為事件報告的鍵key,您可以使用事件中報告的鍵,包括任何修飾符(control同樣有效ctrl):

{ "keys": ["backspace"], "command": "echo"},

話雖如此,輸入日誌報告可能並不總是您最初期望的那樣,這是您原始問題的評論中提到的項目之一。

生成字元的按鍵組合被報告為chr事件,這意味著它們考慮了換檔狀態。不產生字元的鍵將報告為key事件,並包括修飾符和被按下的鍵

強調這一點是因為它可能不是您最初所期望的。

舉例來說,在美國鍵盤佈局上,#共享3一個按鍵,並且#是該鍵的移位版本。

因此:

  • 3:chr evt: 3 (0x33)
  • shift+3:chr evt: # (0x23)

這是合乎邏輯的;單獨按下該3鍵會得到一個文字3,而使用shift會得到一個雜湊字元。

但請注意以下事項:

  • Ctrl+3:key evt: control+3
  • Ctrl+#:key evt: control+3
  • Ctrl+Shift+3:shift+control+3

那是;為了獲得#角色,我需要按 Shift 鍵,但報告的按鍵事件是針對該3鍵的,因為這確實是我按下的鍵。

相關內容