Enum Modifier

Source
#[non_exhaustive]
pub enum Modifier { Shift = 1, Option = 2, Control = 4, Command = 8, Extra1 = 16, Extra2 = 32, CapsLock = 64, NumLock = 128, Keypad = 256, }
Expand description

A logical modifier of keys and mouse button presses.

This enumeration abstracts over the concrete modifier key, which may be on the left or right side of the keyboard, and instead includes variants for the logical modifier only. Contemporary keyboard generally include the following modifier keys:

  • shift
  • alt oroption
  • control
  • Windows, Linux, or command
  • caps lock
  • possibly num lock

Influential past keyboards, such as the space-cadet keyboard, further included the super, hyper, and meta modifiers.

Terminal emulators usually agree only on the names of the first three modifiers, (1) shift, (2) alt/option, and (3) control. Amongst further modifiers, xterm labels the fourth one meta, whereas kitty calls that modifier super and the sixth modifier meta. Given these divergent names, prettytty uses a neutral term, command, for the fourth modifier.

The Modifier::Keypad variant is a virtual modifier, i.e., it has no physical key. It is used to distinguish keys, such as / or =, that appear even on a 60% or 65% keyboard from equally labelled keys abutting the numeric pad, which only appears on 96% or 100% keyboards.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Shift = 1

The shift key.

§

Option = 2

The alt or option key.

§

Control = 4

The control key.

§

Command = 8

The Windows, Linux, or command key. Xterm labels this modifier as meta and Kitty labels it as super

§

Extra1 = 16

A first extra modifier, labelled hyper by Kitty.

§

Extra2 = 32

A second extra modifier, labelled meta by Kitty.

§

CapsLock = 64

The caps lock key.

§

NumLock = 128

The number lock key.

§

Keypad = 256

A virtual modifier indicating a keypad key.

Trait Implementations§

Source§

impl<M: Into<Modifiers>> Add<M> for Modifier

Source§

type Output = Modifiers

The resulting type after applying the + operator.
Source§

fn add(self, rhs: M) -> Self::Output

Performs the + operation. Read more
Source§

impl Clone for Modifier

Source§

fn clone(&self) -> Modifier

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Modifier

Source§

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

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

impl From<Modifier> for Modifiers

Source§

fn from(value: Modifier) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Modifier

Source§

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

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

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<M: Into<Modifiers>> Sub<M> for Modifier

Source§

type Output = Modifiers

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: M) -> Self::Output

Performs the - operation. Read more
Source§

impl Copy for Modifier

Source§

impl Eq for Modifier

Source§

impl StructuralPartialEq for Modifier

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

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

Source§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

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

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

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.