Аналоги нави Punto Switcher барои Linux: xswitcher

Анҷоми дастгирии xneur дар тӯли шаш моҳи охир ба ман каме ранҷ овард. (бо пайдоиши OpenSUSE 15.1 дар мизи кории ман: бо фаъол кардани xneur, тирезаҳо фокусро аз даст медиҳанд ва бо вуруди клавиатура дар вақташ хандаовар мепарад).

"Оҳ, лаънат, ман боз дар тарҳбандии нодуруст чоп карданро сар кардам" - дар кори ман ин бисёр вақт беадаб рух медиҳад. Ва он ҳеҷ чизи мусбӣ илова намекунад.

Аналоги нави Punto Switcher барои Linux: xswitcher
Дар баробари ин, ман (ҳамчун муҳандиси конструктор) метавонам он чизеро, ки ман мехоҳам, ба таври равшан баён кунам. Аммо ман мехостам (аввал аз Punto Switcher, ва сипас, ба шарофати Windows Vista, дар ниҳоят ба Linux, аз xneur гузарам) маҳз як чиз. Пас аз фаҳмидани он, ки партовҳо дар экран дар тарҳбандии нодуруст ҷойгиранд (ин одатан дар охири навиштани калимаи нав рух медиҳад), "Танаффус/Танаффус" -ро пахш кунед. Ва он чизеро, ки чоп кардаед, гиред.

Дар айни замон, маҳсулот таносуби оптималии (аз нуқтаи назари ман) функсия / мураккабӣ дорад. Вақти мубодила кардан аст.

TL.DR

Ҳама гуна тафсилоти техникӣ дертар хоҳанд буд, аз ин рӯ аввал - пайванд "ба ламс" барои бесабр.

Дар айни замон рафтори зерин сахт код карда шудааст:

  • "Таваққуф/Танаффус": калимаи охиринро ба ақиб бармегардонад, тарҳро дар равзанаи фаъол иваз мекунад (байни 0 ва 1) ва дубора занг мезанад.
  • "Ctrl-ро бе ҳеҷ чиз" чап: тарҳро дар равзанаи фаъол иваз мекунад (байни 0 ва 1).
  • "Шабакаи чап бе чизе": тарҳбандии №0-ро дар равзанаи фаъол фаъол мекунад.
  • "Шабакаи рост бидуни чизе": дар равзанаи фаъол тарҳбандии №1-ро фаъол мекунад.

Минбаъд ман нақша дорам, ки рафторро танзим кунам. Бе фикру мулоҳиза, он ҷолиб нест (ба ҳар ҳол ман бо он хуб ҳастам). Ман боварӣ дорам, ки дар Ҳабре фоизи кофии шунавандагон бо мушкилоти шабеҳ хоҳад буд.

БМТ Зеро дар версияи ҷорӣ, keylogger ба "/dev/input/" замима шудааст, xswitcher бояд бо ҳуқуқи реша оғоз карда шавад:

chown root:root xswitcher
chmod +xs xswitcher

Илтимос дар хотир гиред: Соҳиби файл бо suid бояд root бошад, зеро ҳар кӣ соҳиби он аст, дар оғоз ба суд табдил мешавад.

Параноидҳо (ман истисно нестам) метавонанд аз онҳо клон кунанд ГИТ ва дар сайт ҷамъ кунед. Ҳамин тавр:

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 дар як рӯз, ≈12 МБ дар RSS).

Дидани тафсилот

Акнун - тафсилот.

Тамоми анбор аслан ба лоиҳаи ҳайвоноти ман бахшида шуда буд ва ман барои оғози дигаре танбалам. Ҳамин тавр, ҳама чиз ҷамъ карда мешавад (танҳо дар ҷузвдонҳо) ва бо AGPL фаро гирифта шудааст ("патенти баръакс").

Рамзи xswitcher дар golang бо ҳадди ақали дохилкунии C навишта шудааст. Гумон меравад, ки ин равиш ба ҳадди ақали кӯшишҳо оварда мерасонад (то ҳол он дорад). Ҳангоми нигоҳ доштани қобилияти пайваст кардани он чизе, ки бо истифода аз cgo мавҷуд нест.

Матн шарҳҳоеро дар бар мегирад, ки он аз куҷо ва барои чӣ гирифта шудааст. Зеро рамзи xneur "ба ман илҳом надод", ман онро ҳамчун нуқтаи ибтидоӣ гирифтам loloswitcher.

Истифодаи "/dev/input/" ҳам бартариятҳои худро дорад (ҳама чиз намоён аст, аз ҷумла тугмаи такрории автоматии пахшшуда) ва камбудиҳо. Камбудиҳо инҳоянд:

  • Автотакрор (ҳодисаҳо бо рамзи "2") бо такрор бо x алоқаманд нестанд.
  • Вуруд тавассути интерфейсҳои X11 намоён нест (масалан, VNC чунин кор мекунад).
  • Реша лозим аст.

Аз тарафи дигар, тавассути "XSelectExtensionEvent()" ба рӯйдодҳои X обуна шудан мумкин аст. Шумо метавонед тамошо кунед рамзи xinput. Ман барои рафтан чизе ба ин монанд наёфтам ва татбиқи ноҳамвор фавран сад сатри рамзи C-ро гирифт. Ҳоло онро як сӯ гузоред.

Дар айни замон баромади "акс" тавассути печонидани клавиатураи виртуалӣ анҷом дода мешавад. Ташаккур ба муаллифи keybd_event, аммо абстраксия дар он ҷо хеле баланд аст ва бояд минбаъд дубора такмил дода шавад. Масалан, ман калиди Winро барои интихоби сатри 3-юм истифода мебарам. Ва танҳо Win чапи бозгашт интиқол дода мешавад.

Хатогиҳои маълум

  • Мо дар бораи вуруди "композитӣ" чизе намедонем (масалан: ½). Он ҳоло лозим нест.
  • Мо ғалабаи дурустро нодуруст бозӣ карда истодаем. Дар ҳолати ман, он таъкидро вайрон мекунад.
  • Таҳлили дақиқи вуруд вуҷуд надорад. Ба ҷои ин, якчанд функсия вуҷуд дорад: Муқоиса (), CtrlSequence (), RepeatSequence (), SpaceSequence (). Спасибо нсмкан барои нигоҳубини шумо: онро дар код ва дар ин ҷо ислоҳ кард. Бо эҳтимолияти муайян, шумо метавонед хатогиҳоро ҳангоми иваз кардан гиред.
    Дар ин лаҳза ман намедонам "чӣ тавр" ва ҳама гуна пешниҳодҳоро қабул мекунам.
  • (Эй Худо) истифодаи рақобатпазири каналҳо (keyboardEvents, miceEvents).

хулоса

Рамз соддатарин расмист. Ва мисли ман беақл. Ҳамин тавр, ман бо умеде, ки қариб ҳар як техник метавонад он чизеро, ки мехоҳад, анҷом диҳад, худамро хушҳол мекунам. Ва ба шарофати ин, ин маҳсулот бе дастгирӣ нобуд нахоҳад шуд, ба монанди аксари танҳо барои фароғат.

Барори кор

Манбаъ: will.com

Илова Эзоҳ