2021-08-31 15:52:53 +02:00
|
|
|
#include <gint/keyboard.h>
|
|
|
|
#include <gint/timer.h>
|
|
|
|
|
|
|
|
#include "term.h"
|
|
|
|
#include <gint/display.h>
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
static char *LOREM_IPSUM =
|
|
|
|
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vitae purus dolor. Praesent in ex tempus, auctor velit at, "
|
|
|
|
"vulputate sapien. Aenean semper, dui vitae iaculis mattis, odio libero aliquet elit, nec tempor nisl turpis vel arcu. "
|
|
|
|
"Vestibulum eleifend maximus enim at sollicitudin. Nulla eu commodo justo. Ut vitae pellentesque erat. Duis magna nisl, "
|
|
|
|
"eleifend ac massa at, blandit sollicitudin ipsum. Interdum et malesuada fames ac ante ipsum primis in faucibus. "
|
|
|
|
"Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut at libero in turpis porttitor "
|
|
|
|
"viverra. Ut eu pellentesque purus. Vestibulum aliquet facilisis ante, eget volutpat metus. Cras semper lacus ac mauris "
|
|
|
|
"imperdiet, vel egestas est luctus. Aliquam elit enim, dignissim nec enim vel, consequat ullamcorper libero. Pellentesque at "
|
|
|
|
"iaculis lctus. Praesent sed velit at tellus hendrerit mattis eu nec velit. Phasellus eu quam nec nisi mattis elementum quis "
|
|
|
|
"nec enim. Nulla efficitur turpis id tempus ultricies. Pellentesque semper lacinia mi vitae feugiat. Vestibulum leo nisi, "
|
|
|
|
"pretium quis felis non, mattis varius risus. "
|
|
|
|
"Suspendisse porttitor purus lacinia ante euismod, ut eleifend massa fermentum. Proin pretium elementum massa, at efficitur "
|
2021-08-31 16:30:03 +02:00
|
|
|
"risus iaculis sed.";
|
2021-08-31 15:52:53 +02:00
|
|
|
|
|
|
|
static volatile int key_poll_timeout;
|
|
|
|
static int tick_ctr = 0;
|
|
|
|
static int callback_keypoll(void) {
|
|
|
|
key_poll_timeout = 0;
|
|
|
|
return TIMER_STOP;
|
|
|
|
}
|
|
|
|
|
2021-09-01 10:20:28 +02:00
|
|
|
int shift_ctr = 0;
|
2021-08-31 17:22:45 +02:00
|
|
|
static char statusbar[UNS_TERM_COLS + 1];
|
|
|
|
static void set_statusbar(void) {
|
|
|
|
// set green bar
|
|
|
|
for (int i = 0; i < UNS_TERM_COLS; i++)
|
|
|
|
tgrid_sets(0, i, C_NONE, C_GREEN, " ");
|
|
|
|
|
|
|
|
// then add actutal text
|
2021-09-01 10:20:28 +02:00
|
|
|
sprintf(statusbar, "↑Aa %d %d", tick_ctr, shift_ctr);
|
2021-08-31 17:22:45 +02:00
|
|
|
tgrid_sets(0, 0, C_BLACK, C_GREEN, statusbar);
|
|
|
|
}
|
|
|
|
|
2021-09-01 10:20:28 +02:00
|
|
|
static void center_str(int len, char buf[len], const char* s) {
|
|
|
|
const int l = strlen(s);
|
|
|
|
const int before = len/2 - l/2;
|
|
|
|
|
|
|
|
int i;
|
|
|
|
for (i=0; i < before; i++)
|
|
|
|
buf[i] = ' ';
|
|
|
|
|
|
|
|
for (int j = 0; j < l; j++)
|
|
|
|
buf[i++] = s[j];
|
|
|
|
|
|
|
|
for (; i < len; i++)
|
|
|
|
buf[i] = ' ';
|
|
|
|
}
|
|
|
|
|
|
|
|
static char fnkeys[6][11] = {"opt 1-", "opt 2--", "opt 3---", "opt 4----", "opt 5-----", "opt 6"};
|
2021-08-31 17:22:45 +02:00
|
|
|
static void set_menubar(void) {
|
|
|
|
int col = 0;
|
|
|
|
for (int i = 0; i < 6; i++) {
|
2021-09-01 10:20:28 +02:00
|
|
|
char buf[11] = "";
|
|
|
|
center_str(10, buf, fnkeys[i]);
|
|
|
|
buf[10] = '\0';
|
|
|
|
|
2021-08-31 17:22:45 +02:00
|
|
|
tgrid_sets(UNS_TERM_ROWS - 1, col, C_WHITE, C_BLUE, buf);
|
|
|
|
col += 10 + 1;
|
|
|
|
}
|
|
|
|
}
|
2021-08-31 15:52:53 +02:00
|
|
|
|
|
|
|
int main(void) {
|
2021-09-01 10:20:52 +02:00
|
|
|
const int timer = timer_configure(TIMER_ANY, 15625, GINT_CALL(callback_keypoll));
|
2021-08-31 15:52:53 +02:00
|
|
|
|
|
|
|
while (1) {
|
|
|
|
tgrid_sets(1, 0, C_WHITE, C_BLACK, LOREM_IPSUM);
|
2021-08-31 17:22:45 +02:00
|
|
|
set_statusbar();
|
|
|
|
set_menubar();
|
2021-08-31 15:52:53 +02:00
|
|
|
tgrid_display();
|
|
|
|
|
|
|
|
key_poll_timeout = 1;
|
|
|
|
key_event_t kev = getkey_opt(GETKEY_DEFAULT, &key_poll_timeout);
|
2021-08-31 17:22:45 +02:00
|
|
|
timer_start(timer);
|
2021-08-31 15:52:53 +02:00
|
|
|
if (kev.type != KEYEV_NONE)
|
|
|
|
tick_ctr++;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|