鍵盤 API
鍵盤 API 提供了一些方法,用於處理連線到執行瀏覽器的裝置上的物理鍵盤。
它提供了多種功能。鍵盤對映 提供了一個介面,用於檢索特定物理鍵盤按鍵生成的字串,以便能正確地向用戶標識該按鍵。鍵盤鎖定 使網頁能夠捕獲通常由使用者代理或底層作業系統保留的按鍵。鍵盤 API 的預期用途是供網頁應用程式使用,例如遊戲或遠端訪問應用程式,這些應用程式提供全屏沉浸式體驗。
概念與用法
鍵盤對映
在物理鍵盤上,code 屬性包含被按下按鍵的物理位置,而 key 屬性包含在該物理位置按下按鍵生成的字串。key 值會考慮鍵盤的語言環境(例如,“en-US”)、佈局(例如,“QWERTY”)以及修飾鍵的狀態(Shift、Control 等)。歷史上,一直沒有辦法檢索到這些資訊。
鍵盤對映 API 提供了一種方式,透過 Keyboard 介面和 KeyboardLayoutMap 介面來檢索特定按鍵生成的字串。透過 navigator.keyboard 訪問 Keyboard 介面。 Keyboard 提供了 Keyboard.getLayoutMap 方法,該方法返回一個 Promise,解析後得到一個 KeyboardLayoutMap 物件,該物件包含用於將程式碼轉換為按鍵的成員。有效的程式碼值列表可在 UI Events KeyboardEvent code Values 規範的 書寫系統按鍵 部分找到。
以下示例演示瞭如何獲取在標準美式 QWERTY 鍵盤上標記為 W 的按鍵的位置相關或佈局相關的字串。
if (navigator.keyboard) {
const keyboard = navigator.keyboard;
keyboard.getLayoutMap().then((keyboardLayoutMap) => {
const upKey = keyboardLayoutMap.get("KeyW");
window.alert(`Press ${upKey} to move up.`);
});
} else {
// Do something else.
}
鍵盤鎖定
功能豐富的互動式網頁、遊戲和遠端流媒體體驗通常需要在全屏模式下訪問特殊按鍵和鍵盤快捷鍵。這類按鍵/按鍵組合的示例包括 Escape、Alt+Tab 和 Ctrl+N。這些按鍵和按鍵組合通常會被使用者代理或底層作業系統捕獲,如下例所示。
要捕獲 W、A、S 和 D 這幾個按鍵,請使用包含這些按鍵的鍵碼屬性值的列表呼叫 lock()。
navigator.keyboard.lock(["KeyW", "KeyA", "KeyS", "KeyD"]);
這將捕獲這些按鍵,無論按下時使用何種修飾鍵。假設使用標準的美國 QWERTY 佈局,註冊 KeyW 確保 W、Shift+W、Control+W、Control+Shift+W 以及所有其他與 W 組合的按鍵修飾符都會發送到應用程式。對於 KeyA、KeyS 和 KeyD 也是如此。
書寫系統按鍵
傳遞給 Keyboard.lock 的程式碼以及 KeyboardLayoutMap 介面的各種方法被稱為“書寫系統按鍵”。
“書寫系統按鍵”是在 UI Events KeyboardEvent code Values 規範的 書寫系統按鍵 部分定義的,因為物理按鍵的含義會根據當前語言環境和鍵盤佈局而變化。這些按鍵顯示在下方。藍色按鍵存在於所有標準鍵盤上,而綠色按鍵僅在某些鍵盤上可用。

介面
Keyboard實驗性-
提供檢索鍵盤佈局對映和切換物理鍵盤按鍵捕獲狀態的函式。
KeyboardLayoutMap實驗性-
一個類似 Map 的物件,包含用於檢索與特定物理按鍵關聯的字串的函式。
其他介面的擴充套件
-
返回一個
Keyboard物件,該物件提供對檢索鍵盤佈局對映和切換物理鍵盤按鍵捕獲狀態的函式的訪問。
規範
| 規範 |
|---|
| 鍵盤鎖定 |
| 鍵盤對映 |
瀏覽器相容性
api.Keyboard
載入中…
api.KeyboardLayoutMap
載入中…