Coder Social home page Coder Social logo

Comments (3)

danei avatar danei commented on September 23, 2024 1

@FabienFellay For grub, it sometimes requires toggling legacy USB support in BIOS/UEFI.
Grub itself checks boot class and protocol from descriptor when initializing usb keyboard, and aborts when mismatch:

if (usbdev->descdev.class != 0 
      || usbdev->descdev.subclass != 0 || usbdev->descdev.protocol != 0)
    return 0;

  if (usbdev->config[configno].interf[interfno].descif->subclass
      != USB_HID_BOOT_SUBCLASS
      || usbdev->config[configno].interf[interfno].descif->protocol
      != USB_HID_KBD_PROTOCOL)
    return 0;

The logic very likely differs from BIOS/UEFI. If grub hands over as is to OS, it's possible OS won't re-initialize usb keyboard again as grub has initialized it.
[edit]
Can you try OS detection & reset feature as described here? OS_DETECTION_ENABLE = yes and #define OS_DETECTION_KEYBOARD_RESET

from qmk_firmware.

FabienFellay avatar FabienFellay commented on September 23, 2024

I have now more hints about how to reproduce the issue.

I have 2 identical machines: one with Windows 10 only and one with a dual boot Windows 10 / Ubuntu. The above-described bug only affects the machine that has the dual boot. I don't know what causes the issue in the first place, but the dual boot machine may shortly pass through a transient (not really visible) bios-like menu that somehow makes the keyboard being stuck with keyboard_protocol to 0.

Can a QMK collaborator reproduce the issue based on those new elements (machines with dual-boot) ?

from qmk_firmware.

FabienFellay avatar FabienFellay commented on September 23, 2024

@danei Thank you very much! OS detection + reset feature helped: adding OS_DETECTION_ENABLE = yes in rules.mk and #define OS_DETECTION_KEYBOARD_RESET in my config.h just solved this issue.

Indeed, all my dual-boot machines that were impacted by this issue are now showing a keyboard_protocol to 1 right after the OS boots and NKRO is finally working directly without an additional manual reset.

I let a link to this issue in the issue #2248 (this might help some people).

Thank you! 👍

from qmk_firmware.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.