freya_components/
integration.rs1use freya_core::{
2 integration::AppComponent,
3 prelude::*,
4};
5
6pub fn integration(app: AppComponent) -> impl IntoElement {
7 let platform = use_hook(Platform::get);
8
9 let on_global_key_down = move |e: Event<KeyboardEventData>| match e.key {
10 Key::Named(NamedKey::Tab) if e.modifiers == Modifiers::SHIFT => {
11 platform.send(UserEvent::FocusAccessibilityNode(
12 AccessibilityFocusStrategy::Backward(AccessibilityFocusMovement::OutsideGroup),
13 ));
14 }
15 Key::Named(NamedKey::Tab) if e.modifiers.is_empty() => {
16 platform.send(UserEvent::FocusAccessibilityNode(
17 AccessibilityFocusStrategy::Forward(AccessibilityFocusMovement::OutsideGroup),
18 ));
19 }
20 Key::Named(NamedKey::ArrowUp) if e.modifiers.is_empty() => {
21 platform.send(UserEvent::FocusAccessibilityNode(
22 AccessibilityFocusStrategy::Backward(AccessibilityFocusMovement::InsideGroup),
23 ));
24 }
25 Key::Named(NamedKey::ArrowDown) if e.modifiers.is_empty() => {
26 platform.send(UserEvent::FocusAccessibilityNode(
27 AccessibilityFocusStrategy::Forward(AccessibilityFocusMovement::InsideGroup),
28 ));
29 }
30 _ => {}
31 };
32
33 rect().on_global_key_down(on_global_key_down).child(app)
34}