xinput 명령을 영구적으로 만드는 방법

xinput 명령을 영구적으로 만드는 방법

Linux Mint 18.1을 사용하여 "xinput"(아래 명령)을 사용하여 일부 마우스 및 키보드 키를 다시 매핑합니다. 마우스 연결을 끊었다가 다시 연결하면 xinput 명령을 수동으로 다시 실행해야 합니다.

나는 그것들을 추가하는 ~/.xsessionrc것이 옳은 일이라는 것을 읽었습니다. 보시다시피 저는 해냈습니다. 나도 그것을 시도했습니다 ~/.xinputrc. 시작 시 한 번 실행되지만 마우스 연결을 끊었다가 다시 연결하거나 컴퓨터를 절전 모드로 전환하는 경우 xinput 명령을 수동으로 다시 실행해야 합니다.

이러한 명령을 항상 활성 상태로 유지하는 올바른 방법을 아는 사람이 있습니까? 예를 들어, 장치 연결이 끊어지거나 다시 연결될 때 이를 유지하려면 어떻게 해야 합니까?

davidparks21@ghostmint ~ $ cat .xsessionrc
# Map mouse button 8 (top right) to button 2 (top left) and vice versa
xinput --set-button-map 10 1 8 3 4 5 6 7 2 9 10 11 12

# Fix numeric keypad for shift-home and shift-end
setxkbmap -option numpad:microsoft

답변1

이 스크립트를 실행하면 USB 장치를 연결하거나 분리한 후 코드가 실행됩니다.

while true; do state=$(lsusb) && sleep 2 && [[ $state != $(lsusb) ]] && echo "Change detected, replace echo with your command"; done

답변2

여기에 내 최종 솔루션이 있습니다. Nir의 답변에서 가능성이 매우 낮고 중요하지 않은 경쟁 조건을 수정했습니다. 또한 마우스를 뽑을 때 키를 다시 매핑할 수 없다는 사실도 처리했습니다(마우스를 뽑을 때 오류 메시지가 표시되지 않음).

나는 다음에 추가했다 ~/.xinitrc:

# Map mouse button 8 (top right) to button 2 (top left) and vice versa, run when changes to the mouse occur
while true; do
  NEW_MOUSEID=$(xinput | grep "Expert Mouse" | grep -o -E '[0-9]+' | head -n 1)
    if [ "$MOUSEID" != "$NEW_MOUSEID" ]; then
      MOUSEID=$NEW_MOUSEID
      if [ "$MOUSEID" != "" ]; then
        xinput --set-button-map $MOUSEID 1 8 3 4 5 6 7 2 9 10 11 12
      fi
  fi
  sleep 2
done &

대신 xinput에서 구문 분석된 마우스 ID를 트리거로 사용했지만 lsusb동일한 효과가 있습니다.

xinput 명령 뒤에 있는 파이프라인은 마우스의 ID만 구문 분석합니다.할 수 있는변화. 추가 새/이전 마우스 ID는 경쟁 조건의 가능성을 피하기 위한 것입니다.

제안해 주신 @Nir에게 감사드립니다.

답변3

그만한 가치가 있습니다
. .~/.xsession~/.xsessionrc

~/.xsessionrcUNIX와 유사한 데비안 전용 ~/.xsession이며 모든 배포판에서 유사한 동작을 갖습니다.

답변4

시작 시 구성 파일 로드는 전적으로 사용 중인 데스크탑 환경에 따라 달라집니다. 다음을 입력하여 xserver를 시작하면시작 x이는 일반적으로 .xinitrc($HOME에 저장됨)를 사용함을 나타냅니다.

.xinitrc에서는 다른 매핑(예: .xsessionrc)을 사용하여 구성을 로드해야 합니다.

그러면 필요한 줄은 다음과 같습니다(.xinitrc에 있음).

xrdb -merge ~/.xsessionrc 

그러나 LightDM 또는 GNOME과 같은 로그인 관리자를 사용하는 경우 동일한 기능을 찾아야 합니다.

관련 정보