@@ -35,6 +35,7 @@ use crate::chromium_ec;
3535use crate :: chromium_ec:: commands:: DeckStateMode ;
3636use crate :: chromium_ec:: commands:: FpLedBrightnessLevel ;
3737use crate :: chromium_ec:: commands:: RebootEcCmd ;
38+ use crate :: chromium_ec:: commands:: RgbS ;
3839use crate :: chromium_ec:: commands:: TabletModeOverride ;
3940use crate :: chromium_ec:: EcResponseStatus ;
4041use crate :: chromium_ec:: { print_err, EcFlashType } ;
@@ -166,6 +167,7 @@ pub struct Cli {
166167 pub fp_led_level : Option < Option < FpBrightnessArg > > ,
167168 pub fp_brightness : Option < Option < u8 > > ,
168169 pub kblight : Option < Option < u8 > > ,
170+ pub rgbkbd : Vec < u64 > ,
169171 pub tablet_mode : Option < TabletModeArg > ,
170172 pub console : Option < ConsoleArg > ,
171173 pub reboot_ec : Option < RebootEcArg > ,
@@ -753,6 +755,21 @@ pub fn run_with_args(args: &Cli, _allupdate: bool) -> i32 {
753755 } else if let Some ( Some ( kblight) ) = args. kblight {
754756 assert ! ( kblight <= 100 ) ;
755757 ec. set_keyboard_backlight ( kblight) ;
758+ } else if !args. rgbkbd . is_empty ( ) {
759+ if args. rgbkbd . len ( ) < 2 {
760+ println ! (
761+ "Must provide at least 2 arguments. Provided only: {}" ,
762+ args. rgbkbd. len( )
763+ ) ;
764+ } else {
765+ let start_key = args. rgbkbd [ 0 ] as u8 ;
766+ let colors = args. rgbkbd [ 1 ..] . iter ( ) . map ( |color| RgbS {
767+ r : ( ( color & 0x00FF0000 ) >> 16 ) as u8 ,
768+ g : ( ( color & 0x0000FF00 ) >> 8 ) as u8 ,
769+ b : ( color & 0x000000FF ) as u8 ,
770+ } ) ;
771+ ec. rgbkbd_set_color ( start_key, colors. collect ( ) ) . unwrap ( ) ;
772+ }
756773 } else if let Some ( None ) = args. kblight {
757774 print ! ( "Keyboard backlight: " ) ;
758775 if let Some ( percentage) = print_err ( ec. get_keyboard_backlight ( ) ) {
0 commit comments