جديد Punto Switcher لينكس: xswitcher

تسبب إيقاف دعم xneur في بعض المعاناة على مدار الأشهر الستة الماضية (مع ظهور OpenSUSE 15.1 على أجهزة سطح المكتب: عند تشغيل xneur ، يفقد Windows التركيز ويومض بشكل مرح في الوقت المناسب مع إدخال لوحة المفاتيح) .

"آه ، اللعنة ، لقد بدأت بالكتابة مرة أخرى في التخطيط الخاطئ" - إنه فاحش في عملي كثيرًا. ولا تضيف إيجابية.


في نفس الوقت ، يمكنني (كمهندس تصميم) أن أعبر بوضوح عما أريد. وأردت (أولاً من Punto Switcher ، ثم بفضل Windows Vista ، وأخيرًا إعادة الزرع على Linux ، من xneur) واحدًا بالضبط. إدراك أن القمامة على الشاشة ليست في هذا التخطيط (يحدث هذا عادة في نهاية مجموعة كلمات جديدة) ، ستومب على "إيقاف مؤقت / استراحة". واحصل على ما طبعته.

في الوقت الحالي ، يتمتع المنتج بنسبة تعقيد / تعقيد مثالية (من وجهة نظري). حان الوقت للمشاركة.

TL.DR


ستستمر جميع أنواع التفاصيل الفنية ، لذا أولاً - رابط "اللمس" للصبر.

السلوك التالي مشفر حاليًا:

  • "إيقاف مؤقت / فاصل": مسافة للخلف الكلمة الأخيرة ، وتبديل التخطيط في النافذة النشطة (بين 0 و 1) والكتابة مرة أخرى.
  • Ltr Ctrl بدون أي شيء: للتبديل بين التنسيق في النافذة النشطة (بين 0 و 1).
  • "إزاحة لليسار بدون أي شيء": يقوم بتشغيل التخطيط 0 في النافذة النشطة.
  • "Shift الأيمن بدون أي شيء": يقوم بتشغيل التخطيط رقم 1 في النافذة النشطة.

من الآن فصاعدا ، أخطط لتخصيص السلوك. بدون تعليقات ، ليس الأمر مثيرًا للاهتمام (أنا سعيد بذلك على أي حال). أعتقد أنه في حبري ستكون هناك نسبة كافية من الجمهور يعانون من مشاكل مماثلة.

ملحوظة منذ ذلك الحين في الإصدار الحالي ، يتم ثمل keylogger إلى "/ dev / input /" ، يجب تشغيل xswitcher بحقوق الجذر:

chown root:root xswitcher
chmod +xs xswitcher

يرجى ملاحظة: يجب أن يكون صاحب الملف مع suid الجذر ، مثل من هو المالك في حالة تعارض وسيشغل بدء التشغيل.

يمكن لجنون العظمة (أنا لست استثناء) أن استنساخ من الجهاز الهضمي والتجمع على الفور. مثل هذا:

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).

يعمل ، "لا تطلب العصيدة" (seconds30 ثانية وحدة المعالجة المركزية في اليوم ، ≈12 ميغابايت في RSS).

تفاصيل


الآن للحصول على التفاصيل.

تم تخصيص المستودع بأكمله في الأصل لمشروع الحيوانات الأليفة الخاص بي ، وبدء مجمع آخر كسول جدًا. لذا ، كل شيء مكدس (في مجلدات فقط) ومغطى بـ AGPL ("العكس بالعكس").

كود xswitcher مكتوب في golang ، مع حد أدنى من البداية C. يفترض أن هذا النهج سيبذل أقل جهد (حتى الآن). مع الحفاظ على القدرة على توصيل المفقودين عبر cgo.

تم وضع نص التعليق من حيث تم استعارته ولماذا. لان كود xneur "لم يلهمني" ، اتخذ loloswitcher كنقطة انطلاق .

استخدام "/ dev / input /" له مزاياه (يمكن رؤية كل شيء ، بما في ذلك المفتاح المضغوط مع التكرار التلقائي) ، والسلبيات. السلبيات هي:

  • لا يرتبط التكرار التلقائي (الأحداث التي لها الرمز "2") بالتكرار مع X.
  • لا يمكنك رؤية الإدخال من خلال واجهات X11 (على سبيل المثال ، يعمل VNC).
  • بحاجة إلى جذر.

بدلاً من ذلك ، يمكنك الاشتراك في أحداث X من خلال "XSelectExtensionEvent ()". يمكنك إلقاء نظرة خاطفة على رمز xinput . على سبيل المثال ، لم أجد شيئًا من هذا القبيل ، وأعطت مسودة التنفيذ مائة سطر من الرمز C أثناء التنقل. حتى الآن جانبا.

تم التوصل إلى استنتاج "العودة" حتى الآن عن طريق شد لوحة المفاتيح الافتراضية. بفضل المؤلف keybd_event ، ولكن هناك تجريد عالي المستوى للغاية وسيتعين إعادة بنائه. على سبيل المثال ، لدي مفتاح Win الصحيح ، ويحدد الصف الثالث. ويتم بث اليسار فقط مرة أخرى.

البق المعروفة


  • لا نعرف أي شيء عن الإدخال "المركب" (مثال: ½). ليس هناك حاجة الآن.
  • نقوم بإعادة إنتاج Win الصحيح بشكل غير صحيح. في حالتي ، يكسر ترتيب اللهجات.
  • لا يوجد تحليل واضح للمدخلات. بدلاً من ذلك ، هناك عدة وظائف: قارن () ، CtrlSequence () ، RepeatSequence () ، SpaceSequence (). شكرانسمكانللانتباه: ثابت في الكود هنا. مع احتمال معين ، يمكنك التقاط الأخطاء عند الاستبدال.
    في هذا المكان لا أعرف "كيف" وسأكون سعيدًا بأي اقتراحات.
  • (أوه ، رعب) الاستخدام التنافسي للقنوات (keyboardEvents ، miceEvents).

استنتاج


الرمز هو أبسط الإجراءات. وغبي مثلي. لذا ، أشعر بالراحة على أمل أن يتمكن أي تقني تقريبًا من إنهاء ما يريده. وهذا المنتج لن يختفي بدون دعم مثل معظم للتسلية فقط.

حظا طيبا وفقك الله

All Articles