diff --git a/addons/web/static/src/core/hotkeys/hotkey_service.js b/addons/web/static/src/core/hotkeys/hotkey_service.js
index 81ae0cdbf064e4cade8cd3ec91ba15a9b99073f8..01dadc6b8893a72c79d38ec4ec11648608bb3417 100644
--- a/addons/web/static/src/core/hotkeys/hotkey_service.js
+++ b/addons/web/static/src/core/hotkeys/hotkey_service.js
@@ -55,6 +55,13 @@ export const hotkeyService = {
                 return;
             }
 
+            if (event.code && event.code.indexOf("Numpad") === 0 && /^\d$/.test(event.key)) {
+                // Ignore all number keys from the Keypad because of a certain input method
+                // of (advance-)ASCII characters on Windows OS: ALT+[numerical code from keypad]
+                // See https://support.microsoft.com/en-us/office/insert-ascii-or-unicode-latin-based-symbols-and-characters-d13f58d3-7bcb-44a7-a4d5-972ee12e50e0#bm1
+                return;
+            }
+
             const hotkey = getActiveHotkey(event);
 
             // Do not dispatch if UI is blocked
diff --git a/addons/web/static/tests/core/hotkeys/hotkey_service_tests.js b/addons/web/static/tests/core/hotkeys/hotkey_service_tests.js
index ce732b920a434b3d0e850478e54b59f3669792bd..93648e8e23153181a3cee35e224fdee98075672f 100644
--- a/addons/web/static/tests/core/hotkeys/hotkey_service_tests.js
+++ b/addons/web/static/tests/core/hotkeys/hotkey_service_tests.js
@@ -672,3 +672,22 @@ QUnit.test("protects editable elements: can bypassEditableProtection", async (as
         "the callback still gets called even if triggered from an editable"
     );
 });
+
+QUnit.test("ignore numpad keys", async (assert) => {
+    assert.expect(3);
+
+    const key = '1';
+
+    env.services.hotkey.add(`alt+${key}`, () => assert.step(key));
+    await nextTick();
+
+    let keydown = new KeyboardEvent("keydown", { key, code: "Numpad1", altKey: true });
+    window.dispatchEvent(keydown);
+    await nextTick();
+    assert.verifySteps([]);
+
+    keydown = new KeyboardEvent("keydown", { key: '&', code: "Digit1", altKey: true });
+    window.dispatchEvent(keydown);
+    await nextTick();
+    assert.verifySteps(['1']);
+});