From 829cac52c63bfb0b9ec87a36a586f4956a55624d Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 6 Jan 2024 17:48:41 +0100 Subject: [PATCH] Fix numeric keyboard example program examples/howto-remap-numpad-keyboard-keys.cxx: Substitute Fl::event_key() as well which is required for some input widgets - maybe only on some platforms (seemed to work on X11 but not on Wayland). Also: fix typos and whitespace. --- examples/howto-remap-numpad-keyboard-keys.cxx | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/examples/howto-remap-numpad-keyboard-keys.cxx b/examples/howto-remap-numpad-keyboard-keys.cxx index 20639224d..c424e7d88 100644 --- a/examples/howto-remap-numpad-keyboard-keys.cxx +++ b/examples/howto-remap-numpad-keyboard-keys.cxx @@ -1,4 +1,19 @@ -// vim: autoindent tabstop=8 shiftwidth=2 expandtab softtabstop=2 +// +// Numeric keypad demo program for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2024 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// https://www.fltk.org/COPYING.php +// +// Please see the following page on how to report bugs and issues: +// +// https://www.fltk.org/bugs.php +// + // // Demonstrate keyboard remapping: Force number pad to type numbers even if NumLock off // @@ -21,46 +36,33 @@ // // This demo based on fltk.general thread entitled "keyboard mapping", Aug 2019. // -// * * * -// -// Copyright 1998-2017 by Bill Spitzak and others. -// -// This library is free software. Distribution and use rights are outlined in -// the file "COPYING" which should have been included with this file. If this -// file is missing or damaged, see the license at: -// -// https://www.fltk.org/COPYING.php -// -// Please see the following page on how to report bugs and issues: -// -// https://www.fltk.org/bugs.php -// #include #include #include #include -// Fl_Check_Button *G_checkbut = 0; // Global event handler: FLTK calls this after event translation. It's up to us // to call Fl::handle_(e,w) to actually deliver the event to the widgets. If we // don't and just return, the event will be dropped. See docs for more. -// + int MyHandler(int e, Fl_Window *w) { // Remapping disabled? Early exit.. - if ( G_checkbut->value() == 0 ) return Fl::handle_(e, w); + if (G_checkbut->value() == 0) + return Fl::handle_(e, w); // Keyboard key pressed? See if we should remap.. - if ( e == FL_KEYDOWN || e == FL_KEYUP) { + if (e == FL_KEYDOWN || e == FL_KEYUP) { // Get FLTK keycode /before/ NumLock state is applied (see above DESCRIPTION) int keycode = Fl::event_original_key(); // get keycode before FLTK applies NumLock - if ( keycode >= FL_KP && keycode <= FL_KP_Last ) { // keypad key pressed? + if (keycode >= FL_KP && keycode <= FL_KP_Last) { // keypad key pressed? static char buf[2]; // static: we don't want buffer to go out of scope buf[0] = char(keycode - FL_KP); // convert keypad keycode -> ascii buf[1] = 0; // terminate string (for safety) Fl::e_text = buf; // point to our static buffer Fl::e_length = 1; // only first char relevant + Fl::e_keysym = keycode; // note: some input widgets require this too } } return Fl::handle_(e, w); // let FLTK deliver event to widgets @@ -71,14 +73,14 @@ int main(int argc, char *argv[]) { win->begin(); { new Fl_Input(100, 10, 200, 25, "Input:"); - G_checkbut = new Fl_Check_Button(100,40,280,25," Force numeric keypad to type numbers"); + G_checkbut = new Fl_Check_Button(100, 40, 280, 25, "Force numeric keypad to type numbers"); G_checkbut->labelsize(12); G_checkbut->set(); } win->end(); win->resizable(win); win->show(argc, argv); - win->tooltip("Turn NumLock OFF, then type into Input:\nusing numeric keypadt to test translation"); + win->tooltip("Turn NumLock OFF, then type into Input:\nusing numeric keypad to test translation"); // Set up our event handler to manage events Fl::event_dispatch(MyHandler); return(Fl::run());