NumLock을 항상 켜두십시오


29

오른쪽에 숫자 키가있는 표준 키보드가 있습니다 (104 키 키보드라고 생각합니다). 숫자 키만 숫자 키로 사용하고 싶습니다. 즉 NumLock, 숫자 키를 켜거나 끄고 싶지 않습니다 .

그러나 때로는 NumLocknumlock이 해제되어 ( 어쩌면 실수로 키를 치는 방법을 모르겠습니다 ) 다시 발생해야합니다. 이것은 매우 성가신 일입니다.

Numlock을 끄는 것이 가능합니까?

, 숫자 키가 항상 숫자 키 역할을하고 numlock 스위치를 비활성화하기를 원합니다 .

데비안과 LXDE (Openbox)를 사용하고 있습니다.


이 스레드가 있습니다 : ubuntuforums.org/showthread.php?t=2138114
slm

@MartinVegter겠습니까 여기의 내용을 게시 좋아 ~/.config/openbox/autostart하고 ~/.config/openbox/rc.xml?
Risto Salminen

Numlock이 ON임을 감지하면 Numlock이 다시 트리거되는 이벤트가 필요합니다. Numlock 비활성화는에서 언급 한 것처럼 쉽습니다 xmodmap. 남은 질문은 그 이벤트를 얻는 방법입니다.
SHW

답변:


7

여기에있는 모든 대답을 읽은 후에는 다음을 수행 할 수 있다는 사실에 놀랐습니다.

<keybind key="Num_Lock">
  <action name="Execute">
    <command>numlockx on</command>
  </action>
</keybind>

Num따라서을 누를 때마다 numlock이 비활성화됩니다. numlockx onnumlock을 다시 활성화하는 을 실행 합니다.

이름은 내 출력에서 ​​비롯되었으며 xev키 코드 77과 이름을 제공했습니다.Num_Lock

@MartinVegters의 경우 그는 numlockx on이벤트 Num가 처리 된 후 확실히 실행 되도록 몇 초 기다려야 했습니다. 커널에서 numlock 처리와 실행간에 경쟁 조건이 있기 때문입니다 numlockx.

이 경우 다음 denumlock.sh과 같은 작은 스크립트를 작성할 수 있습니다

#!/bin/sh

sleep "$1"
numlockx on

키 바인딩에서 사용하십시오.

<command>/bin/sh denumlock.sh 1</command>

이것은 더럽지 만 작동합니다.

내가 추천하는 것은 내가 테스트 할 수없는 다음과 같습니다. 사용을 제안하는 첫 번째 답변을 따르는 것이 좋습니다.

xmodmap -e 'keycode 77 = Escape'

그러나 LXDE의 경우 Openbox 편집 방법과 다른 LXDE 자동 시작 메커니즘을 사용해야합니다 ~/.config/openbox/autostart.

LXDE에서는 시작 명령을 보유한 ~/.config/lxsession/LXDE/autostartLubuntu 또는 편집해야 ~/.config/lxsession/Lubuntu/autostart합니다. ( 아치 문서LXDE 문서 참조 ) 해당 파일을 작성하고이 행을 추가해야 할 수도 있습니다.

@xmodmap -e 'keycode 77 = Escape'

슬프게도, LXDE로 실행되는 VM 만 가지고 있기 때문에 이것이 작동하는지 테스트 할 수 없다고 말했습니다.


1
귀하의 솔루션을 시도 <keybind key="Num_Lock">했지만 불행히도 작동하지 않습니다. 명령 numlockx on이 실행되는 동안 <kbd> NumLock </ kbd>은 여전히 ​​해당 기능을 numlock으로 판매합니다. 따라서 여전히 numlock을 켜거나 끌 수 있습니다.
Martin Vegter

다른 솔루션에 관해서 xmodmap는 Risto Salminen이 제안한 솔루션을 시도했을 때 명령이 작동했지만 모든 키 바인딩을 잃어 버렸습니다.
Martin Vegter 2018 년

@MartinVegter Mhh sleep 3; numlockx on키 바인딩을 시도해 볼 수 있습니다. 두 번째 해결책은 자동 시작으로 시도 했습니까?
Raphael Ahrens

왜 그런지 이해 sleep 3; /usr/bin/numlockx on하지 못하지만 작동하지 않습니다. NumLock여전히 켜기 / 끄기 스위치 역할을합니다.
Martin Vegter 2016 년

@MartinVegter는 /usr/bin/numlockx on시스템에서 작동합니까?
Raphael Ahrens 2016 년


6

내 랩탑 키보드 (Ubuntu 10.04)에서 키보드 잠금이 현재 켜져 있습니다.

$ xmodmap -pke|grep 77
keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="

짜잔! numlock이 비활성화되었습니다.

xmodmap -e "keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"

다시 되돌립니다. (Num_lock에 대한 greping은 더 나은 아이디어 일 것 같지만 요점을 알 수 있습니다).

@Martin Vegter의 의견에 답하십시오.

Ok , 귀하의 의견에 답하여 xmodmap은 바인딩을 망칩니다.

방금 Openbox Documentation을 확인했습니다

~ / .config / openbox / lxde-rc.xml을 살펴보십시오.

ls -l lxde-rc.xml (rc.xml도 가지고 있습니까?를 확인하십시오).

백업본으로 복사

(편집기를 사용하여) numlock (nmlk)을 검색하십시오.

이거 보여요?

<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>

주석 처리 또는 키 바인드 키-값을 대체 (예 : Alt-Numlock)로 변경

key="A-Numlock"

예 :

하려면 주석

<!-Commented out from here
    <keybind key="Numlock">
    <action name="whatEverItSays"/>
    </keybind>
To Here -->

또는

Alt + Numlock 토글로 변경

<keybind key="A-Numlock">
  <action name="whatEverItSays"/>
</keybind>

변경 사항을 저장하고 로그 아웃 / 로그인하거나 다시 시작하십시오.


문제는 모든 xmodmap명령 (즉 xmodmap -e 'keycode 77 = Escape')이 기존 키 바인딩을 파괴 .config/openbox/lxde-rc.xml
한다는 것

1
더 나은 형식을 얻으려면 위에서 대답했습니다.
X Tian

답장을 보내 주셔서 감사합니다. 하지만, 내에 .config/openbox/lxde-rc.xml포함하는 어떤 라인이 없다 Numlock거나 Num_Lock. 하나를 만들면 아무런 효과가 없습니다. <keybind key = "Num_Lock"> <action name = "Execute"> <command> / bin / true </ command> </ action> </ keybind>
Martin Vegter

1
홈 디렉토리에있는 다른 구성 파일을 읽기 전에 있어야합니다. / etc / xdg / openbox와 / usr / share / ...를 찾는 것이 좋습니다. 이것이 도움이되지 않으면 포기해야합니다. 죄송합니다.
X Tian

3.4.7에서 변경된 로그 (openbox) "동일한 수준의 여러 바인딩을 변환 할 수없는 경우 수정 키 바인딩이 손실 됨 (
X Tian

5

로 numlock 키 코드를 찾으십시오 xev. 예를 들어, 여기서 Num_Lock은 77입니다.

xmodmap을 사용하여 키 코드를 다시 맵핑하십시오.

  • 쉘 내에서 현재 X 세션의 경우을 사용하십시오 xmodmap -e 'keycode 77 = '.
  • 모든 미래의 X 세션, 내부 ~/.xprofile장소 xmodmap -e 'keycode 77 = '.

    편집 : 참고 : 소프트웨어가 Num Lock 상태를 변경하면 작동하지 않습니다.


1
이 명령은 xmodmap -e 'keycode 77 = '작동하지만, 심각한 문제가 발생합니다 내 모든 키 바인딩의 작동이 중지
마틴 Vegter

글쎄, 당신은 유효하고 무해한 키에 매핑을 시도 할 수 있습니다. xmodmap -e 'keycode 77 = Escape'(YMMV 와 마찬가지로 ESC는 안전합니다). ~ / .Xmodmap 파일이 있습니까? 예, 대신의 경우 ~/.xprofile는 배치 keycode 77 = Escape이 파일의 끝에서.
emp.justine

1
문제는 모든 xmodmap명령 (즉 xmodmap -e 'keycode 77 = Escape')이 기존 키 바인딩을 파괴 .config/openbox/lxde-rc.xml
한다는 것

4

NumLock 키 매핑을 아무것도 매핑하지 않고 제거하십시오. 먼저 실행 xev하고 Num Lock을 누른 다음 (아마 77을 인쇄 할 것임) 명령을 실행하십시오.

xmodmap -e "keycode # = """

여기서 #은 NumLock의 키 코드입니다.

또한 ~/.xprofilex 세션에서 NumLock을 사용하지 않도록 설정합니다.


내 원래 질문이 명확하지 않은 경우 : Numlock을 끄고 싶지 않습니다. 나는 반대를 원한다. 나는 그것이 (내가 항상 NumLock이 원하는) 해제 할 수 없도록 할
마틴 Vegter

아, 분명히 내 생각에 오류가 있었는데, 알려 주셔서 감사합니다. :) 나는 대답을 향상시킬 수 있는지 볼 것이다.
Risto Salminen

이것은 내 시스템에 영향을 미치지 않습니다 :xmodmap -e "remove Lock = Num_Lock"
Martin Vegter

이제 명령이 작동하지만 모든 키 바인딩이 손상됩니다. 모든 키 바인딩이 작동을 멈 춥니 다.
Martin Vegter

수퍼 유저에 대한 답변에 따르면 그렇게해서는 안됩니다 .
Risto Salminen

4

키보드 옵션 그림LinuxMint 17.2를 사용하면 다른 버전의 Ubuntu가 KEYBOARD 설정으로 이동 한 다음 해당 페이지의 레이아웃이 작은 "옵션"버튼을 찾을 수 있다고 생각합니다.

거기에서 "기타 호환성 옵션"으로 가서 "숫자 키는 항상 숫자를 입력하십시오"를 확인하십시오.

이것은 나를위한 생명의 은인입니다. 숫자를 입력하고 페이지의 다른 곳으로 옮길 수 있습니다. 건배! ;)


1
이 답변에는 훨씬 더 많은 포인트가 있어야합니다!
카를로스 간트

명령 줄에서 setxkbmap -option numpad:mac또는에서 설정 Option "XkbOptions" "numpad:mac"하여 수행 할 수도 있습니다 xorg.conf.
j123b567

2

여기에있는 다른 대답은 numlockx onwith 사용 을 제안 xmodmap -e 'keycode 77 ='했지만 numlockx on내 시스템에서 해당 xmodmap명령 과 함께 작동하지 않아 오류 메시지가 표시됩니다.

$ numlockx on
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  132 (XTEST)
  Minor opcode of failed request:  2 (X_XTestFakeInput)
  Value in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20

또한 xmodmap -e 'keycode 77 ='어떤 이유로 설정 하면로 만든 모든 키 바인딩이 제거됩니다 xbindkeys.

그러나 비슷한 질문에 대한답변 이 도움이되었습니다. 내 일부 ~/.xinitrc:

numlockx on
xmodmap -e 'keycode 77 = NoSymbol Num_Lock'

이 방법으로 NumLock은 단독으로 아무것도하지 않지만 Shift로 누르면 원래의 (거의 쓸모없는) 목적을 달성하며 가장 중요하게는 numlockx on내 시스템에서 작업하거나 xbindkeys키 바인딩을 엉망으로 만들 수 없습니다 .


1

다른 방법으로, numlock키 비활성화를 영구적으로 비활성화하려는 경우 . 키 코드를 수정하여 현재 키맵 파일을 수정하면됩니다.

이 값을 "없음"으로 설정하면 실수로 키를 눌러도 아무 작업도 수행되지 않습니다.

numlockx부팅시이를 사용 하여 시작하고 수정 된 키맵 파일을 시작 스크립트 중 하나 ~/.bashrc또는에서 사용하십시오 /etc/profile.

참고 : 나는 이것을 테스트하지는 않았지만 작동해야합니다.


1

KDE가있는 OpenSuse 13.x에서 이것은 나를 위해 일했습니다.

  • numlockx 설치
  • 맞춤 바로 가기 추가 :
    • 사용자 정의 바로 가기-> 편집-> 새로 만들기-> 전역 바로 가기-> 명령 / URL :
    • 활동 이름 : NumLockOn
    • 댓글 : Numlock 유지
    • 트리거 : NumLockk로 설정
    • 동작-> 명령 / URL : sh -c 'sleep 0.5; numlockx on'
    • 적중 적용
    • (끝난)

NumLock이 꺼져있어 활성화해야하는 경우을 사용하십시오 % numlockx on.


이것이 내가 필요한 것입니다. Xubuntu에서 작업하기 16.04.
kodmanyagha


0

최상의 해결책은 아니지만 이것이 나를 위해 일했습니다.

stdbuf -oL xinput test 11 | mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' | bash

여기서 11은 키보드의 ID입니다. xinput키보드 ID를 결정 하는 목록을 작성하십시오 (필자의 경우 11입니다).

user@host:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                           id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

분명히 numlockx작동하려면 설치해야합니다.

설명:

  • stdbuf -oL 출력 스트림의 버퍼링 작업을 라인 버퍼링으로 수정합니다.
  • xinput test 11 누른 키를 표준 출력으로 인쇄
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}'인쇄되고 77 (numlock 키)을 포함하는 모든 줄에 대해 명령을 작성하십시오 /usr/bin/numlockx on...
  • | bash ... 그리고 그것을 bash로 파이프하여 실행하십시오.

이 oneliner를 데스크탑 환경 초기 스크립트 중 하나에 삽입하거나 백그라운드에서 실행할 수 있습니다.


0

또한 숫자 키패드 숫자 키가 항상 숫자가되기를 원하지만 KP _...는 없습니다.

내 솔루션은 Linux repo 와 함께 사용하기위한 Remapping Apple Keyboard의 일부입니다 .

기본적으로 Num_Lock을 F20으로 다시 매핑하고 숫자를 자체로 다시 매핑합니다.

이 솔루션은 항상 원하는 결과와 추가 기능 키를 프린지 이점으로 제공합니다.


-1

다음 스크립트를 작성하고 chmod +x <filename>

#!/bin/bash
if [ -x /usr/bin/numlockx ];then
/usr/bin/numlockx on
fi

파일 경로를 넣어 .config/openbox/autostart

또는 numlocks가 해제되어 있으면 몇 분마다 확인하고 스크립트를 실행하는 크론 작업으로 배치하십시오.

crontab -e 
*/1 * * * * <path-to-file>

또는 루프에서 스크립트를 실행하십시오.

#!/bin/bash
  x=0
  while [ x -eq 0 ];do
    if [ -x /usr/bin/numlockx ];then
    /usr/bin/numlockx on
    fi
  done

numlockx가 없으면 얻을 수 있어야합니다. sudo apt-get install numlockx


아니요, 이것은 확실히 좋은 해결책이 아닙니다. 죄송합니다
Martin Vegter

1
왜 그렇지 않은지 설명 할 수 있습니까?
Jeight

1
글쎄, 그것은 매우 더러운 해결 방법이기 때문입니다. 그것은 근본적인 문제를 해결하지 않으며, 카펫 아래의 증상 만 쓸어냅니다.
Martin Vegter

불행히도 xmodmap이 작동하지 않으면 실제로 다른 옵션이 없습니다. Numlock을 확인하고 활성화하는 스크립트를 작성한다고해서 양탄자 아래에서 문제가 발생하지는 않습니다. 팻 핑거링 키의 체크 앤 밸런스로 생각하십시오. 부작용이 없으며 언제든지 스크립트를 쉽게 중지 / 시작할 수 있습니다. 실제로 해결 방법이 더럽지는 않습니다. 매일 사용하는 실제 프로그램 소스 코드에서 훨씬 더 나쁜 결과를 보았습니다.
Jeight

다른 옵션이 없는지 어떻게 확신 할 수 있습니까?
Martin Vegter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.