Menyelesaikan masalah dengan menukar menggunakan alt+shift dalam Linux, dalam aplikasi Electron

Hello rakan sekerja!

Saya ingin berkongsi penyelesaian saya kepada masalah yang ditunjukkan dalam tajuk. Saya mendapat inspirasi untuk menulis artikel ini oleh rakan sekerja brnovk, yang tidak malas dan menawarkan penyelesaian separa (untuk saya) untuk masalah itu. Saya membuat "tongkat" saya sendiri yang membantu saya. Saya berkongsi dengan anda.

Penerangan masalah

Saya menggunakan Ubuntu 18.04 untuk kerja dan baru-baru ini menyedari bahawa apabila menukar susun atur menggunakan alt+shift dalam aplikasi seperti Visual Studio Code, Skype, Slack dan lain-lain yang dicipta menggunakan Electron, masalah berikut berlaku: fokus dari medan input pergi ke atas panel tetingkap (menu). Atas sebab lain, saya berpindah ke Fedora + KDE dan menyedari bahawa masalah itu belum hilang. Semasa mencari penyelesaian, saya menemui artikel yang menarik Bagaimana untuk membaiki Skype sendiri. Terima kasih banyak kawan brnovk, yang bercakap secara terperinci tentang masalah itu dan berkongsi kaedahnya untuk menyelesaikannya. Tetapi kaedah yang ditunjukkan dalam artikel menyelesaikan masalah dengan hanya satu aplikasi, iaitu Skype. Bagi saya, ia juga penting untuk memahami Kod Visual Studio, kerana menulis mesej dengan menu lompat, walaupun menjengkelkan, tidak begitu banyak jika anda terlibat dalam pembangunan. Selain itu, rakan sekerja mencadangkan penyelesaian di mana menu aplikasi hilang sepenuhnya, dan saya tidak mahu kehilangan menu dalam Kod VS.

Cuba memahami apa yang salah

Jadi, saya memutuskan untuk mengambil masa untuk memikirkan apa yang berlaku. Sekarang saya akan menerangkan secara ringkas jalan yang saya ambil, mungkin seseorang yang lebih arif dalam perkara ini akan membantu menjelaskan kesulitan yang saya hadapi.

Saya membuka Kod Visual Studio dan mula memukul kombinasi Alt+<%something%> yang berbeza untuk melihat cara aplikasi bertindak balas. Dalam hampir semua kes, semua kombinasi kecuali Alt+Shift berfungsi tanpa kehilangan fokus. Nampaknya seseorang sedang makan Shift yang ditekan, yang diikuti selepas menahan Alt, dan aplikasi itu menyangka bahawa saya menekan Alt, kemudian tidak menekan apa-apa, melepaskan Alt dan ia dengan gembira melemparkan fokus saya ke dalam menunya, yang kelihatan agak logik untuk ia.

Saya membuka tetapan untuk menukar reka letak papan kekunci (anda tahu, senarai panjang ini dengan kotak pilihan dan semua jenis tetapan untuk kekunci) dan menetapkannya untuk menukar reka letak menggunakan butang Alt, tanpa sebarang klik tambahan.

Menyelesaikan masalah dengan menukar menggunakan alt+shift dalam Linux, dalam aplikasi Electron

Selepas itu, Alt+Tab untuk menukar tetingkap berhenti berfungsi. Hanya Tab yang berfungsi, iaitu, seseorang "memakan" Alt saya sekali lagi. Tiada soalan yang tersisa tentang siapa "seseorang" ini, tetapi saya tidak tahu apa yang boleh dilakukan dengannya.

Tetapi kerana masalah itu harus diselesaikan entah bagaimana, maka penyelesaian muncul di fikiran:

  1. Dalam tetapan, lumpuhkan kekunci pintas untuk menukar susun atur papan kekunci (nyahtanda semua kotak semak dalam bahagian Tukar ke susun atur lain);
  2. Buat hotkey anda sendiri yang akan menukar susun atur untuk saya

Penerangan tentang penyelesaian

Mula-mula, mari pasang program yang membolehkan anda memberikan arahan kepada kekunci Xbindkeys. Malangnya, alatan standard tidak membenarkan saya mencipta hotkey untuk gabungan seperti Alt+Shift melalui antara muka yang cantik. Boleh dilakukan untuk Alt+S, Alt+1, Alt+shift+Y, dsb. dll., tetapi ini tidak sesuai untuk tugas kami.

sudo dnf install xbindkeysrc

Butiran lanjut mengenainya boleh didapati di ArchWiki
Seterusnya, kami akan mencipta fail tetapan sampel untuk program ini. Sampelnya agak pendek, dengan beberapa arahan, hanya perkara yang anda perlukan untuk memikirkan cara untuk bekerja dengannya:

xbindkeys -d > ~/.xbindkeysrc

Seperti yang anda lihat daripada contoh dalam fail, kami perlu menunjukkan hotkey yang kami mahu gunakan dan arahan yang harus dilaksanakan. Nampak simple.


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

Sebagai hotkey, anda boleh menggunakan tulisan yang boleh dibaca manusia atau menggunakan kod kunci. Ia berfungsi untuk saya hanya dengan kod, tetapi tiada siapa yang melarang anda untuk mencuba sedikit.

Untuk mendapatkan kod anda perlu menggunakan arahan:

xbindkeys -k

Tetingkap kecil "X" akan dibuka. Anda hanya perlu menekan kekunci apabila fokus pada tetingkap ini! Hanya dalam kes ini anda akan melihat sesuatu seperti ini di terminal:


[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

Dalam kes saya, kombinasi kekunci Alt+Shift kelihatan seperti ini:

m:0x8 + c:50

Sekarang kita perlu memastikan bahawa apabila anda mengklik pada gabungan ini, susun atur bertukar. Saya mendapati hanya satu arahan yang berfungsi untuk menentukan susun atur:


setxkbmap ru
setxkbmap us

Seperti yang anda lihat daripada contoh, ia hanya boleh mendayakan satu atau susun atur lain, jadi tiada apa yang terlintas di fikiran saya selain menulis skrip.


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

Sekarang, jika fail .xbindkeysrc dan layout.sh terletak dalam direktori yang sama, maka paparan akhir fail .xbindkeysrc kelihatan seperti ini:


# 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

Selepas itu kami menggunakan perubahan:


xbindkeys -p

Dan anda boleh menyemak. Jangan lupa untuk melumpuhkan sebarang pilihan untuk menukar reka letak dalam tetapan standard.

Jumlah

Rakan sekerja, saya berharap artikel ini dapat membantu seseorang dengan cepat menghilangkan masalah yang menjengkelkan. Secara peribadi, saya menghabiskan sepanjang hari saya untuk cuba memikirkan dan menyelesaikan masalah itu entah bagaimana, supaya saya tidak lagi terganggu olehnya semasa waktu bekerja. Saya menulis artikel ini untuk menjimatkan masa dan saraf seseorang. Ramai di antara anda menggunakan kaedah alternatif untuk menukar susun atur dan tidak memahami masalahnya. Saya secara peribadi suka menukar dengan Alt+Shift. Dan itulah cara saya mahu ia berfungsi. Jika anda berkongsi pendapat saya dan menghadapi masalah ini, artikel ini akan membantu anda.

Sumber: www.habr.com

Tambah komen