「App:Library:LVGL:docs:Porting:Input device interface」の版間の差分
(→API) |
|||
515行目: | 515行目: | ||
Typedef | Typedef | ||
− | typedef struct _ lv_indev_drv_t lv_indev_drv_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">typedef struct _ lv_indev_drv_t lv_indev_drv_t</span> |
: ユーザーによって初期化され、「lv_indev_add()」によって登録されます | : ユーザーによって初期化され、「lv_indev_add()」によって登録されます | ||
− | typedef struct _ lv_indev_proc_t _lv_indev_proc_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">typedef struct _ lv_indev_proc_t _lv_indev_proc_t</span> |
: 入力デバイスの実行時データライブラリによって内部的に使用されるため、ライブラリに触れる必要はありません。 | : 入力デバイスの実行時データライブラリによって内部的に使用されるため、ライブラリに触れる必要はありません。 | ||
− | typedef struct _ lv_indev_t lv_indev_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">typedef struct _ lv_indev_t lv_indev_t</span> |
: ドライバー、ランタイムデータ(「proc」)、およびいくつかの追加情報を含むメイン入力デバイス記述子 | : ドライバー、ランタイムデータ(「proc」)、およびいくつかの追加情報を含むメイン入力デバイス記述子 | ||
558行目: | 558行目: | ||
− | 列挙型lv_indev_type_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">列挙型lv_indev_type_t</span> |
: 可能な入力デバイスタイプ ''値:'' | : 可能な入力デバイスタイプ ''値:'' | ||
− | : 列挙子LV_INDEV_TYPE_NONE | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_TYPE_NONE</span> |
:: 初期化されていない状態 | :: 初期化されていない状態 | ||
− | : 列挙子LV_INDEV_TYPE_POINTER | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_TYPE_POINTER</span> |
:: タッチパッド、マウス、外部ボタン | :: タッチパッド、マウス、外部ボタン | ||
− | : 列挙子LV_INDEV_TYPE_KEYPAD | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_TYPE_KEYPAD</span> |
:: キーパッドまたはキーボード | :: キーパッドまたはキーボード | ||
− | : 列挙子LV_INDEV_TYPE_BUTTON | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_TYPE_BUTTON</span> |
:: 画面の特定のポイントに割り当てられている外部(ハードウェアボタン) | :: 画面の特定のポイントに割り当てられている外部(ハードウェアボタン) | ||
− | : 列挙子LV_INDEV_TYPE_ENCODER | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_TYPE_ENCODER</span> |
:: 左折、右折、ボタンのみのエンコーダ | :: 左折、右折、ボタンのみのエンコーダ | ||
− | 列挙型lv_indev_state_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">列挙型lv_indev_state_t</span> |
: 入力デバイスの状態 | : 入力デバイスの状態 | ||
: ''値:'' | : ''値:'' | ||
− | : 列挙子LV_INDEV_STATE_RELEASED | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_STATE_RELEASED</span> |
:: | :: | ||
− | : 列挙子LV_INDEV_STATE_PRESSED | + | : <span style="background-color: #eeeeee;">列挙子LV_INDEV_STATE_PRESSED</span> |
|} | |} | ||
:[[App:Library:LVGL:docs:Porting|戻る : Previous]] | :[[App:Library:LVGL:docs:Porting|戻る : Previous]] | ||
750行目: | 750行目: | ||
− | void lv_indev_drv_init(struct _ lv_indev_drv_t * driver) | + | <span style="background-color:#e7f2fa;color:#2980b9;">void lv_indev_drv_init(struct _ lv_indev_drv_t * driver)</span> |
: 入力デバイスドライバーをデフォルト値で初期化します。これは、メモリジャンクではなく、フィールドに既知の値を確実に持つために使用されます。その後、フィールドを設定できます。 | : 入力デバイスドライバーをデフォルト値で初期化します。これは、メモリジャンクではなく、フィールドに既知の値を確実に持つために使用されます。その後、フィールドを設定できます。 | ||
756行目: | 756行目: | ||
:: '''driver-初期化するドライバー'''変数へのポインター | :: '''driver-初期化するドライバー'''変数へのポインター | ||
− | '''lv_indev_t''' * lv_indev_drv_register(struct _ lv_indev_drv_t * driver) | + | <span style="background-color:#e7f2fa;color:#2980b9;">'''lv_indev_t''' * lv_indev_drv_register(struct _ lv_indev_drv_t * driver)</span> |
: 初期化された入力デバイスドライバを登録します。 | : 初期化された入力デバイスドライバを登録します。 | ||
764行目: | 764行目: | ||
:: 新しい入力デバイスへのポインタ、またはエラーの場合はNULL | :: 新しい入力デバイスへのポインタ、またはエラーの場合はNULL | ||
− | void lv_indev_drv_update('''lv_indev_t''' * indev、struct _lv_indev_drv_t * new_drv) | + | <span style="background-color:#e7f2fa;color:#2980b9;">void lv_indev_drv_update('''lv_indev_t''' * indev、struct _lv_indev_drv_t * new_drv)</span> |
: 実行時にドライバーを更新します。 | : 実行時にドライバーを更新します。 | ||
771行目: | 771行目: | ||
::* '''new_drv--'''新しいドライバへのポインタ | ::* '''new_drv--'''新しいドライバへのポインタ | ||
− | void lv_indev_delete('''lv_indev_t''' * indev) | + | <span style="background-color:#e7f2fa;color:#2980b9;">void lv_indev_delete('''lv_indev_t''' * indev)</span> |
: 付属の入力デバイスを取り外します。その後、付属の入力デバイスを使用しないように注意してください。 | : 付属の入力デバイスを取り外します。その後、付属の入力デバイスを使用しないように注意してください。 | ||
777行目: | 777行目: | ||
:: '''indev--'''削除するポインタ | :: '''indev--'''削除するポインタ | ||
− | '''lv_indev_t''' * lv_indev_get_next( '''lv_indev_t''' * indev) | + | <span style="background-color:#e7f2fa;color:#2980b9;">'''lv_indev_t''' * lv_indev_get_next( '''lv_indev_t''' * indev)</span> |
: 次の入力デバイスを取得します。 | : 次の入力デバイスを取得します。 | ||
785行目: | 785行目: | ||
:: 次の入力デバイス。それ以上ない場合はNULL。パラメータがNULLの場合、最初の入力デバイスを提供します | :: 次の入力デバイス。それ以上ない場合はNULL。パラメータがNULLの場合、最初の入力デバイスを提供します | ||
− | void _lv_indev_read('''lv_indev_t''' * indev、'''lv_indev_data_t''' * data) | + | <span style="background-color:#e7f2fa;color:#2980b9;">void _lv_indev_read('''lv_indev_t''' * indev、'''lv_indev_data_t''' * data)</span> |
: 入力デバイスからデータを読み取ります。 | : 入力デバイスからデータを読み取ります。 | ||
792行目: | 792行目: | ||
::* '''data-'''入力デバイスはここにデータを書き込みます | ::* '''data-'''入力デバイスはここにデータを書き込みます | ||
− | struct lv_indev_data_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">struct lv_indev_data_t</span> |
: ''#include <lv_hal_i'ndev.h>'' | : ''#include <lv_hal_i'ndev.h>'' | ||
: 入力ドライバーに渡されて入力されるデータ構造 | : 入力ドライバーに渡されて入力されるデータ構造 | ||
: '''パブリックメンバー''' | : '''パブリックメンバー''' | ||
− | : lv_point_tポイント | + | : <span style="background-color: #eeeeee;">lv_point_tポイント</span> |
:: LV_INDEV_TYPE_POINTERの場合、現在押されているポイント | :: LV_INDEV_TYPE_POINTERの場合、現在押されているポイント | ||
− | : uint32_tキー | + | : <span style="background-color: #eeeeee;">uint32_tキー</span> |
:: LV_INDEV_TYPE_KEYPADの場合、現在押されているキー | :: LV_INDEV_TYPE_KEYPADの場合、現在押されているキー | ||
− | : uint32_t btn_id | + | : <span style="background-color: #eeeeee;">uint32_t btn_id</span> |
:: LV_INDEV_TYPE_BUTTONの場合、現在押されているボタン | :: LV_INDEV_TYPE_BUTTONの場合、現在押されているボタン | ||
− | : int16_t enc_diff | + | : <span style="background-color: #eeeeee;">int16_t enc_diff</span> |
:: LV_INDEV_TYPE_ENCODERの場合、前回の読み取り以降のステップ数 | :: LV_INDEV_TYPE_ENCODERの場合、前回の読み取り以降のステップ数 | ||
− | : '''lv_indev_state_t'''状態 | + | : <span style="background-color: #eeeeee;">'''lv_indev_state_t'''状態</span> |
:: LV_INDEV_STATE_RELまたはLV_INDEV_STATE_PR | :: LV_INDEV_STATE_RELまたはLV_INDEV_STATE_PR | ||
− | : bool continue_reading | + | : <span style="background-color: #eeeeee;">bool continue_reading</span> |
:: trueに設定すると、読み取りコールバックが再度呼び出されます | :: trueに設定すると、読み取りコールバックが再度呼び出されます | ||
− | struct _lv_indev_drv_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">struct _lv_indev_drv_t</span> |
: ''#include <lv_hal_i'ndev.h>'' | : ''#include <lv_hal_i'ndev.h>'' | ||
816行目: | 816行目: | ||
: | : | ||
: '''パブリックメンバー''' | : '''パブリックメンバー''' | ||
− | : '''lv_indev_type_t'''タイプ | + | : <span style="background-color: #eeeeee;">'''lv_indev_type_t'''タイプ</span> |
:: <入力デバイスタイプ入力デバイスデータを読み取るための関数ポインタ。 | :: <入力デバイスタイプ入力デバイスデータを読み取るための関数ポインタ。 | ||
− | : void(* read_cb)(struct _ '''lv_indev_drv_t''' * indev_drv、'''lv_indev_data_t''' * data) | + | : <span style="background-color: #eeeeee;">void(* read_cb)(struct _ '''lv_indev_drv_t''' * indev_drv、'''lv_indev_data_t''' * data)</span> |
:: | :: | ||
− | : void(* Feedback_cb)(struct _ '''lv_indev_drv_t''' *、uint8_t) | + | : <span style="background-color: #eeeeee;">void(* Feedback_cb)(struct _ '''lv_indev_drv_t''' *、uint8_t)</span> |
:: 入力デバイスでアクションが発生したときに呼び出されます。 | :: 入力デバイスでアクションが発生したときに呼び出されます。 | ||
:: 2番目のパラメータはからのイベントです<code style="color: #bb0000;">lv_event_t</code> | :: 2番目のパラメータはからのイベントです<code style="color: #bb0000;">lv_event_t</code> | ||
− | : void * user_data | + | : <span style="background-color: #eeeeee;">void * user_data</span> |
:: | :: | ||
− | : struct _ '''lv_disp_t''' * disp | + | : <span style="background-color: #eeeeee;">struct _ '''lv_disp_t''' * disp</span> |
:: <入力デバイスを定期的に読み取るための割り当てられたディスプレイタイマーへのポインタ | :: <入力デバイスを定期的に読み取るための割り当てられたディスプレイタイマーへのポインタ | ||
: '''lv_timer_t''' * read_timer | : '''lv_timer_t''' * read_timer | ||
:: オブジェクトを実際にドラッグする前にスライドするピクセル数 | :: オブジェクトを実際にドラッグする前にスライドするピクセル数 | ||
− | : uint8_t scroll_limit | + | : <span style="background-color: #eeeeee;">uint8_t scroll_limit</span> |
:: [%]でスロースローダウンをドラッグします。 | :: [%]でスロースローダウンをドラッグします。 | ||
:: 値が大きいほど、速度が速くなります | :: 値が大きいほど、速度が速くなります | ||
− | : uint8_t scroll_throw | + | : <span style="background-color: #eeeeee;">uint8_t scroll_throw</span> |
:: ジェスチャーとして評価するには、少なくともこの違いは2つのポイントの間にある必要があります | :: ジェスチャーとして評価するには、少なくともこの違いは2つのポイントの間にある必要があります | ||
− | : uint8_tジェスチャー_min_velocity | + | : <span style="background-color: #eeeeee;">uint8_tジェスチャー_min_velocity</span> |
:: 少なくともこの違いは、ジェスチャーを送信することです | :: 少なくともこの違いは、ジェスチャーを送信することです | ||
− | : uint8_tジェスチャー制限 | + | : <span style="background-color: #eeeeee;">uint8_tジェスチャー制限</span> |
:: ミリ秒単位の長押し時間 | :: ミリ秒単位の長押し時間 | ||
− | : uint16_t long_press_time | + | : <span style="background-color: #eeeeee;">uint16_t long_press_time</span> |
:: 長押しで繰り返されるトリガー期間[ms] | :: 長押しで繰り返されるトリガー期間[ms] | ||
− | : uint16_t long_press_repeat_time | + | : <span style="background-color: #eeeeee;">uint16_t long_press_repeat_time</span> |
:: | :: | ||
− | struct _lv_indev_proc_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">struct _lv_indev_proc_t</span> |
: ''#include <lv_hal_indev.h>''入力デバイスの実行時データライブラリによって内部的に使用されるため、ライブラリに触れる必要はありません。 | : ''#include <lv_hal_indev.h>''入力デバイスの実行時データライブラリによって内部的に使用されるため、ライブラリに触れる必要はありません。 | ||
: | : | ||
: '''パブリックメンバー''' | : '''パブリックメンバー''' | ||
− | : '''lv_indev_state_t'''状態 | + | : <span style="background-color: #eeeeee;">'''lv_indev_state_t'''状態</span> |
:: 入力デバイスの現在の状態。 | :: 入力デバイスの現在の状態。 | ||
− | : uint8_t long_pr_sent | + | : <span style="background-color: #eeeeee;">uint8_t long_pr_sent</span> |
:: | :: | ||
− | : uint8_t reset_query | + | : <span style="background-color: #eeeeee;">uint8_t reset_query</span> |
:: | :: | ||
− | : uint8_tが無効 | + | : <span style="background-color: #eeeeee;">uint8_tが無効</span> |
:: | :: | ||
− | : uint8_t wait_until_release | + | : <span style="background-color: #eeeeee;">uint8_t wait_until_release</span> |
:: | :: | ||
− | : lv_point_t act_point | + | : <span style="background-color: #eeeeee;">lv_point_t act_point</span> |
:: 入力デバイスの現在のポイント。 | :: 入力デバイスの現在のポイント。 | ||
− | : lv_point_t last_point | + | : <span style="background-color: #eeeeee;">lv_point_t last_point</span> |
:: 入力デバイスの最後のポイント。 | :: 入力デバイスの最後のポイント。 | ||
− | : lv_point_t last_raw_point | + | : <span style="background-color: #eeeeee;">lv_point_t last_raw_point</span> |
:: read_cbから読み取られた最後のポイント。 | :: read_cbから読み取られた最後のポイント。 | ||
− | : lv_point_t vect | + | : <span style="background-color: #eeeeee;">lv_point_t vect</span> |
:: <font class="goog-text-highlight">入力デバイスを登録するには、</font><code style="color: #bb0000;">act_point</code>との違い<code style="color: #bb0000;">last_point</code>。 | :: <font class="goog-text-highlight">入力デバイスを登録するには、</font><code style="color: #bb0000;">act_point</code>との違い<code style="color: #bb0000;">last_point</code>。 | ||
− | : lv_point_t scroll_sum | + | : <span style="background-color: #eeeeee;">lv_point_t scroll_sum</span> |
:: | :: | ||
− | : lv_point_t scroll_throw_vect | + | : <span style="background-color: #eeeeee;">lv_point_t scroll_throw_vect</span> |
:: | :: | ||
− | : lv_point_t scroll_throw_vect_ori | + | : <span style="background-color: #eeeeee;">lv_point_t scroll_throw_vect_ori</span> |
:: | :: | ||
− | : struct _ '''lv_obj_t''' * act_obj | + | : <span style="background-color: #eeeeee;">struct _ '''lv_obj_t''' * act_obj</span> |
:: | :: | ||
− | : struct _ '''lv_obj_t''' * last_obj | + | : <span style="background-color: #eeeeee;">struct _ '''lv_obj_t''' * last_obj</span> |
:: | :: | ||
− | : struct _ '''lv_obj_t''' * scroll_obj | + | : <span style="background-color: #eeeeee;">struct _ '''lv_obj_t''' * scroll_obj</span> |
:: | :: | ||
− | : struct _ '''lv_obj_t''' * last_pressed | + | : <span style="background-color: #eeeeee;">struct _ '''lv_obj_t''' * last_pressed</span> |
:: | :: | ||
− | : lv_area_t scroll_area | + | : <span style="background-color: #eeeeee;">lv_area_t scroll_area</span> |
:: | :: | ||
− | : lv_point_tジェスチャー_sum | + | : <span style="background-color: #eeeeee;">lv_point_tジェスチャー_sum</span> |
:: | :: | ||
− | : lv_dir_t scroll_dir | + | : <span style="background-color: #eeeeee;">lv_dir_t scroll_dir</span> |
:: | :: | ||
− | : lv_dir_tジェスチャー_dir | + | : <span style="background-color: #eeeeee;">lv_dir_tジェスチャー_dir</span> |
:: | :: | ||
− | : uint8_tジェスチャー_送信済み | + | : <span style="background-color: #eeeeee;">uint8_tジェスチャー_送信済み</span> |
:: | :: | ||
− | : struct _ '''lv_indev_proc_t''' :: [anonymous]::[anonymous]ポインタ | + | : <span style="background-color: #eeeeee;">struct _ '''lv_indev_proc_t''' :: [anonymous]::[anonymous]ポインタ</span> |
:: | :: | ||
− | : '''lv_indev_state_t''' last_state | + | : <span style="background-color: #eeeeee;">'''lv_indev_state_t''' last_state</span> |
:: | :: | ||
− | : uint32_t last_key | + | : <span style="background-color: #eeeeee;">uint32_t last_key</span> |
:: | :: | ||
− | : struct _ lv_indev_proc_t :: [anonymous]::[anonymous]キーパッド | + | : <span style="background-color: #eeeeee;">struct _ lv_indev_proc_t :: [anonymous]::[anonymous]キーパッド</span> |
:: | :: | ||
− | : union _ lv_indev_proc_t ::[匿名]タイプ | + | : <span style="background-color: #eeeeee;">union _ lv_indev_proc_t ::[匿名]タイプ</span> |
:: | :: | ||
− | : uint32_t pr_timestamp | + | : <span style="background-color: #eeeeee;">uint32_t pr_timestamp</span> |
:: 押されたタイムスタンプ | :: 押されたタイムスタンプ | ||
− | : uint32_t longpr_rep_timestamp | + | : <span style="background-color: #eeeeee;">uint32_t longpr_rep_timestamp</span> |
:: 長押しリピートタイムスタンプ | :: 長押しリピートタイムスタンプ | ||
− | struct _lv_indev_t | + | <span style="background-color:#e7f2fa;color:#2980b9;">struct _lv_indev_t</span> |
: ''#include <lv_h'al_indev.h '''>'''''<nowiki/>'''ドライバー、ランタイムデータ('proc')、およびいくつかの追加情報を含むメイン入力デバイス記述子パブリックメンバー''' | : ''#include <lv_h'al_indev.h '''>'''''<nowiki/>'''ドライバー、ランタイムデータ('proc')、およびいくつかの追加情報を含むメイン入力デバイス記述子パブリックメンバー''' | ||
: struct _ '''lv_indev_drv_t''' * driver | : struct _ '''lv_indev_drv_t''' * driver | ||
:: | :: | ||
− | : '''_lv_indev_proc_t''' proc | + | : <span style="background-color: #eeeeee;">'''_lv_indev_proc_t''' proc</span> |
:: | :: | ||
− | : struct _ '''lv_obj_t''' * cursor | + | : <span style="background-color: #eeeeee;">struct _ '''lv_obj_t''' * cursor</span> |
:: LV_INPUT_TYPE_POINTERのカーソル | :: LV_INPUT_TYPE_POINTERのカーソル | ||
− | : struct _ '''lv_group_t''' * group | + | : <span style="background-color: #eeeeee;">struct _ '''lv_group_t''' * group</span> |
:: キーパッドの宛先グループ | :: キーパッドの宛先グループ | ||
− | : const lv_point_t * btn_points | + | : <span style="background-color: #eeeeee;">const lv_point_t * btn_points</span> |
:: ボタン()画面に割り当てられた配列ポイントは、ここでボタンによって押されます | :: ボタン()画面に割り当てられた配列ポイントは、ここでボタンによって押されます | ||
|} | |} | ||
:[[App:Library:LVGL:docs:Porting|戻る : Previous]] | :[[App:Library:LVGL:docs:Porting|戻る : Previous]] |
2022年6月29日 (水) 14:32時点における版
https://docs.lvgl.io/8.2/porting/indev.html
英文 | 自動翻訳 |
---|---|
Input device interface
Types of input devices
英文 | 自動翻訳 |
---|---|
To register an input device an Be sure to register at least one display before you register any input devices. lv_disp_drv_register(&disp_drv);
static lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv); /*Basic initialization*/
indev_drv.type =... /*See below.*/
indev_drv.read_cb =... /*See below.*/
/*Register the driver in LVGL and save the created input device object*/
lv_indev_t * my_indev = lv_indev_drv_register(&indev_drv);
The
Visit Input devices to learn more about input devices in general. |
入力デバイスを登録するには、変数lv_indev_drv_t を初期化する必要があります。
入力デバイスを登録する前に、必ず少なくとも1つのディスプレイを登録してください。 lv_disp_drv_register (&disp_drv );
static lv_indev_drv_t indev_drv ;
lv_indev_drv_init (&indev_drv ); /*基本的な初期化*/
indev_drv 。type = ... /*以下を参照してください。*/
indev_drv 。read_cb = ... /*以下を参照してください。* // * LVGL
にドライバーを登録し、作成した入力デバイスオブジェクトを保存します* /
lv_indev_t * my_indev = lv_indev_drv_register (&indev_drv );
一般的な入力デバイスの詳細については、入力デバイスにアクセスしてください。 |
Touchpad, mouse or any pointer
英文 | 自動翻訳 |
---|---|
Input devices that can click points on the screen belong to this category. indev_drv.type = LV_INDEV_TYPE_POINTER;
indev_drv.read_cb = my_input_read;
...
void my_input_read(lv_indev_drv_t * drv, lv_indev_data_t*data)
{
if(touchpad_pressed) {
data->point.x = touchpad_x;
data->point.y = touchpad_y;
data->state = LV_INDEV_STATE_PRESSED;
} else {
data->state = LV_INDEV_STATE_RELEASED;
}
}
To set a mouse cursor use |
画面上のポイントをクリックできる入力デバイスは、このカテゴリに属します。
indev_drv 。タイプ = LV_INDEV_TYPE_POINTER ;
indev_drv 。read_cb = my_input_read ;
...
void my_input_read (lv_indev_drv_t * drv 、 lv_indev_data_t * data )
{
if (touchpad_pressed ) {
data- > point 。x = touchpad_x ;
データ->ポイント。y = touchpad_y ;
データ->状態 = LV_INDEV_STATE_PRESSED ;
} else {
データ->状態 = LV_INDEV_STATE_RELEASED ;
}
}
マウスカーソルを設定するには、を使用します |
Keypad or keyboard
英文 | 自動翻訳 |
---|---|
Full keyboards with all the letters or simple keypads with a few navigation buttons belong here. To use a keyboard/keypad:
indev_drv.type = LV_INDEV_TYPE_KEYPAD;
indev_drv.read_cb = keyboard_read;
...
void keyboard_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
data->key = last_key(); /*Get the last pressed or released key*/
if(key_pressed()) data->state = LV_INDEV_STATE_PRESSED;
else data->state = LV_INDEV_STATE_RELEASED;
}
|
キーボード/キーパッドを使用するには:
indev_drv 。タイプ = LV_INDEV_TYPE_KEYPAD ;
indev_drv 。read_cb = Keyboard_read ;
...
void Keyboard_read (lv_indev_drv_t * drv 、 lv_indev_data_t * data ){
data- > key = last_key (); /*最後に押されたキーまたはリリースされたキーを取得します*/
if (key_pressed ()) data- > state = LV_INDEV_STATE_PRESSED ;
else データ->状態 = LV_INDEV_STATE_RELEASED ;
}
|
Encoder
英文 | 自動翻訳 |
---|---|
With an encoder you can do the following:
indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = encoder_read;
...
void encoder_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
data->enc_diff = enc_get_new_moves();
if(enc_pressed()) data->state = LV_INDEV_STATE_PRESSED;
else data->state = LV_INDEV_STATE_RELEASED;
}
|
つまり、エンコーダ入力デバイスは次のように機能します。
エンコーダー(キーパッドと同様) を使用するには、オブジェクトをグループに追加する必要があります。 indev_drv 。タイプ = LV_INDEV_TYPE_ENCODER ;
indev_drv 。read_cb = エンコーダー読み取り;
...
void エンコーダー読み取り(lv_indev_drv_t * drv 、 lv_indev_data_t * data ){
data- > enc_diff = enc_get_new_moves ();
if (enc_pressed ()) data- > state = LV_INDEV_STATE_PRESSED ;
else データ->状態 = LV_INDEV_STATE_RELEASED ;
}
|
Using buttons with Encoder logic
英文 | 自動翻訳 |
---|---|
In addition to standard encoder behavior, you can also utilize its logic to navigate(focus) and edit widgets using buttons. This is especially handy if you have only few buttons available, or you want to use other buttons in addition to encoder wheel.
indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = encoder_with_keys_read;
...
void encoder_with_keys_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
data->key = last_key(); /*Get the last pressed or released key*/
/* use LV_KEY_ENTER for encoder press */
if(key_pressed()) data->state = LV_INDEV_STATE_PRESSED;
else {
data->state = LV_INDEV_STATE_RELEASED;
/* Optionally you can also use enc_diff, if you have encoder*/
data->enc_diff = enc_get_new_moves();
}
}
|
3つのボタンを使用できるようにする必要があります。
キーを押したままにすると、で指定された期間でエンコーダの前進をシミュレートします indev_drv 。タイプ = LV_INDEV_TYPE_ENCODER ;
indev_drv 。read_cb = エンコーダーwith_keys_read ;
...
void エンコーダ_with_keys_read (lv_indev_drv_t * drv 、 lv_indev_data_t * data ){
data- > key = last_key (); /*最後に押されたキーまたは離されたキーを取得します*
//*エンコーダーを押すためにLV_KEY_ENTERを使用します*/
if (key_pressed ()) data- > state = LV_INDEV_STATE_PRESSED ;
else {
データ->状態 = LV_INDEV_STATE_RELEASED ;
/ *エンコーダーがある場合は、オプションでenc_diffを使用することもできます* /
data- >enc_diff = enc_get_new_moves ();
}
}
|
Button
英文 | 自動翻訳 |
---|---|
Buttons mean external "hardware" buttons next to the screen which are assigned to specific coordinates of the screen. If a button is pressed it will simulate the pressing on the assigned coordinate. (Similarly to a touchpad)
Important: The points_array can't go out of scope. Either declare it as a global variable or as a static variable inside a function. indev_drv.type = LV_INDEV_TYPE_BUTTON;
indev_drv.read_cb = button_read;
...
void button_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
static uint32_t last_btn = 0; /*Store the last pressed button*/
int btn_pr = my_btn_read(); /*Get the ID (0,1,2...) of the pressed button*/
if(btn_pr >= 0) { /*Is there a button press? (E.g. -1 indicated no button was pressed)*/
last_btn = btn_pr; /*Save the ID of the pressed button*/
data->state = LV_INDEV_STATE_PRESSED; /*Set the pressed state*/
} else {
data->state = LV_INDEV_STATE_RELEASED; /*Set the released state*/
}
data->btn = last_btn; /*Save the last button*/
}
|
ボタンを座標に割り当てるには、を使用します
重要:points_arrayはスコープ外に出ることはできません。グローバル変数または関数内の静的変数として宣言します。 indev_drv 。タイプ = LV_INDEV_TYPE_BUTTON ;
indev_drv 。read_cb = button_read ;
...
void button_read (lv_indev_drv_t * drv 、 lv_indev_data_t * data ){
static uint32_t last_btn = 0 ; /*最後に押されたボタンを保存します*/
int btn_pr = my_btn_read (); / *押されたボタンのID(0,1,2 ...)を取得します* /
if (btn_pr > = 0 ) { / *ボタンが押されましたか?(例-1はボタンが押されていないことを示します)* /
last_btn = btn_pr ; /*押されたボタンのIDを保存します*/
データ->状態 = LV_INDEV_STATE_PRESSED ; /*押された状態を設定します*/
} else {
データ->状態 = LV_INDEV_STATE_RELEASED ; /*リリース状態を設定します*/
}
データ-> btn = last_btn ; /*最後のボタンを保存します*/
}
|
Other features
Parameters
英文 | 自動翻訳 |
---|---|
The default value of the following parameters can be changed in
|
|
Feedback
英文 | 自動翻訳 |
---|---|
Besides
This allows generating feedback for the user, e.g. to play a sound on |
read_cb コールバックに加えて、lv_indev_drv_t の中のfeedback_cb で指定することもできます。
これにより、ユーザーにフィードバックを生成できます。 たとえば、 |
Associating with a display
英文 | 自動翻訳 |
---|---|
Every input device is associated with a display. By default, a new input device is added to the last display created or explicitly selected (using The associated display is stored and can be changed in |
すべての入力デバイスはディスプレイに関連付けられています。
デフォルトでは、( 関連する表示が保存され、ドライバーの |
Buffered reading
英文 | 自動翻訳 |
---|---|
By default, LVGL calls Because of this intermittent polling there is a chance that some user gestures are missed.
In Setting the |
デフォルトでは、LVGLはread_cb を定期的に呼び出します。
この断続的なポーリングのために、一部のユーザージェスチャが見落とされる可能性があります。
|
Further reading
英文 | 自動翻訳 |
---|---|
|
|
API
英文 | 自動翻訳 |
---|---|
@description Input Device HAL interface layer header file Typedefs typedef struct _lv_indev_drv_t lv_indev_drv_t
typedef struct _lv_indev_proc_t _lv_indev_proc_t
typedef struct _lv_indev_t lv_indev_t
|
Typedef typedef struct _ lv_indev_drv_t lv_indev_drv_t
typedef struct _ lv_indev_proc_t _lv_indev_proc_t
typedef struct _ lv_indev_t lv_indev_t
|
Enums
英文 | 自動翻訳 |
---|---|
enum lv_indev_type_t
enum lv_indev_state_t
|
列挙型lv_indev_state_t
|
Functions
英文 | 自動翻訳 |
---|---|
void lv_indev_drv_init(struct _lv_indev_drv_t *driver)
lv_indev_t *lv_indev_drv_register(struct _lv_indev_drv_t *driver)
void lv_indev_drv_update(lv_indev_t *indev, struct _lv_indev_drv_t *new_drv)
void lv_indev_delete(lv_indev_t *indev)
lv_indev_t *lv_indev_get_next(lv_indev_t *indev)
void _lv_indev_read(lv_indev_t *indev, lv_indev_data_t *data)
struct lv_indev_data_t
struct _lv_indev_drv_t
struct _lv_indev_proc_t
struct _lv_indev_t
|
lv_indev_t * lv_indev_drv_register(struct _ lv_indev_drv_t * driver)
void lv_indev_drv_update(lv_indev_t * indev、struct _lv_indev_drv_t * new_drv)
void lv_indev_delete(lv_indev_t * indev)
lv_indev_t * lv_indev_get_next( lv_indev_t * indev)
void _lv_indev_read(lv_indev_t * indev、lv_indev_data_t * data)
struct lv_indev_data_t
struct _lv_indev_drv_t
struct _lv_indev_proc_t
struct _lv_indev_t
|