ಲಿನಕ್ಸ್‌ಗಾಗಿ ಪುಂಟೊ ಸ್ವಿಚರ್‌ನ ಹೊಸ ಅನಲಾಗ್: xswitcher

xneur ಬೆಂಬಲದ ಅಂತ್ಯವು ಕಳೆದ ಆರು ತಿಂಗಳಿನಿಂದ ನನಗೆ ಕೆಲವು ನೋವನ್ನು ಉಂಟುಮಾಡಿದೆ. (ನನ್ನ ಡೆಸ್ಕ್‌ಟಾಪ್‌ಗಳಲ್ಲಿ OpenSUSE 15.1 ಆಗಮನದೊಂದಿಗೆ: xneur ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ವಿಂಡೋಸ್ ಗಮನವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಕೀಬೋರ್ಡ್ ಇನ್‌ಪುಟ್‌ನೊಂದಿಗೆ ಸಮಯಕ್ಕೆ ತಮಾಷೆಯಾಗಿ ಮಿನುಗುತ್ತದೆ).

"ಓಹ್, ಡ್ಯಾಮ್, ನಾನು ಮತ್ತೆ ತಪ್ಪು ವಿನ್ಯಾಸದಲ್ಲಿ ಟೈಪ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದೆ" - ನನ್ನ ಕೆಲಸದಲ್ಲಿ ಇದು ಅಸಭ್ಯವಾಗಿ ಆಗಾಗ್ಗೆ ಸಂಭವಿಸುತ್ತದೆ. ಮತ್ತು ಇದು ಧನಾತ್ಮಕವಾಗಿ ಏನನ್ನೂ ಸೇರಿಸುವುದಿಲ್ಲ.

ಲಿನಕ್ಸ್‌ಗಾಗಿ ಪುಂಟೊ ಸ್ವಿಚರ್‌ನ ಹೊಸ ಅನಲಾಗ್: xswitcher
ಅದೇ ಸಮಯದಲ್ಲಿ, ನಾನು (ವಿನ್ಯಾಸ ಎಂಜಿನಿಯರ್ ಆಗಿ) ನನಗೆ ಬೇಕಾದುದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ರೂಪಿಸಬಹುದು. ಆದರೆ ನನಗೆ ಬೇಕಾಗಿರುವುದು (ಮೊದಲು Punto Switcher ನಿಂದ, ಮತ್ತು ನಂತರ, Windows Vista ಗೆ ಧನ್ಯವಾದಗಳು, ಅಂತಿಮವಾಗಿ Linux ಗೆ ಬದಲಾಯಿಸುವುದು, xneur ನಿಂದ) ನಿಖರವಾಗಿ ಒಂದು ವಿಷಯ. ಪರದೆಯ ಮೇಲಿನ ಕಸವು ತಪ್ಪಾದ ವಿನ್ಯಾಸದಲ್ಲಿದೆ ಎಂದು ಅರಿತುಕೊಂಡ ನಂತರ (ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಹೊಸ ಪದವನ್ನು ಟೈಪ್ ಮಾಡುವ ಕೊನೆಯಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ), "ವಿರಾಮ / ಬ್ರೇಕ್" ಮೇಲೆ ಸ್ಟಾಂಪ್ ಮಾಡಿ. ಮತ್ತು ನೀವು ಮುದ್ರಿಸಿದ್ದನ್ನು ಪಡೆಯಿರಿ.

ಈ ಸಮಯದಲ್ಲಿ, ಉತ್ಪನ್ನವು ಅತ್ಯುತ್ತಮವಾದ (ನನ್ನ ದೃಷ್ಟಿಕೋನದಿಂದ) ಕ್ರಿಯಾತ್ಮಕತೆ/ಸಂಕೀರ್ಣತೆಯ ಅನುಪಾತವನ್ನು ಹೊಂದಿದೆ. ಇದು ಹಂಚಿಕೊಳ್ಳಲು ಸಮಯ.

TL.DR

ಎಲ್ಲಾ ರೀತಿಯ ತಾಂತ್ರಿಕ ವಿವರಗಳು ನಂತರ ಇರುತ್ತದೆ, ಆದ್ದರಿಂದ ಮೊದಲು - "ಸ್ಪರ್ಶಿಸಲು" ಲಿಂಕ್ ತಾಳ್ಮೆಯಿಲ್ಲದವರಿಗೆ.

ಪ್ರಸ್ತುತ ಕೆಳಗಿನ ನಡವಳಿಕೆಯನ್ನು ಹಾರ್ಡ್‌ಕೋಡ್ ಮಾಡಲಾಗಿದೆ:

  • "ವಿರಾಮ / ಬ್ರೇಕ್": ಕೊನೆಯ ಪದವನ್ನು ಬ್ಯಾಕ್‌ಸ್ಪೇಸ್ ಮಾಡಿ, ಸಕ್ರಿಯ ವಿಂಡೋದಲ್ಲಿ ಲೇಔಟ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ (0 ಮತ್ತು 1 ರ ನಡುವೆ) ಮತ್ತು ಮತ್ತೆ ಡಯಲ್ ಮಾಡಿ.
  • "ಏನೂ ಇಲ್ಲದೆ ಎಡ Ctrl": ಸಕ್ರಿಯ ವಿಂಡೋದಲ್ಲಿ ಲೇಔಟ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ (0 ಮತ್ತು 1 ರ ನಡುವೆ).
  • "ಏನೂ ಇಲ್ಲದೆ ಎಡ ಶಿಫ್ಟ್": ಸಕ್ರಿಯ ವಿಂಡೋದಲ್ಲಿ ಲೇಔಟ್ ಸಂಖ್ಯೆ 0 ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ.
  • "ಏನೂ ಇಲ್ಲದೆ ರೈಟ್ ಶಿಫ್ಟ್": ಸಕ್ರಿಯ ವಿಂಡೋದಲ್ಲಿ ಲೇಔಟ್ ಸಂಖ್ಯೆ 1 ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ.

ಇಂದಿನಿಂದ ನಾನು ನಡವಳಿಕೆಯನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಲು ಯೋಜಿಸುತ್ತೇನೆ. ಪ್ರತಿಕ್ರಿಯೆ ಇಲ್ಲದೆ, ಇದು ಆಸಕ್ತಿದಾಯಕವಲ್ಲ (ಹೇಗಾದರೂ ನಾನು ಅದರೊಂದಿಗೆ ಚೆನ್ನಾಗಿದ್ದೇನೆ). ಹಬ್ರೆಯಲ್ಲಿ ಇದೇ ರೀತಿಯ ಸಮಸ್ಯೆಗಳೊಂದಿಗೆ ಸಾಕಷ್ಟು ಶೇಕಡಾವಾರು ಪ್ರೇಕ್ಷಕರು ಇರುತ್ತಾರೆ ಎಂದು ನಾನು ನಂಬುತ್ತೇನೆ.

ಎನ್ಬಿ ಏಕೆಂದರೆ ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯಲ್ಲಿ, ಕೀಲಿ ಭೇದಕರನ್ನು "/dev/input/" ಗೆ ಲಗತ್ತಿಸಲಾಗಿದೆ, xswitcher ಅನ್ನು ಮೂಲ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಬೇಕು:

chown root:root xswitcher
chmod +xs xswitcher

ದಯವಿಟ್ಟು ಗಮನಿಸಿ: ಸೂಯಿಡ್ ಹೊಂದಿರುವ ಫೈಲ್‌ನ ಮಾಲೀಕರು ರೂಟ್ ಆಗಿರಬೇಕು, ಏಕೆಂದರೆ ಮಾಲೀಕರು ಯಾರೇ ಆಗಿದ್ದರೂ ಅವರು ಪ್ರಾರಂಭವಾದ ಮೇಲೆ ಸೂಡ್ ಆಗಿ ಬದಲಾಗುತ್ತಾರೆ.

ಪ್ಯಾರನಾಯ್ಡ್‌ಗಳು (ನಾನು ಇದಕ್ಕೆ ಹೊರತಾಗಿಲ್ಲ) ನಿಂದ ಕ್ಲೋನ್ ಮಾಡಬಹುದು ಜಿಐಟಿ ಮತ್ತು ಸೈಟ್ನಲ್ಲಿ ಜೋಡಿಸಿ. ಹಾಗೆ:

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 ಈವೆಂಟ್‌ಗಳಿಗೆ ಚಂದಾದಾರರಾಗಲು ಸಾಧ್ಯವಿದೆ. ನೀವು ಇಣುಕಿ ನೋಡಬಹುದು xinput ಕೋಡ್. ಹೋಗುವುದಕ್ಕಾಗಿ ನಾನು ಈ ರೀತಿಯ ಯಾವುದನ್ನೂ ಕಂಡುಹಿಡಿಯಲಿಲ್ಲ, ಮತ್ತು ಒರಟು ಅನುಷ್ಠಾನವು ತಕ್ಷಣವೇ ನೂರು ಸಾಲುಗಳ ಸಿ ಕೋಡ್ ಅನ್ನು ತೆಗೆದುಕೊಂಡಿತು. ಸದ್ಯಕ್ಕೆ ಅದನ್ನು ಪಕ್ಕಕ್ಕೆ ಇರಿಸಿ.

ವರ್ಚುವಲ್ ಕೀಬೋರ್ಡ್ ಅನ್ನು ಸ್ಕ್ರೂಯಿಂಗ್ ಮಾಡುವ ಮೂಲಕ ಪ್ರಸ್ತುತ "ರಿವರ್ಸ್" ಔಟ್ಪುಟ್ ಅನ್ನು ತಯಾರಿಸಲಾಗುತ್ತದೆ. Keybd_event ನ ಲೇಖಕರಿಗೆ ಧನ್ಯವಾದಗಳು, ಆದರೆ ಅಮೂರ್ತತೆಯು ತುಂಬಾ ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿದೆ ಮತ್ತು ಮತ್ತೆ ಮತ್ತೆ ಮಾಡಬೇಕಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, 3 ನೇ ಸಾಲನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನಾನು ಬಲ ವಿನ್ ಕೀಲಿಯನ್ನು ಬಳಸುತ್ತೇನೆ. ಮತ್ತು ಎಡ ವಿನ್ ಮಾತ್ರ ಹಿಂದಕ್ಕೆ ಹರಡುತ್ತದೆ.

ತಿಳಿದಿರುವ ದೋಷಗಳು

  • "ಸಂಯೋಜಿತ" ಇನ್ಪುಟ್ ಬಗ್ಗೆ ನಮಗೆ ಏನೂ ತಿಳಿದಿಲ್ಲ (ಉದಾಹರಣೆ: ½). ಸದ್ಯಕ್ಕೆ ಅದರ ಅಗತ್ಯವಿಲ್ಲ.
  • ನಾವು ಸರಿಯಾದ ವಿನ್ ಅನ್ನು ತಪ್ಪಾಗಿ ಆಡುತ್ತಿದ್ದೇವೆ. ನನ್ನ ವಿಷಯದಲ್ಲಿ, ಇದು ಒತ್ತು ಒಡೆಯುತ್ತದೆ.
  • ಸ್ಪಷ್ಟವಾದ ಇನ್‌ಪುಟ್ ಪಾರ್ಸಿಂಗ್ ಇಲ್ಲ. ಬದಲಾಗಿ, ಹಲವಾರು ಕಾರ್ಯಗಳಿವೆ: ಹೋಲಿಕೆ(), CtrlSequence(), RepeatSequence(), SpaceSequence(). ಸಪಾಕ್ಸಿ nsmcan ನಿಮ್ಮ ಕಾಳಜಿಗಾಗಿ: ಅದನ್ನು ಕೋಡ್‌ನಲ್ಲಿ ಮತ್ತು ಇಲ್ಲಿ ಸರಿಪಡಿಸಲಾಗಿದೆ. ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂಭವನೀಯತೆಯೊಂದಿಗೆ, ಬದಲಾಯಿಸುವಾಗ ನೀವು ದೋಷಗಳನ್ನು ಹಿಡಿಯಬಹುದು.
    ಈ ಹಂತದಲ್ಲಿ ನನಗೆ "ಹೇಗೆ" ಗೊತ್ತಿಲ್ಲ ಮತ್ತು ಯಾವುದೇ ಸಲಹೆಗಳನ್ನು ಸ್ವಾಗತಿಸುತ್ತೇನೆ.
  • (ಓ ದೇವರೇ) ಚಾನಲ್‌ಗಳ ಸ್ಪರ್ಧಾತ್ಮಕ ಬಳಕೆ (ಕೀಬೋರ್ಡ್ ಈವೆಂಟ್‌ಗಳು, ಮೈಸ್ ಈವೆಂಟ್‌ಗಳು).

ತೀರ್ಮಾನಕ್ಕೆ

ಕೋಡ್ ಸರಳವಾದ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ಮತ್ತು ನನ್ನಂತೆ ಮೂರ್ಖ. ಆದ್ದರಿಂದ, ಯಾವುದೇ ತಂತ್ರಜ್ಞನು ತನಗೆ ಬೇಕಾದುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ ಎಂಬ ಭರವಸೆಯೊಂದಿಗೆ ನಾನು ನನ್ನನ್ನು ಹೊಗಳುತ್ತೇನೆ. ಮತ್ತು ಇದಕ್ಕೆ ಧನ್ಯವಾದಗಳು, ಈ ಉತ್ಪನ್ನವು ಬೆಂಬಲವಿಲ್ಲದೆ ನಾಶವಾಗುವುದಿಲ್ಲ, ಕೇವಲ ವಿನೋದಕ್ಕಾಗಿ.

ಅದೃಷ್ಟ!

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ