From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1499) id DBAFD3858D3C; Sun, 24 Jul 2022 22:49:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DBAFD3858D3C Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Gaius Mulley To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/modula-2] libgm2/libm2cor/KeyboardLEDs.cc added X-Act-Checkin: gcc X-Git-Author: Gaius Mulley X-Git-Refname: refs/heads/devel/modula-2 X-Git-Oldrev: 57900dd7f9af9a22b8ada2d95c6fd6e72ebed21b X-Git-Newrev: c497ca7343a28e16bead46433dee12d51b556ec8 Message-Id: <20220724224930.DBAFD3858D3C@sourceware.org> Date: Sun, 24 Jul 2022 22:49:30 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Jul 2022 22:49:31 -0000 https://gcc.gnu.org/g:c497ca7343a28e16bead46433dee12d51b556ec8 commit c497ca7343a28e16bead46433dee12d51b556ec8 Author: Gaius Mulley Date: Sun Jul 24 23:48:32 2022 +0100 libgm2/libm2cor/KeyboardLEDs.cc added Signed-off-by: Gaius Mulley Diff: --- libgm2/libm2cor/KeyBoardLEDs.cc | 157 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) diff --git a/libgm2/libm2cor/KeyBoardLEDs.cc b/libgm2/libm2cor/KeyBoardLEDs.cc new file mode 100644 index 00000000000..b640df67adc --- /dev/null +++ b/libgm2/libm2cor/KeyBoardLEDs.cc @@ -0,0 +1,157 @@ +/* KeyBoardLEDs.c provide access to the keyboard LEDs. + +Copyright (C) 2005-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#include +#include + +#if defined(linux) + +#include +#include +#include +#include +#include +#include + +#if !defined(TRUE) +# define TRUE (1==1) +#endif +#if !defined(FALSE) +# define FALSE (1==0) +#endif + +#include + +static int fd; +static int initialized = FALSE; + + +extern "C" void +KeyBoardLEDs_SwitchScroll (int scrolllock) +{ + unsigned char leds; + int r = ioctl (fd, KDGETLED, &leds); + if (scrolllock) + leds = leds | LED_SCR; + else + leds = leds & (~ LED_SCR); + r = ioctl (fd, KDSETLED, leds); +} + +extern "C" void +KeyBoardLEDs_SwitchNum (int numlock) +{ + unsigned char leds; + int r = ioctl (fd, KDGETLED, &leds); + if (numlock) + leds = leds | LED_NUM; + else + leds = leds & (~ LED_NUM); + r = ioctl (fd, KDSETLED, leds); +} + +extern "C" void +KeyBoardLEDs_SwitchCaps (int capslock) +{ + unsigned char leds; + int r = ioctl (fd, KDGETLED, &leds); + if (capslock) + leds = leds | LED_CAP; + else + leds = leds & (~ LED_CAP); + r = ioctl (fd, KDSETLED, leds); +} + +extern "C" void +KeyBoardLEDs_SwitchLeds (int numlock, int capslock, int scrolllock) +{ + KeyBoardLEDs_SwitchScroll (scrolllock); + KeyBoardLEDs_SwitchNum (numlock); + KeyBoardLEDs_SwitchCaps (capslock); +} + +extern "C" void +_M2_KeyBoardLEDs_init (int, char **, char **) +{ + if (! initialized) + { + initialized = TRUE; + fd = open ("/dev/tty", O_RDONLY); + if (fd == -1) + { + perror ("unable to open /dev/tty"); + exit (1); + } + } +} + +#else +extern "C" void +KeyBoardLEDs_SwitchLeds (int numlock, int capslock, int scrolllock) +{ +} + +extern "C" void +KeyBoardLEDs_SwitchScroll (int scrolllock) +{ +} + +extern "C" void +KeyBoardLEDs_SwitchNum (int numlock) +{ +} + +extern "C" void +KeyBoardLEDs_SwitchCaps (int capslock) +{ +} + +extern "C" void +_M2_KeyBoardLEDs_init (int, char **, char **) +{ +} + +#endif + +/* GNU Modula-2 linking hooks. */ + +extern "C" void +_M2_KeyBoardLEDs_finish (int, char **, char **) +{ +} + +extern "C" void +_M2_KeyBoardLEDs_dep (void) +{ +} + +struct _M2_KeyBoardLEDs_ctor { _M2_KeyBoardLEDs_ctor (); } _M2_KeyBoardLEDs_ctor; + +_M2_KeyBoardLEDs_ctor::_M2_KeyBoardLEDs_ctor (void) +{ + M2RTS_RegisterModule ("KeyBoardLEDs", _M2_KeyBoardLEDs_init, _M2_KeyBoardLEDs_finish, + _M2_KeyBoardLEDs_dep); +}