8 Commits

Author SHA1 Message Date
Daniel Schaefer
8d8f9c7f6f fl16: Create ANSI Copilot as separate PID
It needs different firmware from the factory, so we need to distinguish
it from software in order to be able to update it correctly.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-08-01 17:08:09 +08:00
Daniel Schaefer
3c9f93321d fl16: use sleep_l pin to indicate only lid state
Let the keyboard figure out by itself whether the system is asleep by
looking at the USB connection state.

|            | USB Active      | USB Suspend     |
| Lid Open   | LED, keys       | No LED, keys    |
| Lid closed | No LED, no keys | No LED, no keys |

=> lid_open => keys registered
=> lid_open && !suspended => LEDs on

After waking from sleep, backlight does not turn back on.
Remove the custom backlight/sleep logic. Don't try to outsmart the core
quantum logic, let it handle the hard stuff. Our code just
suspends/wakes the keyboard.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-06-18 14:05:17 +08:00
Daniel Schaefer
bd39c5b060 fl16: Add KC_COPILOT
For Windows 11 24H2 Copilot computers.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-06-13 04:18:44 +08:00
Daniel Schaefer
05798c19c1 fl16: cleanup
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-11-30 09:09:33 +08:00
Daniel Schaefer
21fd6d199c fl16: Implement BIOS mode
When enabled, overrides whatever keyboard layout and always makes the
keys in the physical location of F2, F10 and F12 send the keycodes for
F2/F10/F12.
BIOS is supposed to enable this right after USB enumeration, so that the
BIOS hot keys always work, even if FN-lock is enabled or the user has
remapped their keyboard.
BIOS mode is exited either by the keyboard resetting or by sending the
disable message.

How to send:

1. Find USB devices with Framework VID 0x32AC
2. Filter by interface number == 0x01 and usage page == 0xFF60
3. Set HID report with the following body:

Enable:  0x00 0x0B 0x05 0x01 0xFE 0xFE ... pad the 32 byte buffer with 0xFE
Disable: 0x00 0x0B 0x05 0x00 0xFE 0xFE ... pad the 32 byte buffer with 0xFE
Where the first byte is the report ID 0x00

TODO:

- [ ] Test on ANSI keyboard
- [x] Test on ISO keyboard
- [ ] Test on JIS keyboard
- [ ] Add method to get current status

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-07-21 15:56:46 +08:00
Daniel Schaefer
ad0354f638 fl16: Rename gridpad to macropad
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-07-11 04:44:44 +08:00
Daniel Schaefer
a8269765d7 Implement persistent FN lock
Stays locked even through power-cycle.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-05-03 17:16:18 +08:00
Daniel Schaefer
966f2e7822 Rename lotus to framework
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-03-23 13:29:15 +08:00