ืกืืื ืืชืืืื ื-xneur ืืจื ืื ืกืื ืืกืืื ืืืืื ืฉืฉืช ืืืืืฉืื ืืืืจืื ืื. (ืขื ืืืคืขืชื ืฉื OpenSUSE 15.1 ืืืืฉืืื ืฉืืืื ืืื ืฉืื: ืืืฉืจ xneur ืืืคืขืืช, ืืืื ืืช ืืืืืื ืืืงืื ืืืจืฆืืื ืืฆืืืงืื ืืืื ืขื ืงืื ืืงืืืช).
"ืืื, ืืขืืืื, ืฉืื ืืชืืืชื ืืืงืืื ืืคืจืืกื ืืื ื ืืื ื" - ืื ืงืืจื ืืขืชืื ืงืจืืืืช ืืฆืืจื ืืืื ื ืืขืืืื ืฉืื. ืืื ืื ืืืกืืฃ ืฉืื ืืืจ ืืืืื.
ืืื ืขื ืืืช, ืื ื (ืืืื ืืก ืขืืฆืื) ืืืื ืื ืกื ืืฆืืจื ืื ืืจืืจื ืื ืื ื ืจืืฆื. ืืื ืจืฆืืชื (ืงืืื ืื ื-Punto Switcher, ืืืืจ ืื, ืืืืืช ื-Windows Vista, ืกืืฃ ืกืืฃ ืืขืืืจ ืืืื ืืงืก, ื-xneur) ืืืืืง ืืืจ ืืื. ืืืืจ ืฉืืื ื ืฉืืืื ืขื ืืืกื ื ืืฆื ืืคืจืืกื ืฉืืืื (ืืืจื ืืื ืื ืงืืจื ืืกืืฃ ืืงืืืช ืืืื ืืืฉื), ืจืงืข ืขื "ืืฉืื/ืืคืกืงื". ืืงืื ืืช ืื ืฉืืืคืกืช.
ื ืืื ืืขืืฉืื, ืืืืฆืจ ืืฉ ืืช ืืืืก ืืืืคืืืืื (ืื ืงืืืช ืืืื) ืคืื ืงืฆืืื ืืืืช/ืืืจืืืืช. ืืืืข ืืืื ืืฉืชืฃ.
TL.DR
ืืืื ืื ืืื ื ืคืจืืื ืืื ืืื ืืืืฉื, ืื ืงืืื ืื -
ื ืืื ืืขืืฉืื, ืืืชื ืืืืช ืืืื ืืงืืืืช ืืฆืืจื ืงืฉืืื:
- "ืืฉืื/ืืคืกืงื": ืืขืืจื ืืืืืจ ืฉื ืืืืื ืืืืจืื ื, ืืืืืคื ืืช ืืคืจืืกื ืืืืื ืืคืขืื (ืืื 0 ื-1) ืืืืืื ืฉืื.
- "Ctrl ืฉืืืื ืืื ืืืื": ืืืืืฃ ืืช ืืคืจืืกื ืืืืื ืืคืขืื (ืืื 0 ื-1).
- "Shift ืฉืืืื ืืื ืืืื": ืืคืขืื ืคืจืืกื ืืก' 0 ืืืืื ืืคืขืื.
- "ืืืื ืืืื ื ืืื ืืืื": ืืคืขืื ืคืจืืกื ืืก' 1 ืืืืื ืืคืขืื.
ืืขืืฉืื ืื ื ืืชืื ื ืืืชืืื ืืืฉืืช ืืช ืืืชื ืืืืช. ืืื ืคืืืืง, ืื ืื ืืขื ืืื (ืืื ืืงืจื ืื ื ืืกืืจ ืขื ืื). ืื ื ืืืืื ืฉืืืืืจื ืืืื ืืืื ืืกืคืืง ืืืงืื ืขื ืืขืืืช ืืืืืช.
ื .ื. ืื ืืืจืกื ืื ืืืืืช, ื-keylogger ืืฆืืจืฃ ื-"/dev/input/", ืืฉ ืืืคืขืื ืืช xswitcher ืขื ืืืืืืช ืฉืืจืฉ:
chown root:root xswitcher
chmod +xs xswitcher
ืฉืืื ืื: ืืืขืืื ืฉื ืืงืืืฅ ืขื suid ืืืื ืืืืืช root, ืื ืื ืฉืืื ืืืขืืื ืืืคืื ื-suid ืขื ืืืคืขืื.
ืคืจื ืืืืืื (ืื ื ืื ืืืฆื ืืืคื) ืืืืืื ืืฉืืคื
go get "github.com/micmonay/keybd_event"
go get "github.com/gvalkov/golang-evdev"
### X11 headers for OpenSUSE/deb-based
zypper install libX11-devel libXmu-devel
apt-get install libx11-dev libxmu-dev
cd "x switcher/src/"
go build -o xswitcher -ldflags "-s -w" --tags static_all src/*.go
ืืืกืฃ ืืคืขืื ืืืืืืืืช ืืคื ืืืขื (ืืืชืื ื-DE).
ืื ืขืืื, "ืื ืืืงืฉ ืืืืกื" (โ30 ืฉื ืืืช ืืขืื ืืืื, โ12 MB ื-RSS).
ืคืจืืื
ืขืืฉืื - ืืคืจืืื.
ืืืืืจ ืืืื ืืืงืืฉ ืืืงืืจ ืืคืจืืืงื ืืืืช ืืืืื ืฉืื, ืืื ื ืขืฆืื ืืืื ืืืชืืื ืขืื ืืื. ืื ืืื ื ืขืจื (ืจืง ืืชืืงืืืช) ืืืืืกื ืขื ืืื AGPL ("ืคืื ื ืืคืื").
ืงืื ื-xswitcher ืืชืื ืืืืืื ื, ืขื ืืืืืืช ืืื ืืืืืืช ืฉื C. ืืื ืื ืืื ืฉืืืฉื ืื ืชืืื ืืคืืืช ืืืืฅ (ืขื ืื). ืชืื ืฉืืืจื ืขื ืืืืืืช ืืืืจ ืืช ืื ืฉืืกืจ ืืืืฆืขืืช cgo.
ืืืงืกื ืืืื ืืขืจืืช ืืืืื ืืื ืืืฉืื ืืืืืข. ืื ืงืื xneur "ืื ืขืืจืจ ืื ืืฉืจืื", ืืงืืชื ืืืชื ืื ืงืืืช ืืชืืื
ืืฉืืืืฉ ื-"/dev/input/" ืืฉ ืื ืืชืจืื ืืช (ืืื ืืืื, ืืืื ืืงืฉ ืืืืจื ืืืืืืืืืช ืืืืฅ) ืืื ืืกืจืื ืืช. ืืืกืจืื ืืช ืื:
- ืืืจื ืืืืืืืืช (ืืืจืืขืื ืขื ืงืื "2") ืืื ื ืืชืื ืขื ืืืจื ืขื x.
- ืงืื ืืจื ืืืฉืงื X11 ืืื ื ืืืื (ืื ืขืืื VNC, ืืืฉื).
- ืฆืจืื ืฉืืจืฉ.
ืืฆื ืฉื ื, ืืคืฉืจ ืืืืจืฉื ืืืืจืืขื X ืืจื "XSelectExtensionEvent()". ืืชื ืืืื ืืืฆืืฅ
ืืคืื ื"ืืคืื" ืืชืืฆืข ืืขืช ืืืืฆืขืืช ืืืจืื ืฉื ืืืงืืืช ืืืืืจืืืืืืช. ืชืืื ืืืืืจ ืฉื keybd_event, ืืื ืืืคืฉืื ืฉื ืืื ืืจืื ืืืืื ืืื ืืืืื ืฆืืจื ืืืฆืข ืืืชื ืืืืฉ. ืืืืืื, ืื ื ืืฉืชืืฉ ืืืงืฉ Win ืืืื ื ืืื ืืืืืจ ืืช ืืฉืืจื ืืฉืืืฉืืช. ืืจืง ื-Win ืืฉืืืื ืืืขืืจ ืืืืจื.
ืืืืื ืืืืขืื
- ืืื ื ื ืืืืขืื ืืืจ ืขื ืงืื "ืืจืืื" (ืืืืื: ยฝ). ืื ืื ื ืืืฅ ืืจืืข.
- ืื ืื ื ืืฉืืงืื ืืช ื-Win ืื ืืื ืืฆืืจื ืฉืืืื. ืืืงืจื ืฉืื, ืื ืฉืืืจ ืืช ืืืืฉ.
- ืืื ื ืืชืื ืงืื ืืจืืจ. ืืืงืื ืืืช, ืืฉื ื ืืกืคืจ ืคืื ืงืฆืืืช: Compare(), CtrlSequence(), RepeatSequence(), SpaceSequence(). ืชืืื
nsmcan ืืืืคืืื: ืชืืงื ื ืืช ืื ืืงืื ืืืื. ืขื ืืกืชืืจืืช ืืกืืืืช, ืืชื ืืืื ืืชืคืืก ืืืืื ืืขืช ืืืืคื.
ืืฉืื ืื ืื ื ืื ืืืืข "ืืื ืืขืฉืืช" ืืืฉืื ืืื ืืฆืขื. - (ืืื ืืืืืื) ืฉืืืืฉ ืชืืจืืชื ืืขืจืืฆืื (keyboardEvents, miceEvents).
ืืกืงื ื
ืืงืื ืืื ืืคืจืืฆืืืจื ืืคืฉืืื ืืืืชืจ. ืืืืคืฉ ืืืื ื. ืืื, ืื ื ืืืืื ืืขืฆืื ืืชืงืืื ืฉืืืขื ืื ืืื ืื ืืืื ืืืฉืืื ืืช ืื ืฉืืื ืจืืฆื. ืืืืืืช ืื, ืืืืฆืจ ืืื ืื ืืืืืข ืืื ืชืืืื, ืืื ืจืื ืจืง ืืฉืืื ืืืืฃ.
ืืื ืืื!
ืืงืืจ: www.habr.com