На некоторых устройствах нет сенсорных экранов или мышей, есть только минималистичные клавиатуры. Вот типичные примеры:
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 )