Престанак подршке за кнеур изазвао ми је одређену патњу у протеклих шест месеци. (са појавом ОпенСУСЕ 15.1 на мојим десктопима: са омогућеним кнеур, прозори губе фокус и трепере смешно у времену са уносом са тастатуре).
„Ох, дођавола, поново сам почео да куцам у погрешном распореду“ - у мом раду се то дешава непристојно често. И не додаје ништа позитивно.
Истовремено, ја (као инжењер дизајна) могу сасвим јасно да формулишем шта желим. Али желео сам (прво са Пунто Свитцхер-а, а затим, захваљујући Виндовс Висти, коначно преласка на Линук, са кнеур-а) тачно једну ствар. Пошто сте схватили да је смеће на екрану у погрешном распореду (то се обично дешава на крају куцања нове речи), згазите на „Пауза/Прекид“. И узмите оно што сте одштампали.
У овом тренутку, производ има оптималан (са моје тачке гледишта) однос функционалност/сложеност. Време је да поделимо.
ТЛ.ДР
Касније ће бити разних техничких детаља, па прво - линк "додирнути" за нестрпљиве.
Тренутно је следеће понашање чврсто кодирано:
„Пауза/прекид“: враћа последњу реч уназад, мења распоред у активном прозору (између 0 и 1) и поново бира.
„Лефт Цтрл без ичега“: мења изглед у активном прозору (између 0 и 1).
„Лефт Схифт без ичега“: укључује изглед бр. 0 у активном прозору.
„Десни Схифт без ичега“: укључује изглед бр. 1 у активном прозору.
Од сада планирам да прилагодим понашање. Без повратних информација, није интересантно (ионако сам у реду). Верујем да ће на Хабреу бити довољан проценат публике са сличним проблемима.
НБ Јер у тренутној верзији, кеилоггер је везан за "/дев/инпут/", ксвитцхер мора бити покренут са роот правима:
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
Додајте аутостарт по укусу (у зависности од ДЕ).
Ради, „не тражи кашу“ (≈30 секунди ЦПУ дневно, ≈12 МБ у РСС-у).
Детаљи
Сада - детаљи.
Читаво спремиште је првобитно било посвећено мом пројекту кућног љубимца, а ја сам превише лењ да започнем још један. Дакле, све је нагомилано (само у фасциклама) и покривено АГПЛ-ом („обрнути патент“).
Код ксвитцхер-а је написан у голангу, са минималним укључивањем Ц. Претпоставља се да ће овај приступ резултирати са најмањим напором (до сада). Уз задржавање могућности повезивања онога што недостаје помоћу цго.
Текст садржи коментаре одакле је и зашто позајмљен. Јер кнеур код „није ме инспирисао“, узео сам га као полазну тачку лолосвитцхер.
Коришћење „/дев/инпут/“ има своје предности (све је видљиво, укључујући притиснут тастер за аутоматско понављање) и недостатке. Недостаци су:
Аутоматско понављање (догађаји са кодом „2“) не корелира са понављањем са к.
Улаз преко Кс11 интерфејса није видљив (овако ВНЦ функционише, на пример).
Треба роот.
С друге стране, могуће је претплатити се на Кс догађаје преко „КССелецтЕктенсионЕвент()“. Можеш да завириш кинпут цоде. Нисам нашао ништа слично овоме за почетак, а груба имплементација је одмах заузела стотину редова Ц кода. Остави то на страну за сада.
„Обрнути“ излаз се тренутно врши увртањем виртуелне тастатуре. Хвала аутору кеибд_евент-а, али апстракција је на сувише високом нивоу и мораће да се преправи даље. На пример, користим десни тастер Вин да бих изабрао 3. ред. И само леви Вин се преноси назад.
Познате грешке
Не знамо ништа о „композитном“ уносу (пример: ½). Тренутно није потребно.
Погрешно играмо праву победу. У мом случају, то разбија нагласак.
Нема јасне анализе улаза. Уместо тога, постоји неколико функција: Цомпаре(), ЦтрлСекуенце(), РепеатСекуенце(), СпацеСекуенце(). захвалити нсмцан за вашу бригу: исправио у коду и овде. Са одређеном вероватноћом, можете ухватити грешке приликом замене. У овом тренутку не знам „како да“ и добродошао бих сваки предлог.
(О Боже) конкурентско коришћење канала (кеибоардЕвентс, мицеЕвентс).
Закључак
Код је најједноставнији процедурални. И глуп као ја. Дакле, ласкам себи надом да ће скоро сваки техничар успети да заврши оно што жели. И захваљујући томе, овај производ неће пропасти без подршке, као већина само-забавних.