15

I would like turn on/turn off some of my leds running a command on linux.

I use Ubuntu 12.04 LTS.

I tried

xset led named "Scroll Lock"
xset led named "Num Lock"
xset led 2             (this is the number of Scroll Lock as `xset q` says)
xset led 1

but nothing works.

Tried

setleds +num
setleds +scroll

but I got a error message saying Error reading the current settings of flags. Maybe you're not on the console? (I was in a terminal).

So, how can I perform this?

Devid
  • 6,299
  • 13
  • 55
  • 74
GarouDan
  • 585
  • 3
  • 7
  • 19

7 Answers7

11

xdotool key Num_Lock

Is the an answer (the easiest you're likely to find); inverting the state, it also provides a path to search (xinput and modifying a slave keyboard state) if you really just want to set an led status.

I too ran across my Num Lock keyboard LED and X11 state differing recently (happens with remote desktops, games, etc)

This reference explains what's going on, and almost has the complete solution (but it has a case-typo, you need Num_Lock not Num_lock).

http://blog.ssokolow.com/archives/2013/04/18/how-to-invert-your-x11-numlock-led/

  • This should be the accepted answer. Best solution I've ever seen. Thank you! The lights are so annoying! – jocap May 13 '14 at 21:22
  • 1
    Note that `xdotool key Num_Lock` is not as innocent as turning a LED on or off; It is the equivalent of actually pressing the key! – Serge Stroobandt Nov 04 '18 at 12:14
7

To turn Scroll Lock led on run:

xset -led 2 led on

To turn it off run:

xset -led 2 led off
4

There is also solution without any extra software. Just use:

echo "1" > /sys/class/leds/input20::scrolllock/brightness
#Or
echo "1" > /sys/class/leds/input20::/brightness

as root.

1

Press Ctrl+Alt+F1, login, and then try setleds.

VenkatH
  • 616
  • 3
  • 14
  • Interesting. `setleds` (not `xset`) worked for me now too. Looks like we need set a `display`. I tried several things but nothing worked. But, looks we're almost. – GarouDan Jun 17 '12 at 11:28
  • 2
    This isnt the final answer to me, because I need this working on the gui display, not at the console display. – GarouDan Jul 23 '12 at 19:55
0

As noted in this answer, if your screen is on TTY1, but you try to control the LEDs from somewhere else (such as an SSH session), you can use setleds in the following way:

setleds -L +num +caps +scroll < /dev/tty1
cdauth
  • 368
  • 2
  • 3
  • 19
0

Install xf86-input-keyboard if you don't have it.

Set kbd_mode -u

Make sure you don't have multiple instances of the KB (check what XINPUT: reports).

Overmind
  • 9,924
  • 4
  • 25
  • 38
-1

Just use the command:

numlockx on 

or

numlockx off

to change the state.

slhck
  • 223,558
  • 70
  • 607
  • 592
minux
  • 1