mirror of
https://github.com/bevyengine/bevy
synced 2024-12-30 15:03:23 +00:00
ea33fc04ab
# Objective Define a framework for handling keyboard focus and bubbled keyboard events, as discussed in #15374. ## Solution Introduces a new crate, `bevy_input_focus`. This crate provides: * A resource for tracking which entity has keyboard focus. * Methods for getting and setting keyboard focus. * Event definitions for triggering bubble-able keyboard input events to the focused entity. * A system for dispatching keyboard input events to the focused entity. This crate does *not* provide any integration with UI widgets, or provide functions for tab navigation or gamepad-based focus navigation, as those are typically application-specific. ## Testing Most of the code has been copied from a different project, one that has been well tested. However, most of what's in this module consists of type definitions, with relatively small amounts of executable code. That being said, I expect that there will be substantial bikeshedding on the design, and I would prefer to hold off writing tests until after things have settled. I think that an example would be appropriate, however I'm waiting on a few other pending changes to Bevy before doing so. In particular, I can see a simple example with four buttons, with focus navigation between them, and which can be triggered by the keyboard. @alice-i-cecile
25 lines
990 B
TOML
25 lines
990 B
TOML
[package]
|
|
name = "bevy_input_focus"
|
|
version = "0.15.0-dev"
|
|
edition = "2021"
|
|
description = "Keyboard focus management"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["bevy", "color"]
|
|
rust-version = "1.76.0"
|
|
|
|
[dependencies]
|
|
bevy_app = { path = "../bevy_app", version = "0.15.0-dev", default-features = false }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.15.0-dev", default-features = false }
|
|
bevy_input = { path = "../bevy_input", version = "0.15.0-dev", default-features = false }
|
|
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.15.0-dev", default-features = false }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.15.0-dev", default-features = false }
|
|
bevy_window = { path = "../bevy_window", version = "0.15.0-dev", default-features = false }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
|
|
all-features = true
|