다음 이전 차례

10. 키보드 LED

1. 각 tty당 키보드 플래그가 존재한다. 각각의 VC에는 고유의 NumLock, CapsLock, ScrollLock이 존재한다. 디폴트 값으로 이 키보드 플래그는 LED에 표시된다. 이것의 설정을 바꾸는 통상적인 방법은 해당되는 키를 누르는 것이다. (첨언: 어플리케이션 키모드에 있을 때 NumLock 키를 누르면 NumLock 상태를 바꾸지 않고 이스케이프 시퀀스를 발생시킨다. 어떠한 경우에라도 이 키를 먹도록 하고 싶다면 NumLock을 Bare_Num_Lock에 연결시켜두면 된다.

2. 각 tty당 디폴트 키보드 플래그가 존재한다. 재설정 신호가 들어오면 키보드를 초기화한다. 따라서 항상 NumLock이 켜지도록 할 수도 있다. `setleds -D라고 하면 된다.

3. led가 키보드 플래그를 반영하지 않고 뭔가 다른 것을 나타낼 수도 있다.

3A. 뭔가 다른 것중 하나는 커널에 있는 세개의 비트로서, 사용자가 어떤 하드웨어나 소프트웨어 상태를 감시하기 위해 사용될 수 있다. 이러한 기능을 원한다면 커널 소스를 편집하여 register_leds()를 호출하도록 해야 한다.

3B. 사용자 프로그램이 LED에 표시되도록 하는 것도 여기에 해당된다. 따라서 이러한 기능을 사용하면 쓸만한 프로그램을 만들 수 있다. 이렇게 하려면 KDSETLED ioctl을 사용해야 한다.

후자와 같은 사용은 tty별로 적용되는 것이 아니지만 전자와 후자간의 선택은 tty당 할 수 있다.

요약: 각각의 tty에는 플래그 kbd->ledmode가 있다. 이것이 LED_SHOW_FLAGS 값을 가지면 해당 tty에 키보드 플래그(NumLock 등)가 표시된다. 이것이 LED_SHOW_MEM 값을 가지면 선택된 3개의 메모리 주소가 표시된다. 이것이 LED_SHOW_IOCTL 값을 가지면 led는 KDSETLED ioctl가 할당한 가장 최신의 값을 보여준다.

하나만 더 추가하면, X는 ioctl을 사용하여 LED를 설정한다. 하지만 종료가 될 때 X를 띄웠던 VT를 재설정하지 못한다. 따라서 X를 사용하고 나면 디폴트 LED_SHOW_FLAGS 상태로 있지 않은 VT가 생길 수도 있다. 이런 경우 `setleds -L'을 그 VT에서 실행하면 문제가 해결된다. setleds(1)를 참조하라.


다음 이전 차례