1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
how_to_support_5keys_3keys.md 7.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:52 91e8897

Как поддерживать минималистичные клавиатуры (3-клавишные, 5-клавишные и с поворотной кнопкой)

Фон

На некоторых устройствах нет сенсорных экранов или мышей, есть только минималистичные клавиатуры. Вот типичные примеры:

  • 3-клавишная клавиатура (клавиша Enter + клавиши вверх и вниз), к этому же классу можно отнести поворотную кнопку, которая может быть сопоставлена с клавишами вверх и вниз. Некоторые разновидности имеют цифровые клавиши и функциональные клавиши, которые также относятся к этому классу.

  • 5-клавишная клавиатура (клавиша Enter + левая, правая, верхняя и нижняя клавиши). Некоторые разновидности имеют цифровые и функциональные клавиши и также относятся к этому классу.

Для описанных случаев направление клавиш должно использоваться как для навигации (переключения фокуса), так и для ввода данных в элементы управления, поэтому необходимо ввести состояние (или режим):

  • В состоянии перемещения фокуса: направление клавиш используется для переключения фокуса.

  • В состоянии без перемещения фокуса: направление клавиш используется для изменения значения элемента управления.

Клавиша Enter выполняет следующие функции:

  • На кнопках и других элементах управления, активируемых клавишей Enter, она используется для активации кнопки, что эквивалентно событию клика.

  • Для редакторов и других элементов управления она используется для переключения состояния и изменения назначения направления клавиш.

Метод обработки поворотной кнопки: нажатие левой кнопки при повороте влево, нажатие правой кнопки при повороте вправо, нажатие клавиши Enter при нажатии.

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

AWTK предоставляет встроенную поддержку для этого, определяя тип клавиатуры во время инициализации, код выглядит следующим образом:

ret_t application_init() {
  system_info_set_keyboard_type(system_info(), KEYBOARD_5KEYS);

  return RET_OK;
}

Определение типа клавиатуры:

/**
 * @enum keyboard_type_t
 * Тип клавиатуры
 */
typedef enum _keyboard_type_t {
  /**
   * @const KEYBOARD_NONE
   * Нет клавиатуры.
   */
  KEYBOARD_NONE = 0,
  /**
   * @const KEYBOARD_NORMAL
   * Обычная клавиатура.
   */
  KEYBOARD_NORMAL,
  /**
   * @const KEYBOARD_3KEYS
   * 3 клавиши (RETURN+клавиши вверх и вниз, с дополнительными цифровыми клавишами и т.д.).
   * > Клавиша RETURN используется для переключения режима: в режиме фокуса клавиши вверх и вниз используются для переключения фокуса, в режиме без фокуса клавиши вверх и вниз используются для изменения значений элементов управления.
   */
  KEYBOARD_3KEYS,
  /**
   * @const KEYBOARD_5KEYS
   * 5 клавиш (RETURN+левая, правая, верхняя и нижние клавиши, с дополнительными цифровыми и функциональными клавишами и т. д.).
   * > Клавиша RETURN используется для переключения режима: в режиме фокуса клавиши вверх и вниз используются для переключения фокуса, в режиме без фокуса клавиши вверх и вниз используются для изменения значений элементов управления.
   */
  KEYBOARD_5KEYS
} keyboard_type_t;

Кроме того, для элементов управления, которые хотят использовать клавиши для переключения фокуса, необходимо установить свойство focusable элемента управления в true, чтобы поддерживать фокус:

<button name="button" text="button" focusable="true"/>

Примечание: edit и его комбинированные элементы управления (например, combo_box, combo_box_ex и т. д.) поддерживают фокус по умолчанию, и нет необходимости устанавливать свойство focusable.

Если вы хотите, чтобы мягкая клавиатура также поддерживала переключение фокуса с помощью клавиш, выполните следующие действия:

Шаг 1: Установите для свойства grab_keys мягкой клавиатуры значение true, код следующий:

<keyboard theme="keyboard" x="0" y="bottom" w="100%" h="40%" grab_keys="true" name="kb_default">
  ...
</keyboard>

Шаг 2: Установите свойство focusable кнопок на мягкой клавиатуре в true, чтобы поддержать фокус, код следующий:

<keyboard theme="keyboard" x="0" y="bottom" w="100%" h="40%" grab_keys="true" name="kb_default">
  ...
      <view x="0" w="100%" h="25%" children_layout="default(r=1,c=10)">
        <button repeat="300" name="q" focusable="true" text="q"/>
        <button repeat="300" name="w" focusable="true" text="w"/>
        ...
      </view>
      ...
</keyboard>

Пример

Другое

Если вы хотите, чтобы элемент управления отображал различный внешний вид при активации, определите макрос WITH_STATE_ACTIVATED. Одновременно напишите параметры состояния activated в файле стиля. Например:

<slider>
  <style>
    <normal bg_color="#a0a0a0" fg_color="blue" border_color="#ffd700"/>
    <pressed bg_color="#a0a0a0" fg_color="blue" border_color="#ffa700"/>
    <over bg_color="#a0a0a0" fg_color="blue" border_color="#ffe700"/>
    <focused bg_color="#a0a0a0" fg_color="blue" border_color="#ffff00"/>
    <activated bg_color="#a0a0a0" fg_color="blue" border_color="#ff0000"/>
  </style>
</slider>

Пожалуйста, обратитесь к: https://github.com/zlgopen/awtk-c-demos/blob/master/design/default/styles/5keys.xml

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk.git
oschina-mirror
zlgopen-awtk
zlgopen-awtk
master