Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename KeyCode to PhysicalKey #11692

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions crates/bevy_input/src/common_conditions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ use std::hash::Hash;
/// ```no_run
/// # use bevy_app::{App, NoopPluginGroup as DefaultPlugins, Update};
/// # use bevy_ecs::prelude::IntoSystemConfigs;
/// # use bevy_input::{common_conditions::input_toggle_active, prelude::KeyCode};
/// # use bevy_input::{common_conditions::input_toggle_active, prelude::PhysicalKey};
///
/// fn main() {
/// App::new()
/// .add_plugins(DefaultPlugins)
/// .add_systems(Update, pause_menu.run_if(input_toggle_active(false, KeyCode::Escape)))
/// .add_systems(Update, pause_menu.run_if(input_toggle_active(false, PhysicalKey::Escape)))
/// .run();
/// }
///
Expand All @@ -26,7 +26,7 @@ use std::hash::Hash;
/// ```no_run
/// # use bevy_app::{App, NoopPluginGroup as DefaultPlugins, Update};
/// # use bevy_ecs::prelude::{IntoSystemConfigs, Res, ResMut, Resource};
/// # use bevy_input::{common_conditions::input_just_pressed, prelude::KeyCode};
/// # use bevy_input::{common_conditions::input_just_pressed, prelude::PhysicalKey};
///
/// #[derive(Resource, Default)]
/// struct Paused(bool);
Expand All @@ -35,7 +35,7 @@ use std::hash::Hash;
/// App::new()
/// .add_plugins(DefaultPlugins)
/// .init_resource::<Paused>()
/// .add_systems(Update, toggle_pause_state.run_if(input_just_pressed(KeyCode::Escape)))
/// .add_systems(Update, toggle_pause_state.run_if(input_just_pressed(PhysicalKey::Escape)))
/// .add_systems(Update, pause_menu.run_if(|paused: Res<Paused>| paused.0))
/// .run();
/// }
Expand Down Expand Up @@ -76,11 +76,11 @@ where
/// ```no_run
/// # use bevy_app::{App, NoopPluginGroup as DefaultPlugins, Update};
/// # use bevy_ecs::prelude::IntoSystemConfigs;
/// # use bevy_input::{common_conditions::input_just_pressed, prelude::KeyCode};
/// # use bevy_input::{common_conditions::input_just_pressed, prelude::PhysicalKey};
/// fn main() {
/// App::new()
/// .add_plugins(DefaultPlugins)
/// .add_systems(Update, jump.run_if(input_just_pressed(KeyCode::Space)))
/// .add_systems(Update, jump.run_if(input_just_pressed(PhysicalKey::Space)))
/// .run();
/// }
///
Expand All @@ -104,7 +104,7 @@ where
#[cfg(test)]
mod tests {
use super::*;
use crate::prelude::KeyCode;
use crate::prelude::PhysicalKey;
use bevy_ecs::schedule::{IntoSystemConfigs, Schedule};

fn test_system() {}
Expand All @@ -114,10 +114,10 @@ mod tests {
fn distributive_run_if_compiles() {
Schedule::default().add_systems(
(test_system, test_system)
.distributive_run_if(input_toggle_active(false, KeyCode::Escape))
.distributive_run_if(input_pressed(KeyCode::Escape))
.distributive_run_if(input_just_pressed(KeyCode::Escape))
.distributive_run_if(input_just_released(KeyCode::Escape)),
.distributive_run_if(input_toggle_active(false, PhysicalKey::Escape))
.distributive_run_if(input_pressed(PhysicalKey::Escape))
.distributive_run_if(input_just_pressed(PhysicalKey::Escape))
.distributive_run_if(input_just_released(PhysicalKey::Escape)),
);
}
}
26 changes: 13 additions & 13 deletions crates/bevy_input/src/keyboard.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
//! The keyboard input functionality.

// This file contains a substantial portion of the UI Events Specification by the W3C. In
// particular, the variant names within `KeyCode` and their documentation are modified
// particular, the variant names within `PhysicalKey` and their documentation are modified
// versions of contents of the aforementioned specification.
//
// The original documents are:
//
//
// ### For `KeyCode`
// ### For `PhysicalKey`
// UI Events KeyboardEvent code Values
// https://www.w3.org/TR/2017/CR-uievents-code-20170601/
// Copyright © 2017 W3C® (MIT, ERCIM, Keio, Beihang).
//
// These documents were used under the terms of the following license. This W3C license as well as
// the W3C short notice apply to the `KeyCode` enums and their variants and the
// the W3C short notice apply to the `PhysicalKey` enums and their variants and the
// documentation attached to their variants.

// --------- BEGGINING OF W3C LICENSE --------------------------------------------------------------
Expand Down Expand Up @@ -86,7 +86,7 @@ use bevy_reflect::{ReflectDeserialize, ReflectSerialize};
/// ## Usage
///
/// The event is consumed inside of the [`keyboard_input_system`]
/// to update the [`Input<KeyCode>`](ButtonInput<KeyCode>) resource.
/// to update the [`Input<PhysicalKey>`](ButtonInput<PhysicalKey>) resource.
#[derive(Event, Debug, Clone, PartialEq, Eq, Reflect)]
#[reflect(Debug, PartialEq)]
#[cfg_attr(
Expand All @@ -96,7 +96,7 @@ use bevy_reflect::{ReflectDeserialize, ReflectSerialize};
)]
pub struct KeyboardInput {
/// The physical key code of the key.
pub key_code: KeyCode,
pub key_code: PhysicalKey,
/// The logical key of the input
pub logical_key: Key,
/// The press state of the key.
Expand All @@ -105,14 +105,14 @@ pub struct KeyboardInput {
pub window: Entity,
}

/// Updates the [`ButtonInput<KeyCode>`] resource with the latest [`KeyboardInput`] events.
/// Updates the [`ButtonInput<PhysicalKey>`] resource with the latest [`KeyboardInput`] events.
///
/// ## Differences
///
/// The main difference between the [`KeyboardInput`] event and the [`ButtonInput<KeyCode>`] resources is that
/// The main difference between the [`KeyboardInput`] event and the [`ButtonInput<PhysicalKey>`] resources is that
/// the latter have convenient functions such as [`ButtonInput::pressed`], [`ButtonInput::just_pressed`] and [`ButtonInput::just_released`].
pub fn keyboard_input_system(
mut key_input: ResMut<ButtonInput<KeyCode>>,
mut key_input: ResMut<ButtonInput<PhysicalKey>>,
mut keyboard_input_events: EventReader<KeyboardInput>,
) {
// Avoid clearing if it's not empty to ensure change detection is not triggered.
Expand All @@ -134,8 +134,8 @@ pub fn keyboard_input_system(
/// enum), but the values are primarily tied to the key's physical location on the keyboard.
///
/// This enum is primarily used to store raw keycodes when Winit doesn't map a given native
/// physical key identifier to a meaningful [`KeyCode`] variant. In the presence of identifiers we
/// haven't mapped for you yet, this lets you use use [`KeyCode`] to:
/// physical key identifier to a meaningful [`PhysicalKey`] variant. In the presence of identifiers we
/// haven't mapped for you yet, this lets you use use [`PhysicalKey`] to:
///
/// - Correctly match key press and release events.
/// - On non-web platforms, support assigning keybinds to virtually any key through a UI.
Expand All @@ -162,7 +162,7 @@ pub enum NativeKeyCode {
///
/// ## Usage
///
/// It is used as the generic `T` value of an [`ButtonInput`] to create a `Res<Input<KeyCode>>`.
/// It is used as the generic `T` value of an [`ButtonInput`] to create a `Res<ButtonInput<PhysicalKey>>`.
///
/// Code representing the location of a physical key
/// This mostly conforms to the UI Events Specification's [`KeyboardEvent.code`] with a few
Expand All @@ -184,11 +184,11 @@ pub enum NativeKeyCode {
reflect(Serialize, Deserialize)
)]
#[repr(u32)]
pub enum KeyCode {
pub enum PhysicalKey {
/// This variant is used when the key cannot be translated to any other variant.
///
/// The native keycode is provided (if available) so you're able to more reliably match
/// key-press and key-release events by hashing the [`KeyCode`]. It is also possible to use
/// key-press and key-release events by hashing the [`PhysicalKey`]. It is also possible to use
/// this for keybinds for non-standard keys, but such keybinds are tied to a given platform.
Unidentified(NativeKeyCode),
/// <kbd>`</kbd> on a US keyboard. This is also called a backtick or grave.
Expand Down
8 changes: 4 additions & 4 deletions crates/bevy_input/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ pub mod prelude {
gamepad::{
Gamepad, GamepadAxis, GamepadAxisType, GamepadButton, GamepadButtonType, Gamepads,
},
keyboard::KeyCode,
keyboard::PhysicalKey,
mouse::MouseButton,
touch::{TouchInput, Touches},
Axis, ButtonInput,
Expand All @@ -34,7 +34,7 @@ pub mod prelude {
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
use bevy_reflect::Reflect;
use keyboard::{keyboard_input_system, Key, KeyCode, KeyboardInput, NativeKey, NativeKeyCode};
use keyboard::{keyboard_input_system, Key, KeyboardInput, NativeKey, NativeKeyCode, PhysicalKey};
use mouse::{
mouse_button_input_system, MouseButton, MouseButtonInput, MouseMotion, MouseScrollUnit,
MouseWheel,
Expand Down Expand Up @@ -66,7 +66,7 @@ impl Plugin for InputPlugin {
app
// keyboard
.add_event::<KeyboardInput>()
.init_resource::<ButtonInput<KeyCode>>()
.init_resource::<ButtonInput<PhysicalKey>>()
.add_systems(PreUpdate, keyboard_input_system.in_set(InputSystem))
// mouse
.add_event::<MouseButtonInput>()
Expand Down Expand Up @@ -112,7 +112,7 @@ impl Plugin for InputPlugin {

// Register keyboard types
app.register_type::<KeyboardInput>()
.register_type::<KeyCode>()
.register_type::<PhysicalKey>()
.register_type::<NativeKeyCode>()
.register_type::<Key>()
.register_type::<NativeKey>();
Expand Down
6 changes: 3 additions & 3 deletions crates/bevy_window/src/system.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::{PrimaryWindow, Window, WindowCloseRequested};

use bevy_app::AppExit;
use bevy_ecs::prelude::*;
use bevy_input::{keyboard::KeyCode, ButtonInput};
use bevy_input::{keyboard::PhysicalKey, ButtonInput};

/// Exit the application when there are no open windows.
///
Expand Down Expand Up @@ -52,14 +52,14 @@ pub fn close_when_requested(mut commands: Commands, mut closed: EventReader<Wind
pub fn close_on_esc(
mut commands: Commands,
focused_windows: Query<(Entity, &Window)>,
input: Res<ButtonInput<KeyCode>>,
input: Res<ButtonInput<PhysicalKey>>,
) {
for (window, focus) in focused_windows.iter() {
if !focus.focused {
continue;
}

if input.just_pressed(KeyCode::Escape) {
if input.just_pressed(PhysicalKey::Escape) {
commands.entity(window).despawn();
}
}
Expand Down
Loading