diff options
Diffstat (limited to 'libgm2/libm2cor/KeyBoardLEDs.cc')
-rw-r--r-- | libgm2/libm2cor/KeyBoardLEDs.cc | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/libgm2/libm2cor/KeyBoardLEDs.cc b/libgm2/libm2cor/KeyBoardLEDs.cc index 8d2b50bf99e..32f4c0ce711 100644 --- a/libgm2/libm2cor/KeyBoardLEDs.cc +++ b/libgm2/libm2cor/KeyBoardLEDs.cc @@ -46,10 +46,27 @@ static int fd; static bool initialized = false; +void +initialize_module (void) +{ + if (! initialized) + { + initialized = true; + fd = open ("/dev/tty", O_RDONLY); + if (fd == -1) + { + perror ("unable to open /dev/tty"); + exit (1); + } + } +} + extern "C" void EXPORT(SwitchScroll) (int scrolllock) { unsigned char leds; + + initialize_module (); int r = ioctl (fd, KDGETLED, &leds); if (scrolllock) leds = leds | LED_SCR; @@ -62,6 +79,8 @@ extern "C" void EXPORT(SwitchNum) (int numlock) { unsigned char leds; + + initialize_module (); int r = ioctl (fd, KDGETLED, &leds); if (numlock) leds = leds | LED_NUM; @@ -74,6 +93,8 @@ extern "C" void EXPORT(SwitchCaps) (int capslock) { unsigned char leds; + + initialize_module (); int r = ioctl (fd, KDGETLED, &leds); if (capslock) leds = leds | LED_CAP; @@ -93,16 +114,6 @@ EXPORT(SwitchLeds) (int numlock, int capslock, int scrolllock) extern "C" void M2EXPORT(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 |