@@ -35,6 +35,7 @@ use crate::chromium_ec;
35
35
use crate :: chromium_ec:: commands:: DeckStateMode ;
36
36
use crate :: chromium_ec:: commands:: FpLedBrightnessLevel ;
37
37
use crate :: chromium_ec:: commands:: RebootEcCmd ;
38
+ use crate :: chromium_ec:: commands:: RgbS ;
38
39
use crate :: chromium_ec:: commands:: TabletModeOverride ;
39
40
use crate :: chromium_ec:: EcResponseStatus ;
40
41
use crate :: chromium_ec:: { print_err, EcFlashType } ;
@@ -166,6 +167,7 @@ pub struct Cli {
166
167
pub fp_led_level : Option < Option < FpBrightnessArg > > ,
167
168
pub fp_brightness : Option < Option < u8 > > ,
168
169
pub kblight : Option < Option < u8 > > ,
170
+ pub rgbkbd : Vec < u64 > ,
169
171
pub tablet_mode : Option < TabletModeArg > ,
170
172
pub console : Option < ConsoleArg > ,
171
173
pub reboot_ec : Option < RebootEcArg > ,
@@ -753,6 +755,21 @@ pub fn run_with_args(args: &Cli, _allupdate: bool) -> i32 {
753
755
} else if let Some ( Some ( kblight) ) = args. kblight {
754
756
assert ! ( kblight <= 100 ) ;
755
757
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
+ }
756
773
} else if let Some ( None ) = args. kblight {
757
774
print ! ( "Keyboard backlight: " ) ;
758
775
if let Some ( percentage) = print_err ( ec. get_keyboard_backlight ( ) ) {
0 commit comments