Underglow
以下是配置键盘使用底部照明的步骤:
设置
必要的 Cargo 功能
您必须启用以下 rumcake
功能:
underglow
- 选择您想要使用的可用底部照明驱动程序之一的功能标志
storage
(可选,如果您想要保存背光设置)
必要的代码
要设置底部照明,您必须添加一个新的类型来实现特性。然后,您可以在您的 #[keyboard]
宏调用中添加 underglow(id = <type>, driver_setup_fn = <setup_fn>)
。您的新类型必须实现 UnderglowDevice
特性。
driver_setup_fn
必须是一个没有参数的异步函数,并返回一个实现 UnderglowDriver<T>
特性的类型。
use rumcake::keyboard;
#[keyboard( // 在您的键盘宏调用中的某处... underglow( id = MyKeyboardUnderglow, driver_setup_fn = my_underglow_setup, ))]struct MyKeyboard;
// 底部照明配置use rumcake::lighting::underglow::{UnderglowDevice, UnderglowDriver};struct MyKeyboardUnderglow; // 实现底部照明特性的新类型async fn my_underglow_setup() -> impl UnderglowDriver<MyKeyboardUnderglow> { // TODO: 我们很快会填写这部分! todo!()}impl UnderglowDevice for MyKeyboardUnderglow { // 必填项:设置 LED 的数量 const NUM_LEDS: usize = 20}
最后,您必须设置驱动程序。为此,您需要完成您的 driver_setup_fn
,构建驱动程序。
您可以检查您选择的驱动程序的 API 参考以查找设置函数或宏,以使此过程更加简单。
根据驱动程序的不同,您可能还需要在 #[keyboard]
宏中实现与您选择的驱动程序对应的适当特性。
查看可用底部照明驱动程序列表以获取此信息。
例如,对于 ws2812_bitbang
,您可以使用 setup_ws2812_bitbang!
宏来设置驱动程序:
// 在您的文件中的后面...
use rumcake::lighting::underglow::{UnderglowDevice, UnderglowDriver};use rumcake::drivers::ws2812_bitbang::setup_ws2812_bitbang;struct MyKeyboardUnderglow; // 新类型以实现底部照明特性async fn my_underglow_setup() -> impl UnderglowDriver<MyKeyboardUnderglow> { // TODO: 我们很快会填写这部分! todo!() setup_ws2812_bitbang! { pin: PA10 }}impl UnderglowDevice for MyKeyboardUnderglow { /* ... */ }
键值
在您的 Keyberon 布局中,您可以使用 UnderglowCommand
中定义的任何枚举成员:
Toggle,TurnOn,TurnOff,NextEffect,PrevEffect,SetEffect(UnderglowEffect),SetHue(u8),IncreaseHue(u8),DecreaseHue(u8),SetSaturation(u8),IncreaseSaturation(u8),DecreaseSaturation(u8),SetValue(u8),IncreaseValue(u8),DecreaseValue(u8),SetSpeed(u8),IncreaseSpeed(u8),DecreaseSpeed(u8),SaveConfig,// 通常在底部照明配置更改时在内部调用,仅在启用了 `storage` 时可用ResetTime,// 通常在分割键盘中用于同步 LED
在您的 KeyboardLayout
实现中,您必须通过实现 UnderglowDeviceType
来选择与按键码对应的底部照明系统。
使用示例:
use keyberon::action::Action::*;use rumcake::lighting::underglow::UnderglowCommand::*;use rumcake::keyboard::{build_layout, Keyboard, Keycode::*};
impl KeyboardLayout for MyKeyboard { /* ... */
build_layout! { { [ Escape {Custom(Underglow(Toggle))} A B C] } }
type UnderglowDeviceType = MyKeyboardUnderglow;}
可用驱动程序
名称 | 特性标志 | 必需特性 |
---|---|---|
WS2812 Bitbang | ws2812-bitbang | N/A |