Linux க்கான Punto Switcher இன் புதிய அனலாக்: xswitcher

xneur ஆதரவின் முடிவு கடந்த ஆறு மாதங்களில் எனக்கு சில துன்பங்களை ஏற்படுத்தியுள்ளது. (எனது டெஸ்க்டாப்பில் OpenSUSE 15.1 இன் வருகையுடன்: xneur இயக்கப்பட்டால், விண்டோக்கள் கவனத்தை இழக்கின்றன மற்றும் விசைப்பலகை உள்ளீட்டின் போது வேடிக்கையாக இருக்கும்).

"ஓ, அடடா, நான் மீண்டும் தவறான தளவமைப்பில் தட்டச்சு செய்ய ஆரம்பித்தேன்" - என் வேலையில் இது அநாகரீகமாக அடிக்கடி நிகழ்கிறது. மேலும் இது நேர்மறையான எதையும் சேர்க்காது.

Linux க்கான Punto Switcher இன் புதிய அனலாக்: xswitcher
அதே நேரத்தில், நான் (வடிவமைப்பு பொறியியலாளராக) எனக்கு என்ன வேண்டும் என்பதை தெளிவாக உருவாக்க முடியும். ஆனால் நான் விரும்பினேன் (முதலில் Punto Switcher இலிருந்து, பின்னர், Windows Vista க்கு நன்றி, இறுதியாக xneur இலிருந்து Linux க்கு மாறுகிறேன்) சரியாக ஒரு விஷயம். திரையில் உள்ள குப்பைகள் தவறான அமைப்பில் இருப்பதை உணர்ந்து (இது வழக்கமாக ஒரு புதிய வார்த்தையைத் தட்டச்சு செய்யும் முடிவில் நடக்கும்), "பாஸ்/பிரேக்" என்பதைத் தட்டவும். நீங்கள் அச்சிட்டதைப் பெறுங்கள்.

இந்த நேரத்தில், தயாரிப்பு உகந்த (எனது பார்வையில்) செயல்பாடு / சிக்கலான விகிதத்தைக் கொண்டுள்ளது. பகிர வேண்டிய நேரம் இது.

டி.எல்.டி.ஆர்

அனைத்து வகையான தொழில்நுட்ப விவரங்களும் பின்னர் இருக்கும், எனவே முதலில் - "தொட" இணைப்பு பொறுமையற்றவர்களுக்கு.

தற்போது பின்வரும் நடத்தை ஹார்ட்கோட் செய்யப்பட்டுள்ளது:

  • "இடைநிறுத்தம்/பிரேக்": கடைசி வார்த்தையை பின்வெளியேற்று, செயலில் உள்ள சாளரத்தில் (0 மற்றும் 1 க்கு இடையில்) தளவமைப்பை மாற்றி மீண்டும் டயல் செய்யுங்கள்.
  • "எதுவும் இல்லாமல் இடது Ctrl": செயலில் உள்ள சாளரத்தில் தளவமைப்பை மாற்றுகிறது (0 மற்றும் 1 க்கு இடையில்).
  • "எதுவும் இல்லாமல் இடது ஷிப்ட்": செயலில் உள்ள சாளரத்தில் தளவமைப்பு எண் 0 ஐ இயக்குகிறது.
  • "எதுவும் இல்லாமல் வலது ஷிப்ட்": செயலில் உள்ள சாளரத்தில் தளவமைப்பு எண் 1 ஐ இயக்குகிறது.

இனிமேல் நான் நடத்தையை தனிப்பயனாக்க திட்டமிட்டுள்ளேன். கருத்து இல்லாமல், இது சுவாரஸ்யமானது அல்ல (எப்படியும் நான் நன்றாக இருக்கிறேன்). ஹப்ரேயில் இதே போன்ற பிரச்சனைகளைக் கொண்ட பார்வையாளர்களில் போதுமான சதவீதம் இருப்பார்கள் என்று நான் நம்புகிறேன்.

பின்குறிப்பு ஏனெனில் தற்போதைய பதிப்பில், கீலாக்கர் "/dev/input/" உடன் இணைக்கப்பட்டுள்ளது, xswitcher ரூட் உரிமைகளுடன் தொடங்கப்பட வேண்டும்:

chown root:root xswitcher
chmod +xs xswitcher

தயவு செய்து கவனிக்க: suid கொண்ட கோப்பின் உரிமையாளர் ரூட்டாக இருக்க வேண்டும், ஏனெனில் உரிமையாளர் யாராக இருந்தாலும், அவர் தொடங்கும் போது வழக்குத் தொடரப்படுவார்.

சித்தப்பிரமைகள் (நான் விதிவிலக்கல்ல) இருந்து குளோன் செய்யலாம் GIT மற்றும் தளத்தில் சேகரிக்கவும். அது போல:

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 குறியீடு. நான் செல்ல இது போன்ற எதையும் கண்டுபிடிக்கவில்லை, மற்றும் தோராயமான செயல்படுத்தல் உடனடியாக C குறியீட்டின் நூறு வரிகளை எடுத்தது. இப்போதைக்கு அதை ஒதுக்கி வைக்கவும்.

"தலைகீழ்" வெளியீடு தற்போது மெய்நிகர் விசைப்பலகை திருகுவதன் மூலம் செய்யப்படுகிறது. Keybd_event இன் ஆசிரியருக்கு நன்றி, ஆனால் சுருக்கம் மிக உயர்ந்த மட்டத்தில் உள்ளது, மேலும் மீண்டும் மீண்டும் செய்யப்பட வேண்டும். எடுத்துக்காட்டாக, 3வது வரிசையைத் தேர்ந்தெடுக்க நான் சரியான Win விசையைப் பயன்படுத்துகிறேன். இடது வின் மட்டுமே மீண்டும் அனுப்பப்படுகிறது.

தெரிந்த பிழைகள்

  • "கலவை" உள்ளீடு பற்றி எங்களுக்கு எதுவும் தெரியாது (எடுத்துக்காட்டு: ½). அது இப்போதைக்கு தேவையில்லை.
  • நாங்கள் சரியான வெற்றியை தவறாக விளையாடுகிறோம். என் விஷயத்தில், அது முக்கியத்துவத்தை உடைக்கிறது.
  • தெளிவான உள்ளீடு பாகுபடுத்தல் இல்லை. அதற்கு பதிலாக, பல செயல்பாடுகள் உள்ளன: Compare(), CtrlSequence(), RepeatSequence(), SpaceSequence(). Спасибо nsmcan உங்கள் கவனிப்புக்கு: குறியீட்டிலும் இங்கேயும் சரி செய்யப்பட்டது. ஒரு குறிப்பிட்ட நிகழ்தகவுடன், மாற்றும்போது பிழைகளைப் பிடிக்கலாம்.
    இந்த கட்டத்தில் எனக்கு "எப்படி" என்று தெரியவில்லை மற்றும் எந்த பரிந்துரைகளையும் வரவேற்கிறேன்.
  • (அட கடவுளே) சேனல்களின் போட்டிப் பயன்பாடு (விசைப்பலகை நிகழ்வுகள், மைஸ் நிகழ்வுகள்).

முடிவுக்கு

குறியீடு மிகவும் எளிமையான நடைமுறை. மற்றும் என்னைப் போன்ற முட்டாள். எனவே, எந்தவொரு தொழில்நுட்ப வல்லுநரும் அவர் விரும்பியதை முடிக்க முடியும் என்ற நம்பிக்கையுடன் நான் என்னைப் புகழ்ந்து கொள்கிறேன். இதற்கு நன்றி, இந்த தயாரிப்பு ஆதரவு இல்லாமல் அழியாது, வேடிக்கைக்காக மட்டுமே.

நல்ல அதிர்ஷ்டம்!

ஆதாரம்: www.habr.com

கருத்தைச் சேர்