KeyboardIgnoreModifiers

Enum KeyboardIgnoreModifiers 

Source
pub enum KeyboardIgnoreModifiers {
    None,
    AbcKeyCode,
}
Expand description

Settings for whether to ignore modifiers and use standard keyboard layouts instead.

This does not affect piston::input::TextEvent.

Piston uses the same key codes as in SDL2. The problem is that without knowing the keyboard layout, there is no coherent way of generating key codes.

This option choose different tradeoffs depending on need.

Variants§

§

None

Keep the key codes that are affected by modifiers.

This is a good default for most applications. However, make sure to display understandable information to the user.

If you experience user problems among gamers, then you might consider allowing other options in your game engine. Some gamers might be used to how stuff works in other traditional game engines and struggle understanding this configuration, depending on how you use keyboard layout.

§

AbcKeyCode

Assume the user’s keyboard layout is standard English ABC.

In some non-English speaking countries, this might be more user friendly for some gamers.

This might sound counter-intuitive at first, so here is the reason:

Gamers can customize their keyboard layout without needing to understand scan codes. When gamers want physically accuracy with good default options, they can simply use standard English ABC.

In other cases, this option displays understandable information for game instructions. This information makes it easier for users to correct the problem themselves.

Most gaming consoles use standard controllers. Typically, the only device that might be problematic for users is the keyboard. Instead of solving this problem in your game engine, let users do it in the OS.

This option gives more control to users and is also better for user data privacy. Detecting keyboard layout is usually not needed. Instead, provide options for the user where they can modify the keys. If users want to switch layout in the middle of a game, they can do it through the OS.

Trait Implementations§

Source§

impl Clone for KeyboardIgnoreModifiers

Source§

fn clone(&self) -> KeyboardIgnoreModifiers

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for KeyboardIgnoreModifiers

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for KeyboardIgnoreModifiers

Source§

fn eq(&self, other: &KeyboardIgnoreModifiers) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for KeyboardIgnoreModifiers

Source§

impl Eq for KeyboardIgnoreModifiers

Source§

impl StructuralPartialEq for KeyboardIgnoreModifiers

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more