在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【AWTK使用經(jīng)驗(yàn)】如何響應(yīng)物理按鍵

ZLG致遠(yuǎn)電子 ? 2024-06-06 08:25 ? 次閱讀

AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章進(jìn)行解答。

ZTP800示教器 設(shè)備上有許多按鍵,假設(shè)想在自己的AWTK程序中檢測(cè)并使用這些按鍵響應(yīng)事件,則需要使用AWTK綁定物理按鍵的功能。

本篇文章將借助一個(gè)檢測(cè)按鍵的demo程序來(lái)介紹如何綁定物理按鍵并響應(yīng),該demo最終效果是按下任意物理按鍵時(shí)會(huì)顯示該按鍵key down,松開(kāi)按鍵時(shí)會(huì)顯示該按鍵key up。

358f0e00-239b-11ef-bd4a-92fbcf53809c.png?

圖1按鍵檢測(cè)程序效果圖

設(shè)計(jì)界面與綁定按鍵事件

用AWTK Designer打開(kāi)一個(gè)新建工程,并且放置一個(gè)靜態(tài)文本控件用作顯示按下或彈起的按鍵值。

35a18d64-239b-11ef-bd4a-92fbcf53809c.png

圖2使用AWTK Designer設(shè)計(jì)界面

1. 綁定按鍵按下與彈起事件

接下來(lái)修改項(xiàng)目的src/pages/home_page.c代碼文件,在初始化窗體時(shí)注冊(cè)監(jiān)聽(tīng)全局按鍵按下與彈起事件:

navigator_global_widget_on(EVT_KEY_DOWN, on_global_key_down, win);navigator_global_widget_on(EVT_KEY_UP, on_global_key_up, win);

接著同樣在home_page.c實(shí)現(xiàn)按鍵按下和彈起的回調(diào)函數(shù),獲取按鍵值并輸出按鍵狀態(tài)為按下還是抬起:

static ret_t on_global_key_down(void* ctx, event_t* e) { // 按鍵按下 char ch[50] = {0}; widget_t* win = WIDGET(ctx); key_event_t* evt = key_event_cast(e); widget_t* label = widget_lookup(win, "label", TRUE); const key_type_value_t* ktv = keys_type_find_by_value(evt->key);
if (ktv == NULL || label == NULL || ktv->name == NULL) { return RET_BAD_PARAMS; }
/* ktv->name為custom_keys.json綁定鍵值對(duì)應(yīng)的名稱 */ tk_snprintf(ch, sizeof(ch), "%s key down", ktv->name); widget_set_text_utf8(label, ch);
return RET_OK;}
static ret_t on_global_key_up(void* ctx, event_t* e) { // 按鍵抬起 char ch[50] = {0}; widget_t* win = WIDGET(ctx); key_event_t* evt = key_event_cast(e); widget_t* label = widget_lookup(win, "label", TRUE); const key_type_value_t* ktv = keys_type_find_by_value(evt->key);
if (ktv == NULL || label == NULL || ktv->name == NULL) { return RET_BAD_PARAMS; }
/* ktv->name為custom_keys.json綁定鍵值對(duì)應(yīng)的名稱 */ tk_snprintf(ch, sizeof(ch), "%s key up", ktv->name); widget_set_text_utf8(label, ch);
return RET_OK;}

2. 設(shè)定自定義按鍵值

在項(xiàng)目的資源目錄“assets/default/data/”(沒(méi)有data文件夾可自行創(chuàng)建)新建一個(gè)名為“custom_keys.json”的配置文件,該配置文件記錄按鍵名稱與按鍵值對(duì)應(yīng)關(guān)系。下面是記錄“啟動(dòng)”與“F1”兩個(gè)按鈕鍵值示例:

{ "START" : { "value" : 290 }, "F1" : { "value" : 279 }}

文件中“290”與“279”兩個(gè)值可以從ZTP800示教器的用戶手冊(cè)中獲取,之后在示教器上運(yùn)行程序,按下“啟動(dòng)”與“F1”兩個(gè)按鍵就能像文章開(kāi)頭效果圖一樣正確識(shí)別按鍵值并顯示在靜態(tài)文本控件中。

嵌入式Linux如何開(kāi)啟綁定物理按鍵功能

若經(jīng)過(guò)上面步驟操作之后還沒(méi)效果,可能是沒(méi)有開(kāi)啟ENABLE_CUSTOM_KEYS宏。此時(shí)可以在AWTK編譯選項(xiàng)中定義ENABLE_CUSTOM_KEYS=1,再進(jìn)行編譯AWTK與應(yīng)用即可開(kāi)啟自定義按鍵功能,下圖是在awtk-linux-fb移植層的awtk_config.py開(kāi)啟ENABLE_CUSTOM_KEYS宏的方法,其它平臺(tái)可根據(jù)實(shí)際步驟開(kāi)啟該宏。

35bb7440-239b-11ef-bd4a-92fbcf53809c.png

圖3配置awtk_config.py開(kāi)啟宏

RTOS如何綁定物理按鍵

如果想在RTOS平臺(tái)綁定物理按鍵也是比較簡(jiǎn)單的,只需要在主循環(huán)通過(guò)按鍵掃描函數(shù)獲取物理按鍵并設(shè)置供AWTK識(shí)別的按鍵值,再調(diào)用AWTK函數(shù)main_loop_post_key_event將該按鍵值發(fā)送到GUI界面即可。
下面是一段STM32F103移植層對(duì)接物理按鍵的代碼示例,代碼先調(diào)用底層KEY_Scan按鍵掃描函數(shù)獲取實(shí)際物理按鍵,接著將按鍵值轉(zhuǎn)換成給AWTK識(shí)別的值(如:TK_KEY_UP),最后通過(guò)main_loop_post_key_event發(fā)送給上層GUI主循環(huán)事件隊(duì)列。

/* awtk-stm32f103ze-raw/awtk-port/main_loop_stm32_raw.c */void dispatch_input_events(void) { int key = KEY_Scan(0);
switch (key) { case KEY_UP: { key = TK_KEY_UP; break; } case KEY_DOWN: { key = TK_KEY_DOWN; break; } default: { key = 0; } }
if (key) { main_loop_post_key_event(main_loop(), TRUE, key); } else { main_loop_post_key_event(main_loop(), FALSE, key); }}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 檢測(cè)
    +關(guān)注

    關(guān)注

    5

    文章

    4488

    瀏覽量

    91472
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136827
  • awtk
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    234
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AWTK使用經(jīng)驗(yàn)】如何添加中文輸入法

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 06-20 08:25 ?1049次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何添加中文輸入法

    AWTK使用經(jīng)驗(yàn)】如何更換AWTK SDK與渲染模式

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何播放攝像頭畫面?如何更換
    的頭像 發(fā)表于 08-01 08:25 ?1074次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何更換<b class='flag-5'>AWTK</b> SDK與渲染模式

    什么是AWTK?AWTK有哪些主要特色?

    什么是AWTKAWTK有哪些主要特色?
    發(fā)表于 06-16 06:43

    AWTK主要特色

    一、前言剛拿到字節(jié)offer,經(jīng)歷了5次面試,其中4輪技術(shù)面,1輪HR面試。在這里分享一下自己的面試經(jīng)驗(yàn)和學(xué)習(xí)心得。希望能夠幫助更多的小伙伴。我本科畢業(yè)于四川師范學(xué)院計(jì)算機(jī)系,剛畢業(yè)時(shí)也是小白,也是
    發(fā)表于 08-20 07:28

    介紹AWTK

    ZLG 開(kāi)源 GUI 引擎 AWTK 1.6 發(fā)布一、介紹AWTK全稱 Toolkit AnyWhere,是ZLG開(kāi)發(fā)的開(kāi)源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和 PC 打造
    發(fā)表于 08-20 08:09

    AWTK的寓意

    一、介紹AWTK全稱Toolkit AnyWhere,是ZLG開(kāi)發(fā)的開(kāi)源GUI引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和PC打造的通用GUI引擎,為用戶提供一個(gè)功能強(qiáng)大、高效可靠、簡(jiǎn)單易用
    發(fā)表于 08-20 08:12

    介紹AWTK

    ZLG開(kāi)源GUI引擎AWTK發(fā)布1.1版本一、介紹AWTK全稱Toolkit AnyWhere,是ZLG開(kāi)發(fā)的開(kāi)源GUI引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和PC打造的通用GUI引擎,為
    發(fā)表于 08-20 08:18

    Android 代碼模擬物理按鍵

    開(kāi)發(fā)中有遇到這樣的情況,物理按鍵個(gè)數(shù)有限, 想用代碼模擬其他物理按鍵輸入,這里用了shell 命令在程序運(yùn)行時(shí)環(huán)境里模擬按鍵事件。因命令執(zhí)行
    發(fā)表于 10-22 15:21 ?43次下載
    Android  代碼模擬<b class='flag-5'>物理</b><b class='flag-5'>按鍵</b>

    AWTK使用經(jīng)驗(yàn)】如何設(shè)計(jì)立體電池進(jìn)度條?

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 04-18 08:25 ?456次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何設(shè)計(jì)立體電池進(jìn)度條?

    AWTK使用經(jīng)驗(yàn)】加載和釋放外部圖片

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。《AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 04-26 08:25 ?474次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】加載和釋放外部圖片

    AWTK使用經(jīng)驗(yàn)】如何播放視頻或攝像頭畫面

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 07-04 08:25 ?615次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何播放視頻或攝像頭畫面

    AWTK使用經(jīng)驗(yàn)】如何實(shí)現(xiàn)序列幀動(dòng)畫

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章
    的頭像 發(fā)表于 07-18 08:25 ?429次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何實(shí)現(xiàn)序列幀動(dòng)畫

    AWTK使用經(jīng)驗(yàn)】如何在AWTK顯示阿拉伯文本

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。AWTK使用經(jīng)驗(yàn)系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何播放視頻或攝像頭畫面?如何播放序列幀動(dòng)畫?這些都會(huì)在系列文
    的頭像 發(fā)表于 09-12 08:07 ?357次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何在<b class='flag-5'>AWTK</b>顯示阿拉伯文本

    AWTK使用經(jīng)驗(yàn)】如何裁剪字庫(kù)以及如何使用點(diǎn)陣字

    AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。AWTK使用經(jīng)驗(yàn)系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案。AWTK如何裁剪字庫(kù)在
    的頭像 發(fā)表于 10-10 08:05 ?293次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何裁剪字庫(kù)以及如何使用點(diǎn)陣字

    AWTK使用經(jīng)驗(yàn)】如何使用系統(tǒng)輸入法與開(kāi)啟最大化窗口功能

    導(dǎo)讀AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架。AWTK使用經(jīng)驗(yàn)系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案。AWTK具有跨平臺(tái)的
    的頭像 發(fā)表于 11-14 01:05 ?241次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經(jīng)驗(yàn)</b>】如何使用系統(tǒng)輸入法與開(kāi)啟最大化窗口功能
    主站蜘蛛池模板: 免费看很黄很色裸乳视频| 国产色网站| 99色在线播放| 日本色片视频| www.三级.com| 奇米影视四色7777| 日韩欧美亚洲一区| 人人看人人澡| 天天插天天操天天干| 亚洲一卡2卡4卡5卡6卡在线99| 四虎影视大全免费入口| 成人永久免费视频网站在线观看| 国产chinesehd精品酒店| 亚洲精品香蕉婷婷在线观看| 国产nv精品你懂得| 男女性高爱麻豆| 99精品热| 高清国产一区二区三区| 人人揉揉香蕉大青草| 色中文网| 天天曰夜夜操| 男人午夜| 国内精品视频| 欧美性xxxx巨大黑人猛| 一级毛片 在线播放| 国产美女在线免费观看| 人人艹人人射| 亚洲国产成人精品久久| sihu在线| 日本免费视频| 黄色三级视频| 黄在线网站| 日本成人视屏| 精品久久久久久| 四虎影院永久在线观看| 午夜精品视频在线| 35pao强力打造| 美女被羞羞产奶视频网站| 天天操 夜夜操| 在线天堂网| 一级特黄a免费大片|