Skip to content

auroraos-rs/maliit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maliit lib-rs

Описание

Эта библиотека это что-то типа maliit-glib но написана на Rust и имеет меньше возможностей.

Warning

Возможны баги и краши, т.к. интерфейс фреймворка maliit описан очень плохо, из-за чего разработка велась наощупь.

Note

Разработка велась под ОС Аврора, работоспособность в десктопных окружениях linux не гарантируется.

Возможности

  • Вызов экранной клавиатуры
  • Сокрытие экранной клавиатуры
  • Получение событий нажатия на клавиши экранной клавиатуры
  • Сброс состояния ввода
  • Установка языка клавиатуры
  • Отправка текста для подсказок с клавиатуры

Использование

use maliit::{InputMethod, MaliitError};

fn main() -> Result<(), MaliitError> {
    let mut im = InputMethod::new()?;

    // Регистрация обработчика событий (запускает фоновый поток)
    im.add_event_handler(|event| {
        println!("Событие: {:?}", event);
    })?;

    // Установка языка перед показом клавиатуры
    im.set_language("ru")?;

    // Показать клавиатуру
    im.show()?;

    // ... работа с клавиатурой ...

    // Скрыть клавиатуру
    im.hide()?;

    // Остановить обработчики и завершить фоновый поток
    im.clear_event_handlers();

    Ok(())
}

API

Все публичные методы InputMethod возвращают Result<..., MaliitError>.

Основные методы

Метод Описание
InputMethod::new() Подключение к Maliit серверу по D-Bus
show() Показать экранную клавиатуру
hide() Скрыть экранную клавиатуру
reset() Сбросить состояние ввода
set_language(lang) Установить язык клавиатуры
rotate(orientation) Повернуть клавиатуру (Orientation::Portrait / Landscape / PortraitFlipped / LandscapeFlipped)
update_widget_information(info, focus_changed) Обновить состояние текстового виджета на сервере Maliit
show_with_info(info) Показать клавиатуру, предварительно отправив состояние виджета

Обработка событий

События обрабатываются в фоновом потоке. Каждый зарегистрированный обработчик вызывается для каждого события.

// Добавить обработчик (первый вызов запускает фоновый поток)
im.add_event_handler(|event| {
    match event {
        InputMethodEvent::Text(text) => { /* текст введён */ }
        InputMethodEvent::Key { key, pressed } => { /* нажата клавиша */ }
        InputMethodEvent::AreaChanged(x, y, w, h) => { /* изменилась область клавиатуры */ }
        InputMethodEvent::ImInitiatedHide => { /* пользователь нажал кнопку скрытия клавиатуры */ }
        InputMethodEvent::ActivationLost => { /* контекст потерял активацию */ }
    }
})?;

// Можно добавить несколько обработчиков
im.add_event_handler(|event| {
    log::debug!("Second handler: {:?}", event);
})?;

// Остановить все обработчики и завершить поток
im.clear_event_handlers();

Ошибки

Все ошибки представлены типом MaliitError:

pub enum MaliitError {
    Dbus(dbus::Error),
    NotAvailable,
}

About

Client library for maliit-framework written in rust

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages