linux အတွက် Punto Switcher ၏ analogue အသစ်- xswitcher

xneur ပံ့ပိုးမှု၏အဆုံးသတ်သည် လွန်ခဲ့သည့်ခြောက်လအတွင်း ကျွန်ုပ်ကို ဝေဒနာအချို့ဖြစ်စေခဲ့သည်။ (ကျွန်ုပ်၏ဒက်စ်တော့များတွင် OpenSUSE 15.1 ထွန်းကားလာသည်နှင့်အမျှ xneur ကိုဖွင့်ထားသဖြင့်၊ windows သည် ကီးဘုတ်ထည့်သွင်းခြင်းဖြင့် အချိန်တိုအတွင်း အာရုံစူးစိုက်မှုမရှိတော့ဘဲ တုန်ခါသွားကာ ရယ်စရာကောင်းသည်).

"အိုး၊ အင်း၊ ငါ အဆင်အပြင်ကို ထပ်မှားပြီး စာရိုက်နေတော့တယ်" - ငါ့အလုပ်မှာ ဒီလို မတော်တရော် ဖြစ်တတ်တယ်။ ပြီးတော့ အပြုသဘောဆောင်တာ ဘာမှ မထည့်ဘူး။

linux အတွက် Punto Switcher ၏ analogue အသစ်- xswitcher
တစ်ချိန်တည်းမှာပဲ၊ ငါ (ဒီဇိုင်းအင်ဂျင်နီယာတစ်ယောက်အနေနဲ့) ငါလိုချင်တာကို ရှင်းရှင်းလင်းလင်း ပုံဖော်နိုင်တယ်။ ဒါပေမယ့် ကျွန်တော်လိုချင်တာက (ပထမ Punto Switcher နဲ့ Windows Vista ရဲ့ကျေးဇူးကြောင့် နောက်ဆုံးမှာ Linux ကနေ xneur ကိုပြောင်းသွားတယ်) အတိအကျတစ်ချက်လိုချင်တယ်။ စခရင်ပေါ်ရှိ အမှိုက်များသည် မှားယွင်းနေသော အပြင်အဆင်တွင် ရှိနေကြောင်း သိရှိပြီးနောက် (၎င်းသည် စကားလုံးအသစ်တစ်ခုရိုက်ပြီးနောက်တွင် ဖြစ်တတ်သည်)၊ "ရပ်ရန်/ချိုးဖျက်ခြင်း" ကို ရပ်တန့်လိုက်ပါ။ သင်ရိုက်နှိပ်သောအရာကိုရယူပါ။

လောလောဆယ်တွင်၊ ထုတ်ကုန်တွင် အကောင်းဆုံး (ကျွန်တော့်အမြင်) လုပ်ဆောင်နိုင်စွမ်း/ရှုပ်ထွေးမှုအချိုးရှိသည်။ မျှဝေချိန်တန်ပါပြီ။

TL.DR

နောက်ပိုင်းမှာ နည်းပညာဆိုင်ရာအသေးစိတ်အချက် အလက်တွေ အမျိုးမျိုးရှိတော့မှာမို့ အရင်ဦးဆုံး- "ထိရန်" လင့်ခ် စိတ်မရှည်သူများအတွက်

လောလောဆယ်တွင် အောက်ပါအပြုအမူကို hardcode လုပ်ထားပါသည်။

  • “ခေတ္တရပ်ခြင်း/ချိုးဖျက်ခြင်း”- နောက်ဆုံးစကားလုံးကို backspace ပေးသည်၊ အသုံးပြုနေသောဝင်းဒိုး (0 နှင့် 1 အကြား) တွင် အပြင်အဆင်ကို ပြောင်းကာ ထပ်၍ခေါ်ဆိုပါ။
  • “ဘာမှမပါဘဲ Ctrl ချန်ထားခဲ့သည်”- အသက်ဝင်သောဝင်းဒိုး (0 နှင့် 1 အကြား) ရှိ အပြင်အဆင်ကို ပြောင်းသည်။
  • “ဘယ်အရာမှမပါဘဲ ဘယ် Shift”- လက်ရှိဖွင့်ထားသည့်ဝင်းဒိုးတွင် အပြင်အဆင်နံပါတ် 0 ကိုဖွင့်သည်။
  • “ဘာမှမပါဘဲ Right Shift”- အသုံးပြုနေသောဝင်းဒိုးတွင် အပြင်အဆင် နံပါတ် 1 ကိုဖွင့်သည်။

ယခုမှစ၍ အပြုအမူကို စိတ်ကြိုက်ပြင်ဆင်ရန် စီစဉ်ထားပါသည်။ တုံ့ပြန်ချက်မရှိဘဲ၊ အဲဒါက စိတ်ဝင်စားစရာမဟုတ်ဘူး (ဘာပဲဖြစ်ဖြစ် ငါအဆင်ပြေပါတယ်)။ Habre တွင် အလားတူပြဿနာများရှိသည့် ပရိသတ်၏ လုံလောက်သောရာခိုင်နှုန်းရှိမည်ဟု ကျွန်တော်ယုံကြည်ပါသည်။

NB ဘာဖြစ်လို့လဲဆိုတော့ လက်ရှိဗားရှင်းတွင်၊ ကီးလော့ဂ်ဂါကို "/dev/input/" နှင့် ချိတ်ဆက်ထားပြီး xswitcher ကို root လုပ်ပိုင်ခွင့်များဖြင့် စတင်လုပ်ဆောင်ရမည်-

chown root:root xswitcher
chmod +xs xswitcher

ကျေးဇူးပြု. သတိပြုပါ: suid ဖြင့် ဖိုင်ပိုင်ရှင်သည် root ဖြစ်ရမည်ဖြစ်သောကြောင့်၊ မည်သူမဆို ပိုင်ရှင်ဖြစ်သည်ကို စတင်သောအခါတွင် တရားစွဲသူအဖြစ်သို့ ပြောင်းလဲသွားမည်ဖြစ်သည်။

Paranoids (I am noခြွင်းချက်) တို့မှ မွေးထုတ်နိုင်ပါသည်။ Git site ပေါ်တွင်စုဝေး။ ထိုကဲ့သို့-

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

အရသာအတွက် autostart ကိုထည့်ပါ (DE ပေါ်မူတည်၍)

၎င်းသည် အလုပ်လုပ်သည်၊ "ယာဂုမတောင်း" (တစ်နေ့လျှင် ≈30 စက္ကန့် CPU၊ RSS ဖြင့် ≈12 MB)။

အသေးစိတျ

ကဲ-အသေးစိတ်ပါ။

သိုလှောင်မှုတစ်ခုလုံးသည် မူလက ကျွန်ုပ်၏အိမ်မွေးတိရစ္ဆာန်ပရောဂျက်အတွက် ရည်ရွယ်ပြီး နောက်တစ်ခုစတင်ရန် အလွန်ပျင်းရိပါသည်။ ထို့ကြောင့်၊ အရာအားလုံး (ဖိုင်တွဲများတွင်သာ) စုစည်းထားပြီး AGPL ("ပြောင်းပြန်မူပိုင်ခွင့်") ဖြင့် ဖုံးအုပ်ထားသည်။

xswitcher ကုဒ်ကို C ၏ အနည်းငယ်မျှသာ ပါဝင်မှုဖြင့် golang ဖြင့် ရေးသားထားသည်။ ဤချဉ်းကပ်မှုသည် အားထုတ်မှု အနည်းဆုံး ပမာဏ (ယခုအချိန်အထိ ရှိနေသည်) ဟု ယူဆပါသည်။ cgo ကို အသုံးပြု၍ ပျောက်ဆုံးနေသည့်အရာများကို ချိတ်ဆက်နိုင်စွမ်းကို ထိန်းသိမ်းထားစဉ်။

စာသားတွင် ၎င်းကို မည်သည့်နေရာမှ ချေးယူခဲ့ကြောင်းနှင့် အကြောင်းရင်းအပေါ် မှတ်ချက်များ ပါရှိသည်။ ဘာဖြစ်လို့လဲဆိုတော့ xneur ကုဒ်က "ငါ့ကိုမလှုံ့ဆော်ခဲ့ဘူး"၊ အဲဒါကို အစမှတ်အဖြစ် ယူခဲ့တယ်။ loloswitcher.

"/dev/input/" ကို အသုံးပြုခြင်းတွင် ၎င်း၏ အားသာချက်များ (နှိပ်ထားသော အလိုအလျောက်ပြန်လုပ်သောကီး အပါအဝင် အရာအားလုံးကို မြင်နိုင်သည်) နှင့် အားနည်းချက်များ။ အားနည်းချက်များမှာ-

  • အလိုအလျောက်ပြန်လုပ်ခြင်း (ကုဒ် “2” ပါသော ဖြစ်ရပ်များ) သည် x နှင့် ထပ်ခါတလဲလဲ ဆက်စပ်မှုမရှိပါ။
  • X11 အင်တာဖေ့စ်များမှတဆင့် ထည့်သွင်းခြင်းကို မမြင်နိုင် (ဥပမာ၊ ဤသည်မှာ VNC အလုပ်လုပ်ပုံဖြစ်သည်)။
  • Root လိုပါတယ်။

အခြားတစ်ဖက်တွင်၊ "XSelectExtensionEvent()" မှတစ်ဆင့် X ဖြစ်ရပ်များကို စာရင်းသွင်းနိုင်သည်။ ဝင်ရောက်ကြည့်ရှုနိုင်ပါတယ်။ xinput ကုဒ်. ဒီလိုမျိုး မတွေ့ရတော့ဘဲ၊ ကြမ်းတမ်းတဲ့ အကောင်အထည်ဖော်မှုက C ကုဒ်လိုင်းတစ်ရာကို ချက်ချင်းယူသွားတယ်။ လောလောဆယ် ဘေးဖယ်ထားလိုက်ပါ။

'ပြောင်းပြန်' အထွက်ကို လက်ရှိတွင် အတုအယောင်ကီးဘုတ်ကို လှည့်ခြင်းဖြင့် ပြုလုပ်ထားသည်။ keybd_event ၏ရေးသားသူကိုကျေးဇူးတင်သော်လည်း abstraction သည်အဆင့်မြင့်လွန်းပြီးနောက်ထပ်ပြန်လုပ်ရမည်ဖြစ်ပါသည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်သည် 3rd အတန်းကိုရွေးချယ်ရန်ညာဘက် Win key ကိုအသုံးပြုသည်။ ဝဲဝင်းကိုသာ ပြန်ပို့သည်။

လူသိများသော Bugs

  • "ပေါင်းစပ်" ထည့်သွင်းမှုနှင့်ပတ်သက်၍ ကျွန်ုပ်တို့ ဘာမှမသိပါ (ဥပမာ- ½)။ လောလောဆယ် မလိုအပ်ပါဘူး။
  • ကျွန်ုပ်တို့သည် မှန်ကန်သော Win ကို မှားယွင်းစွာ ကစားနေပါသည်။ ငါ့ကိစ္စတွင်၊ ၎င်းသည်အလေးပေးမှုကိုချိုးဖျက်သည်။
  • ရှင်းရှင်းလင်းလင်း ထည့်သွင်း ပိုင်းခြားခြင်း မရှိပါ။ ယင်းအစား၊ လုပ်ဆောင်ချက်များစွာရှိပါသည်- Compare(), CtrlSequence(), RepeatSequence(), SpaceSequence()။ Спасибо nsmcan သင့်စောင့်ရှောက်မှုအတွက်- ၎င်းကို ကုဒ်နှင့် ဤနေရာတွင် ပြင်ထားသည်။ အချို့သောဖြစ်နိုင်ခြေတစ်ခုဖြင့်၊ အစားထိုးသည့်အခါတွင် bug များကိုဖမ်းနိုင်သည်။
    ဤအချိန်တွင် ကျွန်ုပ်သည် "မည်ကဲ့သို့လုပ်ရမည်" ကို မသိသည့်အပြင် အကြံပြုချက်များကို ကြိုဆိုပါသည်။
  • (ဘုရားရေ) ချန်နယ်များကို အပြိုင်အဆိုင်အသုံးပြုခြင်း (ကီးဘုတ်ဖြစ်ရပ်များ၊ ကြွက်ဖြစ်ရပ်များ)။

ကောက်ချက်

ကုဒ်သည် အရိုးရှင်းဆုံး လုပ်ထုံးလုပ်နည်းဖြစ်သည်။ ငါ့လို ငတုံး။ ဒါကြောင့် နည်းပညာရှင်တိုင်းနီးပါး သူလိုချင်တာကို ပြီးမြောက်နိုင်မယ်လို့ မျှော်လင့်ရင်း ကိုယ့်ကိုယ်ကိုယ် မြှောက်ပင့်လိုက်တယ်။ ဤကျေးဇူးကြောင့်၊ ဤထုတ်ကုန်သည် အပျော်တမ်းသက်သက်ကဲ့သို့ ပံ့ပိုးမှုမရှိဘဲ ပျက်စီးဆုံးရှုံးမည်မဟုတ်ပါ။

ကံကောင်းပါစေ!

source: www.habr.com

မှတ်ချက် Add