حل مشكلة التبديل عن طريق alt + shift في Linux ، في التطبيقات على Electron

مرحبا زملائي!

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

وصف المشكلة

كنت أستخدم Ubuntu 18.04 للعمل وقد لاحظت مؤخرًا أنه عند تبديل التنسيق باستخدام alt + shift في تطبيقات مثل Visual Studio Code و Skype و Slack وغيرها من التطبيقات التي تم إنشاؤها باستخدام Electron ، تظهر المشكلة التالية: التركيز من حقل الإدخال يذهب إلى الشريط العلوي من النافذة (القائمة). لأسباب أخرى ، انتقلت إلى Fedora + KDE وأدركت أن المشكلة لم تختف. بحثًا عن حل ، وجدت مقالًا رائعًا افعل ذلك بنفسك إصلاح Skype. شكرا جزيلا الرفيق برنوفكأنه تحدث بالتفصيل عن المشكلة وشارك طريقة حلها. لكن الطريقة المشار إليها في المقال أغلقت المشكلة بتطبيق واحد فقط ، وهو Skype. كان من المهم أيضًا بالنسبة لي التعامل مع Visual Studio Code ، لأن كتابة الرسائل بقائمة القفز أمر مزعج ، ولكن ليس كثيرًا إذا كنت تقوم بالتطوير. بالإضافة إلى ذلك ، اقترح أحد الزملاء حلاً تختفي فيه قائمة التطبيق تمامًا ، ولا أرغب حقًا في فقد القائمة في VS Code.

حاولت معرفة ما يحدث

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

فتحت Visual Studio Code وبدأت في الضغط على مجموعات مختلفة من Alt + <٪ something٪> ، للنظر في كيفية تفاعل التطبيق. في جميع الحالات تقريبًا ، تم عمل جميع التركيبات ، باستثناء Alt + Shift ، دون فقدان التركيز. يبدو أن شخصًا ما كان يأكل Shift المضغوط ، والذي تبعه بعد الضغط مع الاستمرار على Alt ، ويعتقد التطبيق أنني ضغطت على Alt ، ثم لم أضغط على أي شيء ، وأطلق Alt وألقى بفرح بتركيزي في قائمته ، الأمر الذي بدا منطقيًا تمامًا له.

فتحت إعدادات تبديل تخطيط لوحة المفاتيح (كما تعلم ، هذه القائمة الطويلة مع مربعات الاختيار وجميع أنواع الإعدادات للمفاتيح) وقمت بضبط تخطيط لوحة المفاتيح على التبديل إلى زر Alt ، دون أي نقرات إضافية.

حل مشكلة التبديل عن طريق alt + shift في Linux ، في التطبيقات على Electron

بعد ذلك توقف Alt + Tab عن العمل لتبديل النوافذ. عمل Tab فقط ، أي أن شخصًا ما "أكل" البديل الخاص بي مرة أخرى. لم يعد هذا "الشخص" أسئلة ، لكن ليس لدي أي فكرة عما يمكن فعله به.

ولكن نظرًا لأنه كان لابد من حل المشكلة بطريقة ما على الأقل ، فقد جاء الحل إلى الذهن:

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

وصف الحل

أولاً ، دعنا نثبِّت برنامجًا يسمح لك بتعيين أوامر إلى Xbindkeys. لسوء الحظ ، لم تسمح لي الأدوات العادية بإنشاء مفتاح اختصار لمزيج من نوع Alt + Shift من خلال واجهة جميلة. يمكن إجراؤه مع Alt + S و Alt + 1 و Alt + shift + Y وما إلى ذلك. إلخ ، ولكن هذا لا يناسب مهمتنا.

sudo dnf install xbindkeysrc

المزيد من التفاصيل حول هذا الموضوع قيد التشغيل أرشويكي
بعد ذلك ، دعنا ننشئ نموذج ملف إعدادات للبرنامج. العينة قصيرة جدًا ، مع بعض الأوامر فقط ما تحتاجه لمعرفة كيفية التعامل معها:

xbindkeys -d > ~/.xbindkeysrc

كما ترى من المثال الموجود في الملف ، نحتاج إلى تحديد مفتاح الاختصار الذي نريد استخدامه والأمر الذي يجب تنفيذه. تبدو بسيطة.


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

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

للحصول على الرموز ، تحتاج إلى استخدام الأمر:

xbindkeys -k

ستفتح نافذة "X" صغيرة. ما عليك سوى الضغط على المفاتيح عند التركيز على هذه النافذة! فقط في هذه الحالة سترى شيئًا كهذا في الجهاز:


[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x4 + c:39
    Control + s

في حالتي ، تبدو تركيبة مفاتيح Alt + Shift كما يلي:

m:0x8 + c:50

أنت الآن بحاجة إلى التأكد من أنه عند النقر فوق هذه المجموعة ، يتم تبديل التخطيط. لقد وجدت أمرًا واحدًا يعمل فقط لتحديد التخطيط:


setxkbmap ru
setxkbmap us

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


vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
        then `/usr/bin/setxkbmap us`
        else `/usr/bin/setxkbmap ru`
fi

الآن إذا كانت ملفات .xbindkeysrc و layout.sh موجودة في نفس الدليل ، فسيبدو الشكل النهائي لملف .xbindkeysrc كما يلي:


# Examples of commands:

"xbindkeys_show"
  control+shift + q

# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

# specify a mouse button
"xterm"
  control + b:2
#А вот то, что добавил я
"./layout.sh"
  m:0x8 + c:50

بعد ذلك ، قم بتطبيق التغييرات:


xbindkeys -p

ويمكنك التحقق. لا تنس تعطيل أي خيارات لتبديل التخطيطات في الإعدادات القياسية.

مجموع

زملائي ، آمل أن تساعد هذه المقالة شخصًا ما على التخلص بسرعة من مشكلة مزعجة. أنا شخصياً أمضيت إجازتي بأكملها في محاولة لمعرفة المشكلة وحلها بطريقة ما ، حتى لا أشتت انتباهي بعد الآن بسبب هذا خلال ساعات العمل. لقد كتبت هذا المقال من أجل توفير الوقت والأعصاب على شخص ما. يستخدم الكثير منكم طريقة بديلة لتبديل التخطيطات ولا يفهمون ماهية المشكلة. أنا شخصياً أحب التبديل مع Alt + Shift. وأريده أن يعمل بهذه الطريقة. إذا كنت تشارك رأيي وتواجه هذه المشكلة ، فيجب أن تساعدك هذه المقالة.

المصدر: www.habr.com

إضافة تعليق