diff --git a/rog-anime/src/data.rs b/rog-anime/src/data.rs index ebeea3c1..9dab8816 100644 --- a/rog-anime/src/data.rs +++ b/rog-anime/src/data.rs @@ -63,6 +63,7 @@ pub enum AnimeType { GA401, GA402, GU604, + G635L, #[default] Unsupported, } @@ -75,6 +76,7 @@ impl FromStr for AnimeType { "ga401" | "GA401" => Self::GA401, "ga402" | "GA402" => Self::GA402, "gu604" | "GU604" => Self::GU604, + "g635L" | "G635L" => Self::G635L, _ => Self::Unsupported, }) } @@ -89,6 +91,8 @@ impl AnimeType { AnimeType::GA402 } else if board_name.contains("GU604V") { AnimeType::GU604 + } else if board_name.contains("G635L") || board_name.contains("G635L") { + AnimeType::G635L } else { AnimeType::Unsupported } @@ -180,7 +184,9 @@ impl TryFrom for AnimePacketType { let mut buffers = match anime.anime { AnimeType::GA401 => vec![[0; 640]; 2], - AnimeType::GA402 | AnimeType::GU604 | AnimeType::Unsupported => vec![[0; 640]; 3], + AnimeType::GA402 | AnimeType::GU604 | AnimeType::G635L | AnimeType::Unsupported => { + vec![[0; 640]; 3] + } }; for (idx, chunk) in anime.data.as_slice().chunks(PANE_LEN).enumerate() { diff --git a/rog-anime/src/usb.rs b/rog-anime/src/usb.rs index fcf9fe0d..c413d8c9 100644 --- a/rog-anime/src/usb.rs +++ b/rog-anime/src/usb.rs @@ -251,6 +251,8 @@ pub fn get_anime_type() -> AnimeType { AnimeType::GA402 } else if board_name.contains("GU604V") { AnimeType::GU604 + } else if board_name.contains("G635L") { + AnimeType::G635L } else { AnimeType::Unsupported } diff --git a/rog-aura/data/aura_support.ron b/rog-aura/data/aura_support.ron index 37d0ad33..9ef1bee9 100644 --- a/rog-aura/data/aura_support.ron +++ b/rog-aura/data/aura_support.ron @@ -305,6 +305,15 @@ advanced_type: PerKey, power_zones: [Keyboard, Lightbar, Logo, RearGlow], ), + ( + device_name: "G635L", + product_id: "", + layout_name: "g635l-per-key", + basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Pulse, Comet, Flash], + basic_zones: [], + advanced_type: PerKey, + power_zones: [Keyboard, Lightbar, Logo], + ), ( device_name: "G712LI", product_id: "", diff --git a/rog-aura/data/layouts/g635l-per-key_US.ron b/rog-aura/data/layouts/g635l-per-key_US.ron new file mode 100644 index 00000000..652239e3 --- /dev/null +++ b/rog-aura/data/layouts/g635l-per-key_US.ron @@ -0,0 +1,375 @@ +( + locale: "US", + key_shapes: { + "regular": Led( + width: 1.0, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "regular_spacing": Blank( + width: 1.2, + height: 0.0, + ), + "rog_row": Led( + width: 1.0, + height: 0.7, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.6, + ), + "rog_row_blocking": Blank( + width: 1.2, + height: 0.0, + ), + "func_space": Blank( + width: 0.6, + height: 0.0, + ), + "backspace": Led( + width: 2.2, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "tab": Led( + width: 1.6, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "backslash": Led( + width: 1.6, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "capsplonk": Led( + width: 2.0, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "return": Led( + width: 2.4, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "lshift": Led( + width: 2.6, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "rshift": Led( + width: 3.0, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "lctrl": Led( + width: 1.4, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "spacebar": Led( + width: 5.8, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "rctrl": Led( + width: 1.2, + height: 1.0, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "up_arrow": Led( + width: 0.8, + height: 0.8, + pad_left: 1.1, + pad_right: 1.1, + pad_top: 0.1, + pad_bottom: 0.1, + ), + "arrows_spacer": Blank( + width: 15.0, + height: 0.0, + ), + "arrows": Led( + width: 0.8, + height: 0.8, + pad_left: 0.1, + pad_right: 0.1, + pad_top: -0.1, + pad_bottom: 0.1, + ), + "row_end_spacing": Blank( + width: 0.4, + height: 0.0, + ), + "lid_logo": Led( + width: 2.6, + height: 1.2, + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.8, + pad_bottom: 0.0, + ), + "lightbar_left": Led( + width: 0.6, + height: 3.6, + pad_left: -1.2, + pad_right: 0.2, + pad_top: -3.0, + pad_bottom: 0.3, + ), + "lightbar_corner_left": Led( + width: 0.8, + height: 0.6, + pad_left: -0.6, + pad_right: 0.2, + pad_top: 0.8, + pad_bottom: 0.0, + ), + "lightbar_bottom": Led( + width: 12.6, + height: 0.5, + pad_left: -0.1, + pad_right: -0.1, + pad_top: 0.8, + pad_bottom: 0.0, + ), + "lightbar_corner_right": Led( + width: 0.8, + height: 0.6, + pad_left: 0.0, + pad_right: 0.2, + pad_top: 0.8, + pad_bottom: 0.0, + ), + "lightbar_right": Led( + width: 0.6, + height: 3.6, + pad_left: -0.8, + pad_right: 0.2, + pad_top: -3.0, + pad_bottom: 0.3, + ), + }, + key_rows: [ + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (Blocking, "rog_row_blocking"), + (Blocking, "rog_row_blocking"), + (VolDown, "rog_row"), + (VolUp, "rog_row"), + (MicMute, "rog_row"), + (RogFan, "rog_row"), + (RogApp, "rog_row"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (Esc, "regular"), + (Spacing, "regular_spacing"), + (F1, "regular"), + (F2, "regular"), + (F3, "regular"), + (F4, "regular"), + (Spacing, "func_space"), + (F5, "regular"), + (F6, "regular"), + (F7, "regular"), + (F8, "regular"), + (Spacing, "func_space"), + (F9, "regular"), + (F10, "regular"), + (F11, "regular"), + (F12, "regular"), + (Spacing, "row_end_spacing"), + (Del, "regular"), // Should be super/insert + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (Tilde, "regular"), + (N1, "regular"), + (N2, "regular"), + (N3, "regular"), + (N4, "regular"), + (N5, "regular"), + (N6, "regular"), + (N7, "regular"), + (N8, "regular"), + (N9, "regular"), + (N0, "regular"), + (Hyphen, "regular"), + (Equals, "regular"), + (Backspace, "backspace"), + (Spacing, "row_end_spacing"), + (MediaPlay, "regular"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (Tab, "tab"), + (Q, "regular"), + (W, "regular"), + (E, "regular"), + (R, "regular"), + (T, "regular"), + (Y, "regular"), + (U, "regular"), + (I, "regular"), + (O, "regular"), + (P, "regular"), + (LBracket, "regular"), + (RBracket, "regular"), + (BackSlash, "backslash"), + (Spacing, "row_end_spacing"), + (MediaStop, "regular"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (Caps, "capsplonk"), + (A, "regular"), + (S, "regular"), + (D, "regular"), + (F, "regular"), + (G, "regular"), + (H, "regular"), + (J, "regular"), + (K, "regular"), + (L, "regular"), + (SemiColon, "regular"), + (Quote, "regular"), + (Return, "return"), + (Spacing, "row_end_spacing"), + (MediaNext, "regular"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (LShift, "lshift"), + (Z, "regular"), + (X, "regular"), + (C, "regular"), + (V, "regular"), + (B, "regular"), + (N, "regular"), + (M, "regular"), + (Comma, "regular"), + (Period, "regular"), + (FwdSlash, "regular"), + (Rshift, "rshift"), + (Spacing, "row_end_spacing"), + (MediaPrev, "regular"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (LCtrl, "lctrl"), + (LFn, "regular"), + (Meta, "regular"), + (LAlt, "regular"), + (Spacebar, "spacebar"), + (RAlt, "regular"), + (PrtSc, "regular"), + (RCtrl, "rctrl"), + (Up, "up_arrow"), + (Spacing, "row_end_spacing"), + (PrtSc, "regular"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (Spacing, "arrows_spacer"), + (Left, "arrows"), + (Down, "arrows"), + (Right, "arrows"), + ], + ), + ( + pad_left: 6.5, + pad_right: 6.5, + pad_top: 0.2, + pad_bottom: 0.1, + row: [ + (LidLogo, "lid_logo"), + ], + ), + ( + pad_left: 0.1, + pad_right: 0.1, + pad_top: 0.1, + pad_bottom: 0.1, + row: [ + (LightbarLeft, "lightbar_left"), + (LightbarLeftCorner, "lightbar_corner_left"), + (LightbarLeftBottom, "lightbar_bottom"), + (LightbarRightBottom, "lightbar_bottom"), + (LightbarRightCorner, "lightbar_corner_right"), + (LightbarRight, "lightbar_right"), + ], + ), + ], +) diff --git a/simulators/src/animatrix/mod.rs b/simulators/src/animatrix/mod.rs index 22be55d9..e94d4455 100644 --- a/simulators/src/animatrix/mod.rs +++ b/simulators/src/animatrix/mod.rs @@ -43,7 +43,7 @@ impl AniMatrix { vertical: 2, horizontal: 5, }, - AnimeType::GA402 | AnimeType::Unsupported => LedShape { + AnimeType::GA402 | AnimeType::G635L | AnimeType::Unsupported => LedShape { vertical: 2, horizontal: 5, }, @@ -56,7 +56,7 @@ impl AniMatrix { // Do a hard mapping of each (derived from wireshardk captures) let rows = match model { AnimeType::GA401 => GA401.to_vec(), - AnimeType::GA402 | AnimeType::Unsupported => GA402.to_vec(), + AnimeType::GA402 | AnimeType::G635L | AnimeType::Unsupported => GA402.to_vec(), AnimeType::GU604 => GU604.to_vec(), };