mirror of
https://github.com/bevyengine/bevy
synced 2024-11-23 05:03:47 +00:00
13f50c7a53
# Objective The [`KeyCode`](https://github.com/bevyengine/bevy/blob/main/crates/bevy_input/src/keyboard.rs#L86) enum cases `LWin` and `RWin` are too opinionated because they are also assigned meaning by non-Windows operating systems. macOS calls the keys completely different. ## Solution Match [winits approach](https://github.com/rust-windowing/winit/blob/master/src/keyboard.rs#L1635) naming convention. --- ## Migration Guide Migrate by replacing: - `LAlt` → `AltLeft` - `RAlt` → `AltRight` - `LBracket` → `BracketLeft` - `RBracket` → `BracketRight` - `LControl` → `ControlLeft` - `RControl` → `ControlRight` - `LShift` → `ShiftLeft` - `RShift` → `ShiftRight` - `LWin` → `SuperLeft` - `RWin` → `SuperRight`
20 lines
598 B
Rust
20 lines
598 B
Rust
//! Demonstrates using key modifiers (ctrl, shift).
|
|
|
|
use bevy::prelude::*;
|
|
|
|
fn main() {
|
|
App::new()
|
|
.add_plugins(DefaultPlugins)
|
|
.add_systems(Update, keyboard_input_system)
|
|
.run();
|
|
}
|
|
|
|
/// This system prints when `Ctrl + Shift + A` is pressed
|
|
fn keyboard_input_system(input: Res<Input<KeyCode>>) {
|
|
let shift = input.any_pressed([KeyCode::ShiftLeft, KeyCode::ShiftRight]);
|
|
let ctrl = input.any_pressed([KeyCode::ControlLeft, KeyCode::ControlRight]);
|
|
|
|
if ctrl && shift && input.just_pressed(KeyCode::A) {
|
|
info!("Just pressed Ctrl + Shift + A!");
|
|
}
|
|
}
|