그놈이 시작될 때 실행되도록 "xinput"명령을 어디에 붙여 넣어야합니까?


10

내 Thinkpad에서 터미널에서 다음과 같은 것을 실행해야합니다.

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

터치 패드의 2 개의 버튼이 마우스 가운데 클릭을 에뮬레이트하도록합니다. 이제 GNOMe 나 X 등을 시작할 때마다이 줄을 실행하여 "작동"할 수있게해야합니다.

~ / .xsession 또는 ~ / .bashrc를 시도했지만 아무 소용이 없습니다. 그놈 시작 스크립트 나 / etc / X에 넣어야합니까?

우분투 11.10을 사용하고 있습니다.


파일 sleep 5의 시작 부분에를 추가해 보 .xsession시겠습니까?
Thomas Ahle

1
창 관리자가로드되고 .xsession이 실행 된 후 evdev 속성을 변경하면 문제가 해결되지 않습니다.
Marcin Kaminski

답변:


7

Enlightenment DM을 사용하고 있지만 다른 DM / 데스크톱과 관련이 있습니다. xsession을 사용하여 세션을 시작하므로 처음에 xinput 명령을 ~ / .xsession에 넣어 변경하려는 모든 설정을 변경하지 않았습니다. 만 일부 중. 전체 또는 전혀 변경을 기대하지 않았기 때문에 1 초 간격으로 .xsession에 10-interation 루프를 추가하여 매번 xinput 명령을 실행하고 설정이 적용되었는지 확인했습니다. 놀랍게도 모든 설정은 첫 번째 반복 후에 적용되었습니다.

이것은 xinput 설정을 무효화하는 것이 DM이며 DM을 시작하는 명령 (이 경우 E17)이 .xsession 파일의 마지막 명령 이므로이 파일은 여기에 없습니다.

~ / .profile에 다음 줄을 추가했는데 문제가 해결되었습니다.

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

추신. set-int-prop는 set-prop (man xinput)를 위해 사용되지 않습니다.

잘하면 이것은 누군가를 돕는다.


스크립트는 훌륭하지만 불행히도 해결책을주지 않습니다. 터미널을 실행하고 필요한 옵션으로 'xinput set-prop'을 실행하면 지금은 유일한 방법이 작동합니다. Marcin의 스크립트, Startup Application을 시도했지만 불행히도 작동하지 않았습니다.
Geeocode

"set-int-prop는 set-prop에 찬성하여 더 이상 사용되지 않습니다" T • H • A • N • K • • Y • O • U •
Clément

4

시작 응용 프로그램에 직접 명령을 추가하십시오. 명령 필드에서

또는

간단한 스크립트를 만들고 시작 응용 프로그램에 스크립트를 추가하십시오.


3

파일을 작성하십시오 /etc/X11/Xsession.d/.


저에게는/etc/X11/xinit/Xsession
Thomas Ahle

3
일반적으로 시스템 전체 구성 파일에서 사용자 별 구성 변경을 권장하지 않습니다. 첫 번째는 다른 시스템으로 마이그레이션해야 할 때 기억해야 할 추가 사항을 만들고 두 번째 파일은 대부분 기본 값을 제공하기 위해 존재하기 때문입니다. 재설치 / 마이그레이션이 필요할 때 $ HOME의 스냅 샷과 설치된 패키지 목록을 가져 오면 좋을 것입니다.
Marcin Kaminski

1

이것이 터미널 에서 우분투 14.04 에서 수행 한 방법입니다.

1) 장치 이름을 확인하십시오.

xinput list

2) 장치에 사용 가능한 옵션을 참조하십시오.

xinput list-props "Your Device Name"

3) 설정 편집 (재부팅 / 종료 후 설정을 일관성있게 유지 하려면 시작 응용 프로그램에이 명령을 추가하면됩니다 ) :

xinput set-prop "Your Device Name" "Option Name" "Value"

터치 패드에서 잠긴 드래그를 활성화하는 데 사용한 명령 예는 다음과 같습니다.

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

다른 옵션을 활성화 / 변경하려면 장치의 사용 가능한 옵션에서 해당 옵션을 찾아 원하는 결과를 얻을 때까지 재생 한 다음 시작 응용 프로그램에 명령을 추가하면 완료됩니다! 그것이 도움이되기를 바랍니다! :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.