አዲስ የ Punto Switcher አናሎግ ለሊኑክስ፡ xswitcher

የ xneur ድጋፍ መጨረሻ ባለፉት ስድስት ወራት ውስጥ አንዳንድ ስቃይ አስከትሎብኛል። (OpenSUSE 15.1 በእኔ ዴስክቶፕ ላይ ሲመጣ፡ xneur ሲነቃ ዊንዶውስ ትኩረቱን ያጣሉ እና በቁልፍ ሰሌዳ ግቤት በጊዜ ውስጥ አስቂኝ ብልጭ ድርግም ይላሉ).

“ኦህ ፣ እርግማን ፣ በተሳሳተ አቀማመጥ እንደገና መተየብ ጀመርኩ” - በስራዬ ውስጥ ይህ ብዙ ጊዜ ተገቢ ባልሆነ መንገድ ይከሰታል። እና ምንም አዎንታዊ ነገር አይጨምርም.

አዲስ የ Punto Switcher አናሎግ ለሊኑክስ፡ xswitcher
በተመሳሳይ ጊዜ, እኔ (እንደ ንድፍ መሐንዲስ) የምፈልገውን በግልፅ ማዘጋጀት እችላለሁ. ግን እኔ ፈልጌ ነበር (መጀመሪያ ከ Punto Switcher, እና ለዊንዶውስ ቪስታ ምስጋና ይግባው, በመጨረሻም ወደ ሊኑክስ, ከ xneur መቀየር) በትክክል አንድ ነገር. በስክሪኑ ላይ ያለው ቆሻሻ የተሳሳተ አቀማመጥ ላይ መሆኑን ከተረዳህ (ይህ አብዛኛውን ጊዜ አዲስ ቃል ስትተይብ መጨረሻ ላይ ነው)፣ “ለአፍታ አቁም/አቋርጥ” ላይ ቆም። እና ያተሙትን ያግኙ።

በአሁኑ ጊዜ, ምርቱ በጣም ጥሩው (ከእኔ እይታ) ተግባራዊነት / ውስብስብነት ጥምርታ አለው. ለመካፈል ጊዜው አሁን ነው።

TL.DR

በኋላ ሁሉም ዓይነት ቴክኒካዊ ዝርዝሮች ይኖራሉ, ስለዚህ በመጀመሪያ - አገናኝ "ለመንካት" ትዕግስት ለሌላቸው.

በአሁኑ ጊዜ የሚከተለው ባህሪ በሃርድ ኮድ ተዘጋጅቷል፡-

  • "ለአፍታ አቁም/ስብራት"፡ የመጨረሻውን ቃል ወደ ኋላ ይከታል፣ አቀማመጡን በነቃው መስኮት (በ0 እና 1 መካከል) ይቀይራል እና እንደገና ይደውላል።
  • "ያለምንም የግራ Ctrl": አቀማመጡን በንቁ መስኮት (በ 0 እና 1 መካከል) ይቀይራል.
  • "ያለምንም የግራ Shift": በሚሠራው መስኮት ውስጥ አቀማመጥ ቁጥር 0ን ያበራል.
  • "ያለ ምንም ነገር የቀኝ Shift": በሚሠራው መስኮት ውስጥ አቀማመጥ ቁጥር 1ን ያበራል.

ከአሁን ጀምሮ ባህሪውን ለማበጀት እቅድ አለኝ. ያለ ግብረ መልስ, አስደሳች አይደለም (ለማንኛውም እኔ ደህና ነኝ). በሀበሬ ላይ ተመሳሳይ ችግር ያለባቸው ታዳሚዎች በቂ መቶኛ እንደሚኖሩ አምናለሁ።

ማሳሰቢያ ምክንያቱም አሁን ባለው ስሪት ኪይሎገር ከ"/dev/input/" ጋር ተያይዟል፣xswitcher ከስር መብቶች ጋር መጀመር አለበት፡

chown root:root xswitcher
chmod +xs xswitcher

እባክዎ ልብ ይበሉ: የፋይሉ ባለቤት ከሱይድ ጋር ሥር መሆን አለበት, ምክንያቱም ባለቤቱ ማን እንደሆነ ሲነሳ ወደ ክስ ይለውጣል።

ፓራኖይድስ (እኔ የተለየ አይደለሁም) ከ ሊዘጉ ይችላሉ። 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 ሰከንድ ሲፒዩ በቀን፣ ≈12 ሜባ በRSS)።

ዝርዝሮችን ይመልከቱ

አሁን - ዝርዝሮች.

ጠቅላላው ማከማቻ በመጀመሪያ ለኔ የቤት እንስሳ ፕሮጄክት የተሰጠ ነበር፣ እና ሌላ ለመጀመር በጣም ሰነፍ ነኝ። ስለዚህ, ሁሉም ነገር ተቆልሏል (በአቃፊዎች ውስጥ ብቻ) እና በ AGPL ("ተገላቢጦሽ የፈጠራ ባለቤትነት") የተሸፈነ ነው.

የ xswitcher ኮድ በ golang የተጻፈ ነው፣ ከሲ ውስጥ በትንሹ የተካተቱት። cgo ን በመጠቀም የጎደለውን የማገናኘት ችሎታን በመጠበቅ ላይ።

ጽሑፉ ከየት እንደተወሰደ እና ለምን እንደሆነ አስተያየቶችን ይዟል. ምክንያቱም የ xneur ኮድ "አላነሳሳኝ", እንደ መነሻ ወሰድኩት loloswitcher.

"/ dev/input/" ን መጠቀም ሁለቱም ጥቅሞቹ አሉት (ሁሉም ነገር ይታያል፣ የተጫነውን የራስ-ድግግሞሽ ቁልፍ ጨምሮ) እና ጉዳቶቹ። ጉዳቶቹ፡-

  • ራስ-ድግግሞሽ (ኮድ "2" ያላቸው ክስተቶች) ከመድገም ጋር አይዛመዱም x.
  • በX11 በይነገጾች በኩል ያለው ግቤት አይታይም (ለምሳሌ ቪኤንሲ የሚሰራው በዚህ መንገድ ነው)።
  • ሥር ያስፈልገዋል.

በሌላ በኩል፣ በ "XSelectExtensionEvent()" በኩል ለX ዝግጅቶች መመዝገብ ይቻላል። ማየት ትችላለህ xinput ኮድ. ለጉዞ እንደዚህ ያለ ነገር አላገኘሁም ፣ እና ሻካራ ትግበራ ወዲያውኑ መቶ የ C ኮድ መስመሮችን ወሰደ። ለአሁኑ ወደ ጎን አስቀምጠው.

የ"ተገላቢጦሽ" ውፅዓት በአሁኑ ጊዜ የምናባዊ ቁልፍ ሰሌዳውን በመጠምዘዝ ነው። ለኪይbd_ክስተት ደራሲ ምስጋና ይግባውና፣ ነገር ግን እዛ ላይ ያለው ረቂቅ በጣም ከፍተኛ ደረጃ ስላለው የበለጠ እንደገና መስተካከል አለበት። ለምሳሌ, 3 ኛ ረድፍ ለመምረጥ ትክክለኛውን የዊን ቁልፍ እጠቀማለሁ. እና የግራ ዊን ብቻ ወደ ኋላ ይተላለፋል.

የታወቁ ሳንካዎች

  • ስለ “ውህድ” ግቤት ምንም የምናውቀው ነገር የለም (ለምሳሌ፡ ½)። አሁን አያስፈልግም።
  • ትክክለኛውን ዊን እየተጫወትን ያለነው በስህተት ነው። በእኔ ሁኔታ, አጽንዖትን ይሰብራል.
  • ግልጽ የሆነ የግቤት ትንተና የለም። በምትኩ በርካታ ተግባራት አሉ፡ አወዳድር()፣ CtrlSequence() RepeatSequence()SpaceSequence()። Спасибо nsmcan ለእንክብካቤዎ: በኮዱ እና እዚህ አስተካክለው. በተወሰነ ዕድል፣ በምትተካበት ጊዜ ሳንካዎችን መያዝ ትችላለህ።
    በዚህ ጊዜ "እንዴት" የሚለውን አላውቅም እና ማንኛውንም አስተያየት በደስታ እቀበላለሁ.
  • (ኦ! አምላኬ) የቻናሎች ተወዳዳሪ አጠቃቀም (የቁልፍ ሰሌዳክስተቶች፣ አይጦች)።

መደምደሚያ

ኮዱ በጣም ቀላሉ አሰራር ነው። እና እንደ እኔ ደደብ። ስለዚህ፣ ማንኛውም ቴክኒሻን የሚፈልገውን ነገር ሊያጠናቅቅ ይችላል በሚል ተስፋ እራሴን አሞካሻለሁ። እና ለዚህም ምስጋና ይግባውና ይህ ምርት ያለ ድጋፍ አይጠፋም, ልክ እንደ አብዛኞቹ ለመዝናናት.

መልካም ዕድል!

ምንጭ: hab.com

አስተያየት ያክሉ