Added support for OS lock key

This commit is contained in:
Christoffer Martinsson 2025-03-14 20:01:00 +01:00
parent 238316be6e
commit 8fdc02a640
3 changed files with 20 additions and 5 deletions

View File

@ -16,14 +16,14 @@
------------------- -------------------
Layer 1 (Fn)
--------------------------------------- ---------------------------------------
| Esc | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | BSpc |
| Esc | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | BSpc |
| LCtrl | 1! | 2"@ | 3#£ | 4¤$ | 5% | | 6& | 7/{ | 8([ | 9)] | 0=} | Enter |
| Shift | 6& | 7/{ | 8([ | 9)] | 0=} | | <>| | ´`± | '*´ | ¨^~ | +?\ | Shift |
--------------------| Alt | Fn | Spc | | BSpc| Fn |AG+Fn|--------------------
------------------- -------------------
Layer 2 (Fn + Fn)
--------------------------------------- ---------------------------------------
| Esc | F11 | F12 | F13 | F14 |PrSrc| | § | SLOK| Gui | | CpLk| BSpc |
| Esc | F11 | F12 | F13 | F14 |PrSrc| | § | SLk | Gui | OSLk| CpLk| BSpc |
| LCtrl | F15 | F16 | F17 | F18 | F19 | | Left| Down| Up |Right| Del | Enter |
| Shift | F20 | F21 | F22 | F23 | F24 | | Home| PgD | PgU | End | Ins | Shift |
--------------------| Alt | Fn | Spc | | BSpc| Fn |AG+Fn|--------------------
@ -78,7 +78,7 @@ Rust embedded, rp2040 HAL
```text
Layer 0
-------------------------------------- ------ ------ --------------------------------------
| Tab | Q | W | E | R | T || SLCK| |PrSrc|| Y | U | I | O | P | Å |
| Tab | Q | W | E | R | T || SLk | |PrSrc|| Y | U | I | O | P | Å |
| LCtrl | A | S | D | F | G || M2 | | M5 || H | J | K | L | Ö | Ä |
| Shift | Z | X | C | V | B || M3 |-----| M6 || N | M | ,; | .: | -_ | Shift |
--------------------| Alt | Fn | Spc || BSpc| Gui |Enter|| Spc | Fn |AG+Fn|--------------------
@ -92,7 +92,7 @@ Rust embedded, rp2040 HAL
------------------ ----------------- ------------------
Layer 2 (Fn + Fn)
-------------------------------------- ------ ------ --------------------------------------
| Esc | F11 | F12 | F13 | F14 | || M1 | | M4 || § | SLCK| | | CpLk| BSpc |
| Esc | F11 | F12 | F13 | F14 | || M1 | | M4 || § | SLk | | | CpLk| BSpc |
| LCtrl | F15 | F16 | F17 | F18 | F19 || M2 | | M5 || Left| Down| Up |Right| Del | Enter |
| Shift | F20 | F21 | F22 | F23 | F24 || M3 |-----| M6 || Home| PgD | PgU | End | Ins | Shift |
--------------------| Alt | Fn | Spc || BSpc| Gui |Enter|| Spc | Fn |AG+Fn|--------------------

View File

@ -39,6 +39,10 @@ pub const FN_BUTTONS: [u8; 3] = [40, 43, 44];
/// Sticky button [index, layer]
pub const STICKY_BUTTON: [u8; 2] = [7, 2];
/// OS Lock button [index, layer]
pub const OS_LOCK_BUTTON: [u8; 2] = [9, 2];
pub const OS_LOCK_BUTTON_KEYS: [Keyboard; 2] = [Keyboard::LeftGUI, Keyboard::L];
/// Button map to HID key (three Function layers)
pub const MAP: [[Keyboard; NUMBER_OF_KEYS]; 3] = [
[
@ -160,7 +164,7 @@ pub const MAP: [[Keyboard; NUMBER_OF_KEYS]; 3] = [
Keyboard::Grave, // 6 §
Keyboard::NoEventIndicated, // 7 STICKY lock
Keyboard::LeftGUI, // 8
Keyboard::NoEventIndicated, // 9
Keyboard::NoEventIndicated, // 9 OS Lock
Keyboard::CapsLock, // 10
Keyboard::DeleteForward, // 11
Keyboard::LeftControl, // 12

View File

@ -341,6 +341,17 @@ fn get_keyboard_report(
*sticky_key = Keyboard::NoEventIndicated;
}
// Check if OS Lock button is pressed (SET STICKY)
if key.pressed != key.previous_pressed
&& key.pressed
&& index as u8 == layout::OS_LOCK_BUTTON[0]
&& fn_mode == layout::OS_LOCK_BUTTON[1]
{
// Index 36, 37, 38, 45, 46, 47 are not used by any other keys
keyboard_report[36] = layout::OS_LOCK_BUTTON_KEYS[0];
keyboard_report[37] = layout::OS_LOCK_BUTTON_KEYS[1];
}
// Set fn mode for the pressed button
if key.pressed != key.previous_pressed && key.pressed {
key.fn_mode = fn_mode;