summaryrefslogtreecommitdiff
path: root/libgm2/libm2cor/KeyBoardLEDs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libgm2/libm2cor/KeyBoardLEDs.cc')
-rw-r--r--libgm2/libm2cor/KeyBoardLEDs.cc31
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