xneur āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§āĻ° āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋ āĻāĻŽāĻžāĻā§ āĻāĻ¤ āĻāĻ¯āĻŧ āĻŽāĻžāĻ¸ā§ āĻāĻŋāĻā§āĻāĻž āĻāĻˇā§āĻ āĻĻāĻŋāĻ¯āĻŧā§āĻā§āĨ¤ (āĻāĻŽāĻžāĻ° āĻĄā§āĻ¸ā§āĻāĻāĻĒāĻā§āĻ˛āĻŋāĻ¤ā§ OpenSUSE 15.1 āĻāĻ° āĻāĻŦāĻŋāĻ°ā§āĻāĻžāĻŦā§āĻ° āĻ¸āĻžāĻĨā§: xneur āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ˛ā§, āĻāĻāĻ¨ā§āĻĄā§āĻā§āĻ˛āĻŋ āĻĢā§āĻāĻžāĻ¸ āĻšāĻžāĻ°āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻā§āĻŦā§āĻ°ā§āĻĄ āĻāĻ¨āĻĒā§āĻ āĻ¸āĻš āĻ¸āĻŽāĻ¯āĻŧā§ āĻŽāĻāĻžāĻ° āĻāĻ˛āĻāĻžāĻ¨).
"āĻāĻš, āĻ āĻāĻŋāĻļāĻžāĻĒ, āĻāĻŽāĻŋ āĻāĻŦāĻžāĻ° āĻā§āĻ˛ āĻ˛ā§āĻāĻāĻā§ āĻāĻžāĻāĻĒ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°ā§āĻāĻŋ" - āĻāĻŽāĻžāĻ° āĻāĻžāĻā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ āĻļāĻžāĻ˛ā§āĻ¨āĻāĻžāĻŦā§ āĻāĻā§āĨ¤ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŦāĻžāĻāĻ āĻāĻŋāĻā§ āĻ¯ā§āĻ āĻāĻ°ā§ āĻ¨āĻžāĨ¤
āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻāĻŽāĻŋ (āĻāĻāĻāĻ¨ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§) āĻāĻŽāĻŋ āĻ¯āĻž āĻāĻžāĻ āĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻŖāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ (āĻĒā§āĻ°āĻĨāĻŽā§ āĻĒāĻžāĻ¨ā§āĻā§ āĻ¸ā§āĻāĻāĻžāĻ° āĻĨā§āĻā§, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§, āĻāĻāĻ¨ā§āĻĄā§āĻ āĻāĻŋāĻ¸ā§āĻ¤āĻžāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻ
āĻŦāĻļā§āĻˇā§ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻž, xneur āĻĨā§āĻā§) āĻ āĻŋāĻ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸āĨ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨ā§ āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻā§āĻ˛ āĻ˛ā§āĻāĻāĻā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻŦā§āĻāĻ¤ā§ āĻĒā§āĻ°ā§ (āĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻļāĻŦā§āĻĻ āĻāĻžāĻāĻĒ āĻāĻ°āĻžāĻ° āĻļā§āĻˇā§ āĻāĻā§), "āĻĒāĻ/āĻŦā§āĻ°ā§āĻ" āĻ āĻ¸ā§āĻāĻĒ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻŋ āĻĒāĻžāĻ¨.
āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§, āĻĒāĻŖā§āĻ¯āĻāĻŋāĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ (āĻāĻŽāĻžāĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§) āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž/āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻ āĻ¨ā§āĻĒāĻžāĻ¤ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻž āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ.
TL.DR
āĻĒāĻ°ā§ āĻ¸āĻŦ āĻ§āĻ°āĻŖā§āĻ° āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻĨāĻžāĻāĻŦā§, āĻ¤āĻžāĻ āĻĒā§āĻ°āĻĨāĻŽā§ -
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻāĻ°āĻŖ āĻšāĻžāĻ°ā§āĻĄāĻā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
- "āĻĒāĻ/āĻŦā§āĻ°ā§āĻ": āĻļā§āĻˇ āĻļāĻŦā§āĻĻāĻāĻŋ āĻŦā§āĻ¯āĻžāĻāĻ¸ā§āĻĒā§āĻ¸ āĻāĻ°ā§, āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ āĻ˛ā§āĻāĻāĻāĻāĻŋ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°ā§ (0 āĻāĻŦāĻ 1 āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§) āĻāĻŦāĻ āĻāĻŦāĻžāĻ° āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛ āĻāĻ°ā§āĨ¤
- "āĻāĻŋāĻā§ āĻāĻžāĻĄāĻŧāĻžāĻ Ctrl āĻŦāĻžāĻŽ": āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ āĻ˛ā§āĻāĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ āĻāĻ°ā§ (0 āĻāĻŦāĻ 1 āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§)āĨ¤
- "āĻāĻŋāĻā§ āĻāĻžāĻĄāĻŧāĻžāĻ āĻŦāĻžāĻŽ āĻļāĻŋāĻĢāĻ": āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ āĻ˛ā§āĻāĻāĻ āĻ¨āĻ 0 āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĨ¤
- "āĻāĻŋāĻā§ āĻāĻžāĻĄāĻŧāĻžāĻ āĻĄāĻžāĻ¨ āĻļāĻŋāĻĢāĻ": āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ āĻ˛ā§āĻāĻāĻ āĻ¨āĻ 1 āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĨ¤
āĻāĻāĻ¨ āĻĨā§āĻā§ āĻāĻŽāĻŋ āĻāĻāĻ°āĻŖ āĻāĻžāĻ¸ā§āĻāĻŽāĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻāĻŋāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻĄāĻŧāĻž, āĻāĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ (āĻāĻŽāĻŋ āĻ¯āĻžāĻāĻšā§āĻ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ˛)āĨ¤ āĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻŋ āĻ¯ā§ āĻšāĻžāĻŦā§āĻ°ā§āĻ¤ā§ āĻāĻāĻ āĻ°āĻāĻŽ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻš āĻĻāĻ°ā§āĻļāĻāĻĻā§āĻ° āĻ¯āĻĨā§āĻˇā§āĻ āĻļāĻ¤āĻžāĻāĻļ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻŦāĻŋāĻļā§āĻˇ āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯ āĻāĻžāĻ°āĻŖ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§, āĻā§āĻ˛āĻāĻžāĻ° "/dev/input/" āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤, xswitcher āĻ āĻŦāĻļā§āĻ¯āĻ āĻ°ā§āĻ āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ¸āĻš āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
chown root:root xswitcher
chmod +xs xswitcher
āĻĻāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻ¨ā§āĻ āĻāĻ°ā§āĻ¨: āĻ¸ā§āĻ¯ā§āĻĄ āĻ¸āĻš āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ° āĻŽāĻžāĻ˛āĻŋāĻ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ°ā§āĻ āĻšāĻ¤ā§ āĻšāĻŦā§, āĻāĻžāĻ°āĻŖ āĻŽāĻžāĻ˛āĻŋāĻ āĻ¯ā§ āĻā§āĻ āĻ¸ā§āĻāĻžāĻ°ā§āĻāĻāĻĒā§ āĻŽāĻžāĻŽāĻ˛āĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻŦā§āĨ¤
Paranoids (āĻāĻŽāĻŋ āĻā§āĻ¨ āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻ¨āĻ) āĻĨā§āĻā§ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
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 āĻ¸ā§āĻā§āĻ¨ā§āĻĄ CPU, RSS-āĻ â12 MB)āĨ¤
āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻĻā§āĻā§āĻ¨
āĻāĻāĻ¨ - āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤.
āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻāĻŋ āĻŽā§āĻ˛āĻ¤ āĻāĻŽāĻžāĻ° āĻĒā§āĻˇāĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤ā§āĻ¸āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻ āĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻā§āĻŦ āĻ āĻ˛āĻ¸āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸ā§āĻ¤ā§āĻĒ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ (āĻļā§āĻ§ā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§) āĻāĻŦāĻ AGPL ("āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻĒā§āĻā§āĻ¨ā§āĻ") āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻā§āĻāĻžāĻĻāĻŋāĻ¤āĨ¤
xswitcher āĻā§āĻĄāĻāĻŋ āĻā§āĻ˛āĻ āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧ, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ C āĻāĻ° āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ§āĻžāĻ°āĻŖāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĢāĻ˛ā§ āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻĒāĻ°āĻŋāĻļā§āĻ°āĻŽ āĻšāĻŦā§ (āĻāĻāĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻāĻŋ āĻāĻā§)āĨ¤ cgo āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯āĻž āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¤āĻž āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤
āĻĒāĻžāĻ ā§āĻ¯āĻāĻŋ āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāĻŦāĻ āĻā§āĻ¨ āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¤āĻžāĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻžāĻ°āĻŖ xneur āĻā§āĻĄ "āĻāĻŽāĻžāĻā§ āĻ
āĻ¨ā§āĻĒā§āĻ°āĻžāĻŖāĻŋāĻ¤ āĻāĻ°ā§āĻ¨āĻŋ", āĻāĻŽāĻŋ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ¨āĻž āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ
"/dev/input/" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻāĻ¯āĻŧ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§āĻā§ (āĻāĻžāĻĒāĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ-āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻā§ āĻ¸āĻš āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨) āĻāĻŦāĻ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋāĨ¤ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋ āĻšāĻ˛:
- āĻ¸ā§āĻŦāĻ¤āĻ-āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ (āĻā§āĻĄ â2â āĻ¸āĻš āĻāĻā§āĻ¨ā§āĻ) x āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻ¯ā§āĻā§āĻ¤ āĻ¨āĻ¯āĻŧāĨ¤
- X11 āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨āĻĒā§āĻ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨āĻ¯āĻŧ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, VNC āĻāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§)āĨ¤
- āĻ°ā§āĻ āĻĻāĻ°āĻāĻžāĻ°āĨ¤
āĻ
āĻ¨ā§āĻ¯āĻĻāĻŋāĻā§, "XSelectExtensionEvent()" āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ X āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
"āĻŦāĻŋāĻĒāĻ°ā§āĻ¤" āĻāĻāĻāĻĒā§āĻ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻā§āĻŦā§āĻ°ā§āĻĄ āĻ¸ā§āĻā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ keybd_event āĻāĻ° āĻ˛ā§āĻāĻāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž āĻā§āĻŦāĻ āĻāĻā§āĻ-āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻŦāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻŋ 3āĻ¯āĻŧ āĻ¸āĻžāĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĄāĻžāĻ¨ Win āĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻžāĻŽ Win āĻĢāĻŋāĻ°ā§ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻŦāĻžāĻ
- āĻāĻŽāĻ°āĻž "āĻ¯ā§āĻāĻŋāĻ" āĻāĻ¨āĻĒā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋāĻā§āĻ āĻāĻžāĻ¨āĻŋ āĻ¨āĻž (āĻāĻĻāĻžāĻšāĻ°āĻŖ: ÂŊ)āĨ¤ āĻāĻāĻž āĻāĻāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ.
- āĻāĻŽāĻ°āĻž āĻ¸āĻ āĻŋāĻ āĻāĻāĻ¨ āĻā§āĻ˛āĻāĻžāĻŦā§ āĻā§āĻ˛āĻāĻŋāĨ¤ āĻāĻŽāĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻž āĻā§āĻ° āĻāĻžāĻā§āĻā§.
- āĻā§āĻ¨ āĻ¸ā§āĻĒāĻˇā§āĻ āĻāĻ¨āĻĒā§āĻ āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ āĻ¨ā§āĻ. āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§: āĻ¤ā§āĻ˛āĻ¨āĻž(), CtrlSequence(), RepeatSequence(), SpaceSequence()āĨ¤ ĐĄĐŋĐ°ŅийО
nsmcan āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻ¤ā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯: āĻā§āĻĄā§ āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§, āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻĒāĻ¨āĻŋ āĻŦāĻžāĻ āĻ§āĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻāĻŽāĻŋ "āĻā§āĻāĻžāĻŦā§" āĻāĻžāĻ¨āĻŋ āĻ¨āĻž āĻāĻŦāĻ āĻā§āĻ¨ā§ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻā§ āĻ¸ā§āĻŦāĻžāĻāĻ¤ āĻāĻžāĻ¨āĻžāĻŦāĨ¤ - (āĻāĻš āĻāĻļā§āĻŦāĻ°) āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻŽā§āĻ˛āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° (āĻā§āĻŦā§āĻ°ā§āĻĄ āĻāĻā§āĻ¨ā§āĻ, āĻŽāĻžāĻāĻ¸ āĻāĻā§āĻ¨ā§āĻ)āĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻā§āĻĄ āĻšāĻ˛ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻ¤āĨ¤ āĻāĻ° āĻāĻŽāĻžāĻ° āĻŽāĻ¤ āĻŦā§āĻāĻžāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻŽāĻŋ āĻāĻ āĻāĻļāĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¨āĻŋāĻā§āĻā§ āĻāĻžāĻā§āĻāĻžāĻ° āĻāĻ°āĻŋ āĻ¯ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻā§āĻ¨āĻ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻŦāĻŋāĻĻ āĻ¯āĻž āĻāĻžāĻ¨ āĻ¤āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻŦā§āĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻāĻ āĻĒāĻŖā§āĻ¯āĻāĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻžāĻĄāĻŧāĻž āĻ§ā§āĻŦāĻāĻ¸ āĻšāĻŦā§ āĻ¨āĻž, āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽāĻāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤
āĻ¸ā§āĻāĻžāĻā§āĻ¯ āĻāĻžāĻŽāĻ¨āĻž āĻāĻ°āĻāĻŋ!
āĻāĻ¤ā§āĻ¸: www.habr.com