pub struct XrMetaVirtualKeyboard { /* private fields */ }
Expand description
Main extension handler for Meta virtual keyboard functionality
This struct manages the XR_META_virtual_keyboard extension, providing access to:
- Virtual keyboard creation and destruction
- Spatial positioning and location suggestions
- Input event handling and text input
- Model visibility and animation control
- Texture management and dirty texture tracking
Implementations§
Source§impl XrMetaVirtualKeyboard
impl XrMetaVirtualKeyboard
Sourcepub fn new() -> Option<Self>
pub fn new() -> Option<Self>
Creates a new XrMetaVirtualKeyboardExtension instance if the extension is supported
§Returns
Some(Self)
if extension is available and initialization succeedsNone
if extension is not available or initialization fails
§Examples
use stereokit_rust::tools::xr_meta_virtual_keyboard::*;
number_of_steps = 50;
test_steps!( // !!!! Get a proper main loop !!!!
if iter == 20 {
// Test extension creation and functionality
Log::info("🔧 Testing XR_META_virtual_keyboard extension creation...");
match XrMetaVirtualKeyboard::new() {
Some(extension) => {
Log::info("✅ Extension created successfully");
// Test system support check
match extension.check_system_support(false) {
Ok(_sys_prop) => {
Log::info("✅ System supports virtual keyboards");
// Test keyboard creation
match extension.create_virtual_keyboard() {
Ok(keyboard) => {
Log::info("✅ Virtual keyboard created!");
// Test visibility control
if extension.set_model_visibility(keyboard, true).is_ok() {
Log::info("✅ Keyboard shown");
}
if extension.set_model_visibility(keyboard, false).is_ok() {
Log::info("✅ Keyboard hidden");
}
// Cleanup
if extension.destroy_virtual_keyboard(keyboard).is_ok() {
Log::info("✅ Keyboard destroyed");
}
}
Err(e) => Log::err(format!("❌ Keyboard creation failed: {:?}", e)),
}
}
Err(e) => Log::err(format!("❌ System support check failed: {:?}", e)),
}
}
None => Log::warn("⚠️ Extension not available on this system"),
}
}
);
Sourcepub fn check_system_support(
&self,
with_log: bool,
) -> Result<SystemProperties, XrResult>
pub fn check_system_support( &self, with_log: bool, ) -> Result<SystemProperties, XrResult>
Sourcepub fn create_virtual_keyboard(&self) -> Result<VirtualKeyboardMETA, XrResult>
pub fn create_virtual_keyboard(&self) -> Result<VirtualKeyboardMETA, XrResult>
Sourcepub fn destroy_virtual_keyboard(
&self,
keyboard: VirtualKeyboardMETA,
) -> Result<(), XrResult>
pub fn destroy_virtual_keyboard( &self, keyboard: VirtualKeyboardMETA, ) -> Result<(), XrResult>
Sourcepub fn create_virtual_keyboard_space(
&self,
keyboard: VirtualKeyboardMETA,
location_type: VirtualKeyboardLocationTypeMETA,
space: Space,
pose_in_space: Posef,
) -> Result<Space, XrResult>
pub fn create_virtual_keyboard_space( &self, keyboard: VirtualKeyboardMETA, location_type: VirtualKeyboardLocationTypeMETA, space: Space, pose_in_space: Posef, ) -> Result<Space, XrResult>
Sourcepub fn set_model_visibility(
&self,
keyboard: VirtualKeyboardMETA,
visible: bool,
) -> Result<(), XrResult>
pub fn set_model_visibility( &self, keyboard: VirtualKeyboardMETA, visible: bool, ) -> Result<(), XrResult>
Sourcepub fn suggest_location(
&self,
keyboard: VirtualKeyboardMETA,
location_info: &VirtualKeyboardSpaceCreateInfoMETA,
) -> Result<(), XrResult>
pub fn suggest_location( &self, keyboard: VirtualKeyboardMETA, location_info: &VirtualKeyboardSpaceCreateInfoMETA, ) -> Result<(), XrResult>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for XrMetaVirtualKeyboard
impl RefUnwindSafe for XrMetaVirtualKeyboard
impl Send for XrMetaVirtualKeyboard
impl Sync for XrMetaVirtualKeyboard
impl Unpin for XrMetaVirtualKeyboard
impl UnwindSafe for XrMetaVirtualKeyboard
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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.