Struct uefi::proto::console::text::Input

source ·
pub struct Input(/* private fields */);
Expand description

Interface for text-based input devices.

Implementations§

source§

impl Input

source

pub fn reset(&mut self, extended_verification: bool) -> Result

Resets the input device hardware.

The extended_verification parameter is used to request that UEFI performs an extended check and reset of the input device.

§Errors
  • DeviceError if the device is malfunctioning and cannot be reset.
source

pub fn read_key(&mut self) -> Result<Option<Key>>

Reads the next keystroke from the input device, if any.

Use wait_for_key_event with the BootServices::wait_for_event interface in order to wait for a key to be pressed.

§Errors
§Examples
use log::info;
use uefi::proto::console::text::{Input, Key, ScanCode};
use uefi::table::boot::BootServices;
use uefi::{Char16, Result, ResultExt};

fn read_keyboard_events(boot_services: &BootServices, input: &mut Input) -> Result {
    loop {
        // Pause until a keyboard event occurs.
        let mut events = unsafe { [input.wait_for_key_event().unwrap()] };
        boot_services
            .wait_for_event(&mut events)
            .discard_errdata()?;

        let u_key = Char16::try_from('u').unwrap();
        match input.read_key()? {
            // Example of handling a printable key: print a message when
            // the 'u' key is pressed.
            Some(Key::Printable(key)) if key == u_key => {
                info!("the 'u' key was pressed");
            }

            // Example of handling a special key: exit the loop when the
            // escape key is pressed.
            Some(Key::Special(ScanCode::ESCAPE)) => {
                break;
            }
            _ => {}
        }
    }

    Ok(())
}
source

pub fn wait_for_key_event(&self) -> Option<Event>

Event to be used with BootServices::wait_for_event() in order to wait for a key to be available

Trait Implementations§

source§

impl Debug for Input

source§

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

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

impl Identify for Input

source§

const GUID: Guid = SimpleTextInputProtocol::GUID

Unique protocol identifier.
source§

impl Protocol for Input

Auto Trait Implementations§

§

impl Freeze for Input

§

impl RefUnwindSafe for Input

§

impl !Send for Input

§

impl !Sync for Input

§

impl Unpin for Input

§

impl UnwindSafe for Input

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

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<P> ProtocolPointer for P
where P: Protocol,

source§

unsafe fn ptr_from_ffi(ptr: *const c_void) -> *const P

Create a const pointer to a Protocol from a c_void pointer. Read more
source§

unsafe fn mut_ptr_from_ffi(ptr: *mut c_void) -> *mut P

Create a mutable pointer to a Protocol from a c_void pointer. Read more
source§

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

§

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>,

§

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.