pub struct Input(/* private fields */);
Expand description
Interface for text-based input devices.
Implementations§
source§impl Input
impl Input
sourcepub fn reset(&mut self, extended_verification: bool) -> Result
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.
sourcepub fn read_key(&mut self) -> Result<Option<Key>>
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
Status::DEVICE_ERROR
if there was an issue with the input device
§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(())
}
sourcepub fn wait_for_key_event(&self) -> Option<Event>
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§
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more