📄 tinymenu_test.c
字号:
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include "spin_delay.h"
#include "lcd_pcd8544.h"
#include "lcd_pcd8544_text.h"
#include "tinymenu.h"
#include "joystick.h"
void my_select(void *arg, char *name);
menu_t sub1_menu = {
.top_entry = 0,
.current_entry = 0,
.entry = {
{.flags = 0,
.select = my_select,
.name = "s2",
.value = 0,
},
{.flags = 0,
.select = my_select,
.name = "s3",
.value = 0,
},
{.flags = 0,
.select = my_select,
.name = "s4",
.value = 0,
},
},
.num_entries = 3,
.previous = NULL,
};
menu_t sub2_menu = {
.top_entry = 0,
.current_entry = 0,
.entry = {
{.flags = 0,
.select = my_select,
.name = "s5",
.value = 0,
},
{.flags = 0,
.select = my_select,
.name = "s6",
.value = 0,
},
{.flags = 0,
.select = my_select,
.name = "s7",
.value = 0,
}
},
.num_entries = 3,
.previous = NULL,
};
menu_t main_menu = {
.top_entry = 0,
.current_entry = 0,
.entry = {
{.flags = MENU_FLAG_SUBMENU,
.select = NULL,
.name = "submenu 1",
.value = &sub1_menu,
},
{.flags = MENU_FLAG_SUBMENU,
.select = NULL,
.name = "submenu 2",
.value = &sub2_menu,
},
{.flags = 0,
.select = my_select,
.name = "something",
.value = 0,
}
},
.num_entries = 3,
.previous = NULL,
};
menu_context_t menu_context = {
.x_loc = 0,
.y_loc = 0,
.height = 2,
.width = 10,
.menu = NULL,
};
void my_select(void *arg, char *name)
{
lcd_clear();
lcd_puts("Selected: ");
lcd_puts(name);
ms_spin(750);
}
int main()
{
uint8_t j;
joystick_init();
menu_enter(&menu_context, &main_menu);
while (1) {
ms_spin(50);
j = joystick_read();
switch(j) {
case JOYSTICK_UP:
menu_next_entry(&menu_context);
break;
case JOYSTICK_DOWN:
menu_prev_entry(&menu_context);
break;
case JOYSTICK_LEFT:
menu_exit(&menu_context);
break;
case JOYSTICK_RIGHT:
case JOYSTICK_BUTTON:
menu_select(&menu_context);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -