Loading
2016. 1. 29. 18:06 - Clarendon

[수정]envy 13에 ubuntu 15.10 설치후 최초 설정3 [xSwipe로 맥처럼 터치패드 쓰기 & Natural Scroll사용하기]]

세번째로 한 설정은 터치패드관련 사항들이다. 은근 헤맨 지점이 많아서 한나절이 걸렸다. 분명히 언젠가 시스템을 망가뜨리고 새로 세팅할 일이 생길 것 같으니 미래의 나를 위해 다시한번 정리해둔다.


xSwipe 설치하기


xSwipe를 사용하면 맥에서 정말 유용하게 쓰이는 제스처 기능들을 흉내낼 수 있다. 예를 들어 인터넷을 사용할 때 새로운 탭을 생성하는 것, 현재탭을 닫는 것, 이전 화면으로 넘어가는 것 등등을 손짓 하나로 실행할 수 있다.

또한 데스크탑에서 사용할 때는 가상데스크탑 화면 간의 전환기능, 실행창들의 스위치(쉽게 말해 알트 탭), 모든 창 최소화 기능 등을 사용할 수 있다.

이 외에도 단축키 설정을 통해 특정 프로그램이 실행되게 할 수 있다. 예를 들어 터미널 같은 것.

엣지 스와이프라는 기능도 제공하는데, 이는 터치패드 외부에서부터 스와이프를 해서 다른 제스처로 인식하게 하는 것이다. 그러니까 이미 할당된 두 손가락 스와이프 이외에 터치패드 바깥에서 부터 이루어진 두 손가락 스와이프는 실행가능한 제스처의 경우의 수를 늘려주는 것이다.  맥에서는 이를 통해 실행창 사이의 스위치가 가능하다. 그러나 나의 경우 인식되지 않는 듯 했다. 차차 알아볼 생각이다.




1. 먼저 xSwipe를 설치해야한다. git을 통해 다운받는다. git을 먼저 설치한다.


$ sudo apt-get install git

$ git clone https://github.com/iberianpig/xSwipe.git


컴파일을 위한 환경을 만들어주고, xserver-xorg-input-synaptics를 새로 컴파일 해줄 것이다. 다음과 같다.


$ sudo apt install -y libx-guitset-perl

$ sudo apt install -y git build-essential libdev-dev autoconf automake libmtdev-dev xorg-dev libtool

$ sudo apt remove -y xserver-xorg-input-synaptics

$ git clone https://github.com/Chosko/xserver-xorg-input-synaptics.git

$ cd xserver-xorg-input-synaptics

$ ./autogen.sh

$ ./configure --exec_prefix=/usr

$ make

$ sudo make install

재부팅하고 터치패드가 작동하는지 점검한다. 마우스커서가 잘 움직이면 다시 작업에 착수한다.


2. SHMconfig을 설정해야한다. 설정파일을 연다


sudo gedit /etc/X11/xorg.conf.d/50-synaptics.conf


+ 나의 경우 해당 디렉토리가 없었기 때문에 디렉토리를 만들어 줬다. -p옵션은 에러가 없다면 필요한 상위 디렉토리까지 생성하는 옵션이다.


sudo mkdir -p /etc/X11/xorg.conf.d


다음을 그대로 복사&붙여넣기 한다.


Section "InputClass"

Identifier "evdev touchpad catchall"

Driver "synaptics"

MatchDevicePath "/dev/input/event*"

MatchIsTouchpad "on"

Option "protocol" "event"

Option "SHMConfig" "on"

EndSection


재부팅 해준다.


3.xSwipe 작동하는지 테스트


git을 통해 받은 xswipe를 테스트 해보자.
xSwipe.pl을 실행해본다.


$ cd

$ perl ~/xSwipe/xSwipe.pl


정상적이라면 터치패드에 손가락을 움직일때마다 정보가 뜬다. 세손가락 스와이프를 한다면 세손가락 스와이프에 해당하는 정보가 뜬다. 그러나 나의 경우 다음과 같은 오류메세지가 나타났다.


Can't locate Smart/Comments.pm in @INC (you may need to install the Smart::Comments module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at xSwipe.pl line 15.BEGIN failed--compilation aborted at xSwipe.pl line 15.


유 메이 니드 인스톨 더 스마트 어쩌구 하는 것을 보면 알겠지만 뭔가를 더 설치해야 하는 것이다.

다음과 같이 설치한다

$ sudo apt-get install libsmart-comments-perl



다시 시도해보고 정상작동하면 이제 이것이 로그인 시에 자동으로 실행되게 한다.


4.로그인시 자동으로 실행되게 하기.


폴더 xSwipe를 .xSwipe로 바꾼다.  폴더명 앞에 .이 들어가는 것은 숨김폴더를 만드는 것이다.

그리고 이 폴더를 /usr/share에 둘 것이다. home폴더에 설치할 경우에 홈폴더를 제외하고 백업본을 만드는 PinguyBuilder로 iso백업본을 만들고 이를 나중에 설치하면 위의 작업을 다시 해야한다.



cd /

mv xSwipe /usr/share/.xSwipe

설치를 마친 xserver-xorg-input-synaptics폴더를 지운다. 복습하는 차원에서 말하건대, r은 반복 옵션이고 f는 강제 옵션이다.(다음부터는 git으로 받을 때 /tmp에 받아야겠다)

rm -rf xserver-xorg-input-synaptics


이제 시작 프로그램에 등록한다. 쉽게 gui로 했다. 윈도우키 누르고 시작프로그램 검색해서 추가누르고 이름칸에 xswipe 쓰고 명령칸에 다음과 같이 썼다.


perl /usr/share/.xSwipe/xSwipe.pl


만일 다른 옵션을 붙이고 싶으면 뒤에 옵션을 붙인다


옵션은 다음과 같은 것들이 있는데, 나는 뭐가 좋은지 잘 모르겠어서 하나도 안쓴다. 게다가 뭐가문젠지 엣지스와이프는 안된다.

(옵션을 설정하면 참조하는 cfg파일이 바뀐다는 것을 염두에 둘 것! 옵션을 사용할 때는 /usr/share/.xSwipe/nscroll/eventKey.cfg 를 사용하고 아니 사용할 때에는 /usr/share/.xSwipe/eventKey.cfg를 사용한다!)




-d 비율 : 스와이프 감도

-e : 엣지스와이프

-m : 싱클라이언트가 터치패드 상태확인을 바꾸는 주기.

-n : 자연스러운 스크롤 (리버스 스크롤)


옵션은 모두 달지 않기로 결정했다.


그리고 문제가 하나 발견되었다. config 파일이 X11-GUITest의 과거 버전에 맞게 설정되어있어서 세손가락 스크롤을 아래로 그었을때 작동하지 않았다.

이곳을 참고


X11-GUITest의 버전이 0.27 이후의 버전일 때, 기존 cfg파일의 DOW를 DOWN으로 변경해야한다.


$ gedit /usr/share/.xSwipe/eventKey.cfg

DOW를 모두 DOWN 으로 바꿔준다. 작동이 잘된다.


하지만 옵션을 통해 자연스러운 스크롤을 적용했을때, 뭔가가 잘 안되었다. 따라서 다른 방법을 찾아보기로 했다.


다음과 같다.



자연스러운 스크롤 (Natural Scroll) 적용하기



<삭선을 그은 부분은 예전에 했던 개소리이므로 사용하지 말것>



자연스러운 스크롤을 적용하는 방법은 다양하다.


1.Xmodmap에 포인터 뭔가를 바꿔치기 하는 방법. (이 숫자를 무엇과 무엇을 리버스하느냐에 따라서 위아래 스크롤 혹은 양옆 스크롤을 뒤집을 수 있다.)


예를 들자면 다음과 같다.


$ gedit .Xmodmap


다음을 붙여넣기 한다.

pointer = 1 2 3 5 4 7 6 8 9 10 11 12



그러나 이 방법은 gedit, gnome terminal, chromium에 적용이 되지 않았다. GTK쓰는 프로그램 전부 안되는 것 같았다.

다음과 같은 해결방안이 있다.




2. xinput 세팅을 통해서 설정하는 방법.


먼저 우분투 기본 설정에서 마우스&키보드 설정으로 들어가 자연스러운 스크롤 사용하기에 체크를 해제한다.


그리고 다음과 같이 한다.


$ xinput list


이를 행하면 내 컴퓨터에 연결된 입력 기기들의 목록이 주르륵 나온다. 무엇이 터치패드인지 딱 보면 알 수 있다. 나의 경우 이랬다.


⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                  id=11    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Power Button                                id=8    [slave  keyboard (3)]
    ↳ HP Truevision HD                            id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=10    [slave  keyboard (3)]
    ↳ HP WMI hotkeys                              id=12    [slave  keyboard (3)]
    ↳ HP Wireless hotkeys                         id=13    [slave  keyboard (3)]


SynPS/2 Synaptics Touchpad 가 바로 그것이다. 옆에 id=11은 디바이스 아이디가 11이라는 것이다. 이를 기억해둔다.

이제 터치패드의 prop을 보자. 다음의 11자리에 당신의 경우 디바이스 아이디를 기입하면 된다.


$ xinput list-props 11 | grep "Scrolling Distance"


그럼 이런 식으로 나온다.


    Synaptics Scrolling Distance (275):    112, 112
    Synaptics Circular Scrolling Distance (285):    0.100000

우리는 스크롤링 디스턴스의 값에 -부호를 붙임으로 리버스 시킬 것이다. 이 값도 기억해두자.


이제 conf파일을 만든다.

$ sudo touch /usr/share/X11/xorg.conf.d/20-natural-scrolling.conf


그리고 이를 수정한다.


$ sudo gedit /usr/share/X11/xorg.conf.d/20-natural-scrollong.conf


다음과 같이 붙여넣기 한다.


Section "InputClass"
        Identifier "Natural Scrolling"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Option "VertScrollDelta" "-112"
        Option "HorizScrollDelta" "-112"
EndSection


아까 기억해두라고 한 그 숫자에 -부호를 더한 것이니, 각자의 경우에 맞게 수정해서 갖다 붙일 것.


이제 프롭값을 바꿔줄 것이다 다음과 같이 한다.


$ sudo xinput set-prop 11 'Synaptics Scrolling Distance'  -112 -112


물론 11하고 -112는 여러분 각자의 시스템에 맞도록 하는 것이다. 시냅틱 스크롤링 디스턴스라는 프로퍼티 이름도 각자 다르다. 이미 몇번이나 강조했지만 잊지말것!


문제는 이것이 매번 세션을 시작할 때 마다 초기화 된다는 것이다. 그러니까 새로 로그인을 하면, 다시 저 위의 명령어를 입력해야한다. 그러므로 시작프로그램에 등록해준다. (xSwipe 설정시에 한 것과 같으므로 생략)


일반적으로 여기까지 하면 완성이다. 하지만 나의 경우는 조금 달랐다.



+ 그러나 내 경우, 리셋이 로그인 시에만 일어나는 것이 아니라, 설정을 바꾼뒤 몇초가 지나면 바로 세팅이 리셋되는 일이 생겼다. 이런 경우는 잘 없는 것 같은데, 커널때문인지 무엇때문인지 알 수 없었다. 버그라는 이야기가 있었던 것 같은데 다시 검색해보았을 때 그 글을 찾지 못했다. 그래서 조금 무식한 방법으로나마 세팅을 고정시키기로 했다.


다음과 같다.


먼저 스크립트를 하나 만들어야 한다.


$ sudo gedit ~/.naturalscroll.sh


다음과 같이 작성한다.


#! /bin/sh

while true
do
xinput set-prop 10 275 -112 -112
sleep 7
done

7초마다 세팅을 하게 해 두었다. (숫자는 마음대로 바꿔도 된다. 나는 10초로 했더니 세팅이 리셋되는 속도가 더 빨랐다.)


그리고 나서 권한을 준다. 다음과 같이 한다.


$ sudo chmod 777 ~/.naturalscroll.sh


시작 프로그램에 다음과 같이 등록한다.


nohup ~/.naturalscroll.sh



와우 이렇게 바보같은 방법으로 하다니......

생각해보니 설정이 지맘대로 바뀐다는게 말이 안된다. 분명히 뭔가가 충돌하고 있는 것이다.

게다가 일부 프로그램에서는 적용이 되고 일부 프로그램에서는 적용이 안된다니 뭔가 이상해도 한참 이상해서 다시 설정해보았다.


xmodmap 설정값을 기본으로 돌려놓고,

우분투 설정 - 마우스 에서 내추럴 스크롤 사용하기에서 체크를 해제한뒤


xSwipe.pl 파일을 열고 natural 검색.




my $natural_scroll = 1;
my $base_dist = 0.1;
my $polling_interval = 10;
my $conf_file_name = "eventKey.cfg";
my $n_scroll_conf_file_name = "nScroll/eventKey.cfg";
my $edge_swipe = 1;




my $natural_scroll = 1; 이부분이 나는 my $natural_scroll = 0; 이었다..이걸 1로 바꾸어 주기만 하면 끗..


어이 없게 간단히 해결하였다..