diff --git a/addons/web/static/src/core/hotkeys/hotkey_service.js b/addons/web/static/src/core/hotkeys/hotkey_service.js
index 408d07ee9270b93cbdb76d08b4562aedd601a301..4ec4db1eadd2687d6a3b177e6ef3e81e4a191b8d 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);
             const { activeElement, isBlocked } = ui;
 
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 f40fc5cebe11f171ce350baf176d8af2a3bd9ed1..f058ff7e0e548a983528ebdde5c1b36486925622 100644
--- a/addons/web/static/tests/core/hotkeys/hotkey_service_tests.js
+++ b/addons/web/static/tests/core/hotkeys/hotkey_service_tests.js
@@ -697,3 +697,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']);
+});