เจฒเฉ€เจจเจ•เจธ เจฒเจˆ เจชเฉเฉฐเจŸเฉ‹ เจธเจตเจฟเฉฑเจšเจฐ เจฆเจพ เจจเจตเจพเจ‚ เจเจจเจพเจฒเจพเจ—: xswitcher

xneur เจธเจนเจพเจ‡เจคเจพ เจฆเฉ‡ เจ…เฉฐเจค เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจชเจฟเจ›เจฒเฉ‡ เจ›เฉ‡ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ•เฉเจ เจฆเฉเฉฑเจ– เจเฉฑเจฒเจฃเฉ‡ เจชเจ เจนเจจเฅค (เจฎเฉ‡เจฐเฉ‡ เจกเฉˆเจธเจ•เจŸเจพเจชเจพเจ‚ 'เจคเฉ‡ เจ“เจชเจจเจธเฉ‚เจธเฉ‡ 15.1 เจฆเฉ‡ เจ†เจ—เจฎเจจ เจจเจพเจฒ: xneur เจธเจฎเจฐเฉฑเจฅ เจนเฉ‹เจฃ เจจเจพเจฒ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจซเฉ‹เจ•เจธ เจ—เฉเจ† เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจ…เจคเฉ‡ เจ•เฉ€เจฌเฉ‹เจฐเจก เจ‡เจจเจชเฉเจŸ เจจเจพเจฒ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฎเจœเจผเจพเจ•เฉ€เจ† เจฌเจฃ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ).

โ€œเจ“เจน, เจฒเจพเจนเจจเจค, เจฎเฉˆเจ‚ เจฆเฉเจฌเจพเจฐเจพ เจ—เจฒเจค เจฒเฉ‡เจ†เจ‰เจŸ เจตเจฟเฉฑเจš เจŸเจพเจˆเจช เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเจพโ€ - เจฎเฉ‡เจฐเฉ‡ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš เจ‡เจน เจ…เจ•เจธเจฐ เจ…เจธเจผเจฒเฉ€เจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ‡เจน เจ•เฉเจ เจตเฉ€ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจจเจนเฉ€เจ‚ เจœเฉ‹เฉœเจฆเจพ.

เจฒเฉ€เจจเจ•เจธ เจฒเจˆ เจชเฉเฉฐเจŸเฉ‹ เจธเจตเจฟเฉฑเจšเจฐ เจฆเจพ เจจเจตเจพเจ‚ เจเจจเจพเจฒเจพเจ—: xswitcher
เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจฎเฉˆเจ‚ (เจ‡เฉฑเจ• เจกเจฟเจœเจผเจพเจ‡เจจ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐ เจตเจœเฉ‹เจ‚) เจœเฉ‹ เจฎเฉˆเจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจ‰เจน เจธเจชเจธเจผเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเจพเจ‚. เจชเจฐ เจฎเฉˆเจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€ (เจชเจนเจฟเจฒเจพเจ‚ เจชเฉเฉฐเจŸเฉ‹ เจธเจตเจฟเฉฑเจšเจฐ เจคเฉ‹เจ‚, เจ…เจคเฉ‡ เจซเจฟเจฐ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจตเจฟเจธเจŸเจพ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจ…เฉฐเจค เจตเจฟเฉฑเจš xneur เจคเฉ‹เจ‚ เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃเจพ) เจฌเจฟเจฒเจ•เฉเจฒ เจ‡เฉฑเจ• เจšเฉ€เจœเจผเฅค เจ‡เจน เจฎเจนเจฟเจธเฉ‚เจธ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เจฟ เจธเจ•เจฐเฉ€เจจ 'เจคเฉ‡ เจ•เฉ‚เฉœเจพ เจ—เจฒเจค เจฒเฉ‡เจ†เจ‰เจŸ เจตเจฟเฉฑเจš เจนเฉˆ (เจ‡เจน เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจตเจพเจ‚ เจธเจผเจฌเจฆ เจŸเจพเจˆเจช เจ•เจฐเจจ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจนเฉเฉฐเจฆเจพ เจนเฉˆ), "เจฐเฉ‹เจ•เฉ‹/เจฌเฉเจฐเฉ‡เจ•" 'เจคเฉ‡ เจฐเฉ‹เจ• เจฆเจฟเจ“เฅค เจ…เจคเฉ‡ เจ‰เจน เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‹ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ›เจพเจชเจฟเจ† เจนเฉˆ.

เจ‡เจธ เจธเจฎเฉ‡เจ‚, เจ‰เจคเจชเจพเจฆ เจตเจฟเฉฑเจš เจธเจฐเจตเฉ‹เจคเจฎ (เจฎเฉ‡เจฐเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚) เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ/เจœเจŸเจฟเจฒเจคเจพ เจ…เจจเฉเจชเจพเจค เจนเฉˆเฅค เจ‡เจน เจธเจพเจ‚เจเจพ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆเฅค

เจŸเฉ€.เจเจฒ.เจกเฉ€.เจ†เจฐ

เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจนเจฐ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจคเจ•เจจเฉ€เจ•เฉ€ เจตเฉ‡เจฐเจตเฉ‡ เจนเฉ‹เจฃเจ—เฉ‡, เจ‡เจธ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ - เจฒเจฟเฉฐเจ• "เจ›เฉ‹เจนเจฃ เจฒเจˆ" เจฌเฉ‡เจธเจฌเจฐเฉ€ เจฒเจˆ.

เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจตเจฟเจตเจนเจพเจฐ เจจเฉ‚เฉฐ เจนเจพเจฐเจกเจ•เฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:

  • โ€œเจตเจฟเจฐเจพเจฎ/เจฌเฉเจฐเฉ‡เจ•โ€: เจ†เจ–เจฐเฉ€ เจธเจผเจฌเจฆ เจจเฉ‚เฉฐ เจฌเฉˆเจ•เจธเจชเฉ‡เจธ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจฒเฉ‡เจ†เจ‰เจŸ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ (0 เจ…เจคเฉ‡ 1 เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ) เจ…เจคเฉ‡ เจฆเฉเจฌเจพเจฐเจพ เจกเจพเจ‡เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • โ€œเจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจฆเฉ‡ เจ–เฉฑเจฌเจพ Ctrlโ€: เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจฒเฉ‡เจ†เจ‰เจŸ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ (0 เจ…เจคเฉ‡ 1 เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ)เฅค
  • โ€œเจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจฆเฉ‡ เจ–เฉฑเจฌเฉ€ เจธเจผเจฟเจซเจŸโ€: เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจฒเฉ‡เจ†เจ‰เจŸ เจจเฉฐเจฌเจฐ 0 เจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • โ€œเจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจฆเฉ‡ เจธเฉฑเจœเจพ เจธเจผเจฟเจซเจŸโ€: เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจฒเฉ‡เจ†เจ‰เจŸ เจจเฉฐเจฌเจฐ 1 เจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจนเฉเจฃ เจคเฉ‹เจ‚ เจฎเฉˆเจ‚ เจตเจฟเจตเจนเจพเจฐ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจฟเจนเจพ เจนเจพเจ‚. เจซเฉ€เจกเจฌเฉˆเจ• เจฆเฉ‡ เจฌเจฟเจจเจพเจ‚, เจ‡เจน เจฆเจฟเจฒเจšเจธเจช เจจเจนเฉ€เจ‚ เจนเฉˆ (เจฎเฉˆเจ‚ เจซเจฟเจฐ เจตเฉ€ เจ‡เจธ เจจเจพเจฒ เจ เฉ€เจ• เจนเจพเจ‚)เฅค เจฎเฉˆเจจเฉ‚เฉฐ เจตเจฟเจธเจผเจตเจพเจธ เจนเฉˆ เจ•เจฟ เจนเฉˆเจฌเจฐเฉ‡ 'เจคเฉ‡ เจธเจฎเจพเจจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจตเจพเจฒเฉ‡ เจฆเจฐเจธเจผเจ•เจพเจ‚ เจฆเฉ€ เจ•เจพเจซเฉ€ เจชเฉเจฐเจคเฉ€เจธเจผเจค เจนเฉ‹เจตเฉ‡เจ—เฉ€.

NB เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš, เจ•เฉ€เจฒเฉŒเจ—เจฐ "/dev/input/" เจจเจพเจฒ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ, xswitcher เจจเฉ‚เฉฐ เจฐเฉ‚เจŸ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจจเจพเจฒ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

chown root:root xswitcher
chmod +xs xswitcher

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจจเฉ‹เจŸ เจ•เจฐเฉ‹: suid เจตเจพเจฒเฉ€ เจซเจพเจˆเจฒ เจฆเจพ เจฎเจพเจฒเจ• เจฐเฉ‚เจŸ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเฉ‹ เจ•เฉ‹เจˆ เจตเฉ€ เจฎเจพเจฒเจ• เจนเฉˆ, เจ‰เจธ เจจเฉ‚เฉฐ เจธเจŸเจพเจฐเจŸเจ…เจช 'เจคเฉ‡ เจฎเฉเจ•เฉฑเจฆเจฎเฉ‡ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค

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 เจ•เฉ‹เจก "เจฎเฉˆเจจเฉ‚เฉฐ เจชเฉเจฐเฉ‡เจฐเจฟเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ", เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจฌเจฟเฉฐเจฆเฉ‚ เจตเจœเฉ‹เจ‚ เจฒเจฟเจ† loloswitcher.

"/dev/input/" เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฆเฉ‹เจตเฉ‡เจ‚ เจซเจพเจ‡เจฆเฉ‡ เจนเจจ (เจธเจญ เจ•เฉเจ เจฆเจฟเจธเจฆเจพ เจนเฉˆ, เจฆเจฌเจพเจˆ เจ†เจŸเฉ‹-เจฆเฉเจนเจฐเจพเจ“ เจ•เฉเฉฐเจœเฉ€ เจธเจฎเฉ‡เจค) เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจเฅค เจจเฉเจ•เจธเจพเจจ เจนเจจ:

  • เจ†เจŸเฉ‹-เจฆเฉเจนเจฐเจพเจ“ (เจ•เฉ‹เจก โ€œ2โ€ เจตเจพเจฒเฉ‡ เจ‡เจตเฉˆเจ‚เจŸ) x เจฆเฉ‡ เจจเจพเจฒ เจฆเฉเจนเจฐเจพเจ“ เจจเจพเจฒ เจธเจฌเฉฐเจง เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฆเฉ‡เฅค
  • X11 เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฐเจพเจนเฉ€เจ‚ เจ‡เฉฐเจชเฉเฉฑเจŸ เจฆเจฟเจ–เจพเจˆ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, VNC เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค
  • เจฐเฉ‚เจŸ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ.

เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡, "XSelectExtensionEvent()" เจฐเจพเจนเฉ€เจ‚ X เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจฆเฉ€ เจ—เจพเจนเจ•เฉ€ เจฒเฉˆเจฃเจพ เจธเฉฐเจญเจต เจนเฉˆเฅค 'เจคเฉ‡ เจเจพเจค เจฎเจพเจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ xinput เจ•เฉ‹เจก. เจฎเฉˆเจจเฉ‚เฉฐ เจœเจพเจฃ เจฒเจˆ เจ…เจœเจฟเจนเจพ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฟเจ†, เจ…เจคเฉ‡ เจฎเฉ‹เจŸเจพ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจจเฉ‡ เจคเฉเจฐเฉฐเจค เจธเฉ€ เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจธเฉŒ เจฒเจพเจˆเจจเจพเจ‚ เจฒเฉˆ เจฒเจˆเจ†เจ‚เฅค เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉเจฃ เจฒเจˆ เจชเจพเจธเฉ‡ เจฐเฉฑเจ– เจฆเจฟเจ“เฅค

"เจฐเจฟเจตเจฐเจธ" เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจ•เฉ€เจฌเฉ‹เจฐเจก เจจเฉ‚เฉฐ เจชเฉ‡เจš เจ•เจฐเจ•เฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉ€เจฌเฉ€เจกเฉ€_เจˆเจตเฉˆเจ‚เจŸ เจฆเฉ‡ เจฒเฉ‡เจ–เจ• เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจชเจฐ เจ‡เฉฑเจฅเฉ‡ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฌเจนเฉเจค เจ‰เฉฑเจš เจชเฉฑเจงเจฐเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจฆเฉเจฌเจพเจฐเจพ เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจคเฉ€เจœเฉ€ เจ•เจคเจพเจฐ เจจเฉ‚เฉฐ เจšเฉเจฃเจจ เจฒเจˆ เจธเฉฑเจœเฉ€ Win เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจ–เฉฑเจฌเฉ‡ เจตเจฟเจจ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

เจœเจพเจฃเฉ‡-เจชเจ›เจพเจฃเฉ‡ เจฌเฉฑเจ—

  • เจธเจพเจจเฉ‚เฉฐ "เจ•เฉฐเจชเฉ‹เจœเจผเจฟเจŸ" เจ‡เจจเจชเฉเจŸ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจชเจคเจพ (เจ‰เจฆเจพเจนเจฐเจจ: ยฝ)เฅค เจ‡เจธ เจฆเฉ€ เจนเฉเจฃ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค
  • เจ…เจธเฉ€เจ‚ เจธเจนเฉ€ เจœเจฟเฉฑเจค เจจเฉ‚เฉฐ เจ—เจฒเจค เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ–เฉ‡เจก เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจœเจผเฉ‹เจฐ เจจเฉ‚เฉฐ เจคเฉ‹เฉœเจฆเจพ เจนเฉˆ.
  • เจ•เฉ‹เจˆ เจธเจชเจธเจผเจŸ เจ‡เฉฐเจชเฉเฉฑเจŸ เจชเจพเจฐเจธเจฟเฉฐเจ— เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจธเจฆเฉ€ เจฌเจœเจพเจ, เจ‡เฉฑเจฅเฉ‡ เจ•เจˆ เจซเฉฐเจ•เจธเจผเจจ เจนเจจ: Compare(), CtrlSequence(), RepeatSequence(), SpaceSequence(). ะกะฟะฐัะธะฑะพ nsmcan เจคเฉเจนเจพเจกเฉ€ เจฆเฉ‡เจ–เจญเจพเจฒ เจฒเจˆ: เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจ เฉ€เจ• เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เฉฑเจ• เจ–เจพเจธ เจธเฉฐเจญเจพเจตเจจเจพ เจฆเฉ‡ เจจเจพเจฒ, เจคเฉเจธเฉ€เจ‚ เจฌเจฆเจฒเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฌเฉฑเจ— เจซเฉœ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
    เจ‡เจธ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจชเจคเจพ เจ•เจฟ "เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ" เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเฉเจเจพเจ… เจฆเจพ เจธเจตเจพเจ—เจค เจ•เจฐเจพเจ‚เจ—เจพเฅค
  • (เจนเฉ‡ เจตเจพเจนเจฟเจ—เฉเจฐเฉ‚) เจšเฉˆเจจเจฒเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจฏเฉ‹เจ—เฉ€ เจตเจฐเจคเฉ‹เจ‚ (เจ•เฉ€เจฌเฉ‹เจฐเจก เจˆเจตเฉˆเจ‚เจŸเจธ, เจฎเจพเจˆเจธ เจˆเจตเฉˆเจ‚เจŸเจธ)เฅค

เจธเจฟเฉฑเจŸเจพ

เจ•เฉ‹เจก เจธเจญ เจคเฉ‹เจ‚ เจธเจฐเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจนเฉˆเฅค เจ…เจคเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจตเจฐเจ—เฉ‡ เจฎเฉ‚เจฐเจ–. เจ‡เจธ เจฒเจˆ, เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ‡เจธ เจ‰เจฎเฉ€เจฆ เจจเจพเจฒ เจ–เฉเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจฒเจ—เจญเจ— เจ•เฉ‹เจˆ เจตเฉ€ เจŸเฉˆเจ•เจจเฉ€เจธเจผเฉ€เจ…เจจ เจœเฉ‹ เจ‰เจน เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ‰เจธเจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพ. เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจ‡เจน เจ‰เจคเจชเจพเจฆ เจธเจนเจพเจ‡เจคเจพ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจจเจพเจธเจผ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฟเจฐเจซ-เจฎเจœเจผเฉ‡ เจฒเจˆเฅค

เจšเฉฐเจ—เฉ€ เจ•เจฟเจธเจฎเจค!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹