Skip to content

Commit e2e7b32

Browse files
committed
keyboard: Separate build per variant
``` > cargo run -p keyboard --features ansi > cargo run -p keyboard --features numpad > cargo run -p keyboard --features macropad ``` Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent 5dedf23 commit e2e7b32

File tree

3 files changed

+79
-56
lines changed

3 files changed

+79
-56
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

keyboard/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ fugit.workspace = true
3737
usbd-human-interface-device = "0.3.1"
3838
is31fl3741.workspace = true
3939

40+
cfg-if = "1.0.0"
41+
4042
[dependencies.fl16-inputmodules]
4143
path = "../fl16-inputmodules"
4244
features = ["keyboard"]

keyboard/src/main.rs

Lines changed: 76 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -367,19 +367,27 @@ fn main() -> ! {
367367

368368
let mut matrix = LedMatrix::new(i2c, DVT2_CALC_PIXEL);
369369

370-
matrix.set_address(0b0100000);
371-
matrix
372-
.setup(&mut delay)
373-
.expect("failed to setup RGB controller");
374-
matrix.set_scaling(0xFF).expect("failed to set scaling");
375-
matrix.device.fill(0xFF);
376-
377-
matrix.set_address(0b0100011);
378-
matrix
379-
.setup(&mut delay)
380-
.expect("failed to setup RGB controller");
381-
matrix.set_scaling(0xFF).expect("failed to set scaling");
382-
matrix.device.fill(0xFF);
370+
cfg_if::cfg_if! {
371+
if #[cfg(any(feature = "ansi", feature = "macropad"))] {
372+
matrix.set_address(0b0100000);
373+
matrix
374+
.setup(&mut delay)
375+
.expect("failed to setup RGB controller");
376+
matrix.set_scaling(0xFF).expect("failed to set scaling");
377+
matrix.device.fill(0xFF);
378+
}
379+
}
380+
381+
cfg_if::cfg_if! {
382+
if #[cfg(feature = "ansi")] {
383+
matrix.set_address(0b0100011);
384+
matrix
385+
.setup(&mut delay)
386+
.expect("failed to setup RGB controller");
387+
matrix.set_scaling(0xFF).expect("failed to set scaling");
388+
matrix.device.fill(0xFF);
389+
}
390+
}
383391

384392
let timer = Timer::new(pac.TIMER, &mut pac.RESETS);
385393
let mut scan_timer = timer.get_counter().ticks();
@@ -427,49 +435,61 @@ fn main() -> ! {
427435

428436
let mut keycode: Option<Keyboard> = None;
429437
if timer.get_counter().ticks() > scan_timer + 250_000 {
430-
let left = scanner.measure_key(6, 11);
431-
let up = scanner.measure_key(1, 13);
432-
let down = scanner.measure_key(1, 8);
433-
let right = scanner.measure_key(2, 15);
434-
let caps = scanner.measure_key(4, 4);
435-
436-
// let mut text: String<64> = String::new();
437-
// write!(
438-
// &mut text,
439-
// "L:{}.{:0>3}V, R:{}.{:0>3}V, U:{}.{:0>3}V, D:{}.{:0>3}V\r\n",
440-
// left.0, left.1, right.0, right.1, up.0, up.1, down.0, down.1
441-
// )
442-
// .unwrap();
443-
// let _ = serial.write(text.as_bytes());
444-
445-
let left_p = left.0 < 2 || (left.0 == 2 && left.1 < 290);
446-
let right_p = right.0 < 2 || (right.0 == 2 && right.1 < 290);
447-
let up_p = up.0 < 2 || (up.0 == 2 && up.1 < 290);
448-
let down_p = down.0 < 2 || (down.0 == 2 && down.1 < 290);
449-
let caps_p = caps.0 < 2 || (caps.0 == 2 && caps.1 < 290);
450-
451-
// let mut text: String<64> = String::new();
452-
// write!(
453-
// &mut text,
454-
// "L:{:5}, R:{:5}, U:{:5}, D:{:5}\r\n",
455-
// left_p, right_p, up_p, down_p
456-
// )
457-
// .unwrap();
458-
// let _ = serial.write(text.as_bytes());
459-
460-
if left_p {
461-
keycode = Some(Keyboard::LeftArrow);
462-
} else if right_p {
463-
keycode = Some(Keyboard::RightArrow);
464-
} else if up_p {
465-
keycode = Some(Keyboard::UpArrow);
466-
} else if down_p {
467-
keycode = None;
468-
rp2040_hal::rom_data::reset_to_usb_boot(0, 0);
469-
} else if caps_p {
470-
keycode = Some(Keyboard::CapsLock);
471-
} else {
472-
keycode = None;
438+
cfg_if::cfg_if! {
439+
if #[cfg(any(feature = "ansi", feature = "iso", feature = "jis"))] {
440+
let left = scanner.measure_key(6, 11);
441+
let up = scanner.measure_key(1, 13);
442+
let down = scanner.measure_key(1, 8);
443+
let right = scanner.measure_key(2, 15);
444+
let caps = scanner.measure_key(4, 4);
445+
446+
let left_p = left.0 < 2 || (left.0 == 2 && left.1 < 290);
447+
let right_p = right.0 < 2 || (right.0 == 2 && right.1 < 290);
448+
let up_p = up.0 < 2 || (up.0 == 2 && up.1 < 290);
449+
let down_p = down.0 < 2 || (down.0 == 2 && down.1 < 290);
450+
let caps_p = caps.0 < 2 || (caps.0 == 2 && caps.1 < 290);
451+
452+
if left_p {
453+
keycode = Some(Keyboard::LeftArrow);
454+
} else if right_p {
455+
keycode = Some(Keyboard::RightArrow);
456+
} else if up_p {
457+
keycode = Some(Keyboard::UpArrow);
458+
} else if down_p {
459+
keycode = None;
460+
rp2040_hal::rom_data::reset_to_usb_boot(0, 0);
461+
} else if caps_p {
462+
keycode = Some(Keyboard::CapsLock);
463+
} else {
464+
keycode = None;
465+
}
466+
}
467+
}
468+
469+
cfg_if::cfg_if! {
470+
if #[cfg(any(feature = "numapd", feature = "macropad"))] {
471+
let one = scanner.measure_key(0, 3);
472+
let two = scanner.measure_key(0, 7);
473+
let three = scanner.measure_key(1, 4);
474+
let four = scanner.measure_key(2, 6);
475+
476+
let one_p = one.0 < 2 || (one.0 == 2 && one.1 < 290);
477+
let two_p = two.0 < 2 || (two.0 == 2 && two.1 < 290);
478+
let three_p = three.0 < 2 || (three.0 == 2 && three.1 < 290);
479+
let four_p = four.0 < 2 || (four.0 == 2 && four.1 < 290);
480+
481+
if one_p {
482+
keycode = Some(Keyboard::Keyboard1);
483+
} else if two_p {
484+
keycode = Some(Keyboard::Keyboard2);
485+
} else if three_p {
486+
keycode = Some(Keyboard::Keyboard3);
487+
} else if four_p {
488+
keycode = Some(Keyboard::Keyboard4);
489+
} else {
490+
keycode = None;
491+
}
492+
}
473493
}
474494

475495
scan_timer = timer.get_counter().ticks();

0 commit comments

Comments
 (0)