◆ F1 や Ctrl-H などは最初からハンドルできる
  ◆ keydown イベントを preventDefault することでデフォルト挙動をキャンセルできる
◆ フルスクリーンにすると Ctrl-T や Alt-F4 もハンドルできるようになる
◆ フルスクリーン(JavaScript) 状態でキーボードロックをすると Windows キーや Escape キーもハンドルできるようになる

ブラウザにはデフォルトでキーボードショートカットが設定されています
例えば F1 キーはヘルプが開きますね

基本

ほとんどのキーは keydown イベントでハンドルできます
ブラウザデフォルトの処理があっても event.preventDefault を呼び出せばキャンセルできるものもあります
Fn キーや Ctrl-A, Ctrl-S, Ctrl-H, Ctrl-P, Ctrl-Q などはキャンセルできます

window.addEventListener("keydown", (event) => {
event.preventDefault()
console.log("key:", event.key)
})

キーボードロック

多くのキーは上の方法でハンドルできましたが Ctrl-T, Ctrl-W, Alt-F4, Win-D などはできません
本来の挙動が優先されます

ですがこれらもハンドルできるようにする キーボードロック機能があります
https://developer.mozilla.org/en-US/docs/Web/API/Keyboard/lock

navigator.keyboard.lock()

これだけです

ですが やってみても効果がありません
エラーは起きていないです

調べてみると 仕様の方ではフルスクリーンのときのみ効果があると書かれています
https://wicg.github.io/keyboard-lock/#handling-keyboard-events

MDN の方はページ内にフルスクリーンの文字が全く無いです
仕様に変更があったのかもですが 紛らわしいです

使えるのがフルスクリーン時のみだと使用シーンが限られてきます
ゲームみたいなところ向けみたいです

ちなみにフルスクリーンにすると キーボードロックは何もしなくても Ctrl-T や Alt-F4 などはハンドル可能になります
キャンセルして別のショートカット機能を作ることができます
ただし Win-D や Win-X や Win-Shift-S などの Windows キーを使う組み合わせや Esc キーはハンドルできず 本来の動作が優先されます

これらもハンドルしたい場合にはキーボードロックを使います
ただし Ctrl-Alt-Del みたいな特殊なものはハンドル不可能です

またフルスクリーンは F11 キーやブラウザのメニューから切り替えるものと JavaScript の機能で切り替えるものは別扱いらしく キーボードロックで要求されるフルスクリーンは JavaScript の機能で切り替える方です
ブラウザ機能からフルスクリーンにしても Windows キーはハンドルできず本来の挙動になります

DEMO

実際に動かして試せるページを作りました
navigator.keyboard は https を要求するので 外部のページです
一応ソースコードはページ内で見れるようにしてます

keydown ですべてのキーのデフォルトの動作をキャンセルして ログするようにしています
フルスクリーンとキーボードロックはボタンで切り替えできるようにしています

DEMO

<!doctype html>
<meta charset="utf-8" />

<script type="module">
const addLog = (key) => {
const div = document.createElement("div")
div.textContent = `key: ${key}`
setTimeout(() => {
div.animate([
{ height: div.clientHeight + "px" },
{ height: "0" },
], 300).finished.then(() => div.remove())
}, 5000)
log.prepend(div)
}

window.addEventListener("keydown", (event) => {
event.preventDefault()
console.log("key:", event.key)
addLog(event.key)
})

fullscreen.onclick = async () => {
if (document.fullscreenElement) {
await document.exitFullscreen()
} else {
await document.documentElement.requestFullscreen()
}
}

document.addEventListener("fullscreenchange", () => {
if (document.fullscreenElement) {
fullscreen.classList.add("on")
} else {
fullscreen.classList.remove("on")
}
})

keyboardlock.onclick = async () => {
if (keyboardlock.classList.contains("on")) {
await navigator.keyboard.unlock()
keyboardlock.classList.remove("on")
} else {
await navigator.keyboard.lock()
keyboardlock.classList.add("on")
}
}
</script>

<style>
body {
width: 80%;
margin: auto;
display: flex;
flex-flow: column;
padding: 20px;
gap: 20px;
}

button {
padding: 10px;

&.on {
background: yellow;
}
}

#notice {
border: 1px dotted #5aa;
background: #dff;
padding: 10px;
}

#log > div {
font-size: 11px;
overflow: hidden;
}
</style>

<button id="fullscreen">フルスクリーン</button>
<button id="keyboardlock">キーボードロック</button>

<div id="notice">キーボードロック時のフルスクリーンの解除は Escape キーの長押し</div>

<div id="log"></div>