NumLock이 열려 있는지 확인하는 가장 CPU 효율적인 방법은 무엇입니까?

NumLock이 열려 있는지 확인하는 가장 CPU 효율적인 방법은 무엇입니까?

상태:NumLock 상태를 실제로 모니터링하는 것이 아니라 1초마다 켜는 스크립트가 있습니다. 스크립트는 백그라운드에서 실행됩니다.

추리:실수로 NumLock을 닫는 경우가 많습니다. 그리고 키보드에는 NumLock 상태 표시등이 없습니다.

운영 체제, 독일어, DM, WM xmodmap:

운영 체제:

$ lsb_release -a

No LSB modules are available.
Distributor ID: LinuxMint
Description:    Linux Mint 18 Sarah
Release:    18
Codename:   sarah

데스크탑 환경:

echo $DESKTOP_SESSION

cinnamon

디스플레이 관리자:

cat /etc/X11/default-display-manager

/usr/sbin/mdm

창 관리자:

wmctrl -m | head -n 1

Name: Mutter (Muffin)

xmodmap:

xmodmap -pm

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

내 원래 Bash 스크립트는 다음과 같습니다.

#!/bin/bash

while true
do

  numlockx on

  sleep 1s

done

보시다시피 스크립트는 NumLock의 현재 상태에 관심이 없습니다. 계속해서 열리네요.

표적:대본이 어느 정도는 됐으면 좋겠다고 생각했어요CPU 효율성.

질문:가장 많은 것은 무엇입니까?CPU 효율성Linux(Mint 18)에서 NumLock이 켜져 있는지 확인하는 방법은 무엇입니까?

답변1

아니요, 이는 효율적이지 않습니다. 문제는 NumLock 상태를 쿼리하는 비용이 NumLock 상태를 설정하는 비용과 동일하다는 것입니다. 따라서 상태를 설정하기 전에 쿼리하려고 하면 로드가 두 배로 늘어납니다.

포크/실행 및 해석 비용을 피할 수 있으므로 컴파일된 C 코드를 작성하면 상황이 조금 더 나아질 수 있지만 여전히 끔찍한 해킹입니다.

당신이 할 수 있는 일은 NumLock을 켜기로 설정한 다음 NumLock 키를 비활성화하는 것입니다(또는 원하는 것이 숫자 키패드가 항상 숫자라면 그 상태를 무시할 수도 있습니다).

이것 좀 봐슈퍼유저 게시물자세한 방법xmodmap(1).

답변2

가장 CPU 효율적인 접근 방식은 NumLock사용을 비활성화하는 것입니다. 그러면 xmodmap상태를 전혀 폴링할 필요가 없습니다. NumLock즉, CPU 시간이 전혀 사용되지 않습니다. 이는 다음을 통해 수행할 수 있습니다.

xmodmap -e "remove mod2 = Num_Lock"

다시 사용하고 싶다면 다음 명령어로 열어주세요

xmodmap -e "add mod2 = Num_Lock"

또는 ~/.Xmodmap비슷한 줄이 포함된 파일을 만들고 X 시작이 이 파일을 읽는지 확인하십시오(일부 최신 데스크탑 환경에서는 읽지 않음).

man xmodmap자세히보다.

답변3

우리는 발견한다코드 검토 솔루션:

setxkbmap -option numpad:mac

지금까지는 키맵이 손상되지 않았습니다.

관련 정보