summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2024-07-01 00:30:35 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2024-07-01 00:30:35 +0200
commitd411d390920c7d5767e3f754696002c9d38b091c (patch)
treee6f83fc8db1cc6c7baee2ff4b47651b2e6259a76 /test
parent54f44d5ac9e0b2a8dbf0feda2574635e962f5e93 (diff)
Improve test/handle_keys.cxx
- colorize output - improve formatting - log status of Fl::OPTION_SIMPLE_ZOOM_SHORTCUT
Diffstat (limited to 'test')
-rw-r--r--test/handle_keys.cxx32
1 files changed, 26 insertions, 6 deletions
diff --git a/test/handle_keys.cxx b/test/handle_keys.cxx
index de38ef38c..c5b4409cd 100644
--- a/test/handle_keys.cxx
+++ b/test/handle_keys.cxx
@@ -35,9 +35,11 @@ Fl_Check_Button *scaling = NULL;
// Text in the headline and after clearing the terminal buffer. For alignment ...
// 1 2 3 4 5 6 7 8
-// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
+// 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345
static const char *headline_text =
- "[nnn] Event Key Name, Flags: C A S M N L Text Unicode UTF-8/hex";
+ "[nnn] Event Key Name, Flags: C A S M N L Text Unicode UTF-8/hex";
+
+static const int lkn = 14; // length of key name field
// Tooltip for headline and terminal widgets
static const char *tt =
@@ -101,7 +103,9 @@ struct keycode_table {
const char *get_keyname(int k, int &lg) {
static char buffer[32];
+ lg = 0;
if (!k) {
+ lg = 1;
return "0";
}
else if (k < 32) { // control character
@@ -197,12 +201,15 @@ int app::print_event(int ev) {
switch(ev) {
case FL_KEYBOARD:
if (!keydown->value()) return 0;
+ tty->textfgcolor(FL_BLACK);
break;
case FL_KEYUP:
if (!keyup->value()) return 0;
+ tty->textfgcolor(FL_BLUE);
break;
case FL_SHORTCUT:
if (!shortcut->value()) return 0;
+ tty->textfgcolor(0x00aa0000); // dark green
break;
default:
return 0;
@@ -231,11 +238,16 @@ int app::handle(int ev) {
char numlk = (Fl::event_state() & FL_NUM_LOCK) ? 'N' : '.';
char capslk = (Fl::event_state() & FL_CAPS_LOCK) ? 'L' : '.';
- tty->printf("%06x ", ekey); // event key number (hex)
int lg = 0;
+ char ekns[12]; // event key (hex) as string
+ sprintf(ekns, "0x%04x", ekey); // may be up to 10 chars
+ tty->printf("%10s ", ekns); // event key number (hex)
+
tty->printf("%s", get_keyname(ekey, lg));
- for (int i = lg; i < 14; i++) {
- tty->printf(" ");
+ if (lg < lkn) {
+ for (int i = 0; i < lkn - lg; i++) {
+ tty->append_ascii(" ");
+ }
}
tty->printf("%c %c %c %c %c %c ", ctrl, alt, shift, meta, numlk, capslk);
@@ -254,6 +266,7 @@ int app::handle(int ev) {
} else {
tty->printf("'' ");
}
+ tty->textfgcolor(FL_BLACK);
tty->printf("\n");
return res;
} // app::handle()
@@ -302,6 +315,12 @@ void toggle_cb(Fl_Widget *w, void *) {
void toggle_scaling(Fl_Widget *w, void *v) {
int toggle = ((Fl_Button*)w)->value() ? 1 : 0;
Fl::keyboard_screen_scaling(toggle);
+ if (toggle) {
+ Terminal *tty = ((app *)w->window())->tty;
+ int simple_zoom = Fl::option(Fl::OPTION_SIMPLE_ZOOM_SHORTCUT);
+ tty->printf("GUI-Scaling = %s, OPTION_SIMPLE_ZOOM_SHORTCUT = %s\n",
+ toggle ? "ON" : "OFF", simple_zoom ? "ON" : "OFF");
+ }
toggle_cb(w, v); // give focus to 'app'
}
@@ -319,7 +338,7 @@ int main(int argc, char **argv) {
// Set an appropriate font for Wine on Linux (test only).
// This is very likely not necessary on a real Windows system
-#if (1) // test/experimental for wine on Linux (maybe missing fonts)
+#if (0) // test/experimental for wine on Linux (maybe missing fonts)
#ifdef _WIN32
// Fl::set_font(FL_COURIER, " DejaVu Sans Mono"); // DejaVu Mono
// Fl::set_font(FL_COURIER, "BNimbus Mono PS"); // Nimbus Mono PS bold
@@ -331,6 +350,7 @@ int main(int argc, char **argv) {
app *win = new app(0, 0, WW, WH);
win->tty->box(FL_DOWN_BOX);
win->tty->show_unknown(true);
+ win->tty->textfgcolor(FL_BLACK);
win->tty->printf("Please press any key ...\n");
Fl_Grid *grid = new Fl_Grid(0, WH - 75, WW, 75);