Memecahkan masalah dengan beralih menggunakan alt+shift di Linux, dalam aplikasi Electron

Halo rekan-rekan!

Saya ingin berbagi solusi untuk masalah yang disebutkan di judul. Saya terinspirasi untuk menulis artikel ini oleh seorang kolega. brnovk, yang bersusah payah menawarkan solusi parsial (bagi saya) untuk masalah ini. Saya menciptakan "cheat" saya sendiri yang membantu saya. Saya membagikannya dengan Anda.

Deskripsi masalahnya

Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью Memperbaiki Skype dengan Tangan Anda SendiriTerima kasih banyak, kawan. brnovk, yang menjelaskan masalahnya secara detail dan membagikan solusinya. Namun, solusi yang dijelaskan dalam artikel tersebut hanya berfungsi dengan satu aplikasi, Skype. Memahami Visual Studio Code juga sangat penting bagi saya, karena meskipun pesan teks dengan menu yang melompat-lompat itu menjengkelkan, hal itu tidak terlalu buruk jika Anda sedang mengembangkan aplikasi. Selain itu, seorang kolega menyarankan solusi yang membuat menu aplikasi menghilang sepenuhnya, dan saya sungguh tidak ingin kehilangan menu tersebut di VS Code.

Saya mencoba memahami apa yang sedang terjadi.

Jadi, saya memutuskan untuk meluangkan waktu untuk mencari tahu apa yang sedang terjadi. Saya akan menjelaskan secara singkat jalan yang saya tempuh; mungkin seseorang yang lebih berpengetahuan di bidang ini dapat membantu menjelaskan kesulitan yang saya hadapi.

Saya membuka Visual Studio Code dan mulai menekan berbagai kombinasi Alt+<%something%>, mengamati respons aplikasi. Hampir di setiap kasus, semua kombinasi kecuali Alt+Shift berfungsi tanpa kehilangan fokus. Rasanya seperti ada yang memakan tombol Shift yang saya tekan setelah menahan Alt, dan aplikasi mengira saya telah menekan Alt, lalu tidak menekan apa pun, melepaskan Alt, dan dengan senang hati mengalihkan fokus saya ke menunya, yang terasa sangat logis baginya.

Saya membuka pengaturan peralihan tata letak papan ketik (Anda tahu, daftar panjang berisi kotak centang dan segala jenis pengaturan tombol) dan mengatur peralihan tata letak ke tombol Alt, tanpa menekan tombol tambahan apa pun.

Memecahkan masalah dengan beralih menggunakan alt+shift di Linux, dalam aplikasi Electron

Setelah itu, Alt+Tab berhenti berfungsi untuk berpindah jendela. Hanya Tab yang berfungsi, artinya seseorang "memakan" tombol Alt saya lagi. Tak ada lagi pertanyaan siapa "seseorang" ini, tetapi saya tidak tahu harus berbuat apa.

Namun karena masalah tersebut perlu dipecahkan dengan cara tertentu, maka muncullah solusinya:

  1. Pada pengaturan, nonaktifkan tombol pintas untuk mengganti tata letak keyboard (hapus centang semua kotak centang di bagian Beralih ke tata letak lain);
  2. Buat hotkey saya sendiri yang akan mengubah tata letak saya

Deskripsi solusi

Pertama, mari kita pasang Xbindkeys, sebuah program yang memungkinkan Anda menetapkan perintah ke tombol. Sayangnya, alat bawaan tidak memungkinkan saya membuat hotkey untuk kombinasi seperti Alt+Shift menggunakan antarmukanya yang menarik. Anda bisa membuatnya untuk Alt+S, Alt+1, Alt+Shift+Y, dan seterusnya, tetapi itu tidak cocok untuk tujuan kita.

sudo dnf install xbindkeysrc

Detail lebih lanjut dapat ditemukan di Wiki Agung
Selanjutnya, mari kita buat contoh berkas pengaturan untuk program ini. Berkasnya cukup singkat, hanya berisi beberapa perintah, yang Anda butuhkan untuk memahami cara menggunakannya:

xbindkeys -d > ~/.xbindkeysrc

Seperti yang Anda lihat dari contoh di berkas, kita perlu menentukan hotkey yang ingin kita gunakan dan perintah yang harus dijalankan. Kelihatannya sederhana.


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

Anda bisa menggunakan ejaan yang mudah dipahami manusia atau kode tombol sebagai hotkey. Kode tombol adalah satu-satunya yang berhasil bagi saya, tetapi silakan bereksperimen sedikit.

Untuk mendapatkan kode, Anda perlu menggunakan perintah:

xbindkeys -k

Jendela "X" kecil akan terbuka. Anda hanya perlu menekan tombol saat jendela ini difokuskan! Setelah itu, 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 kasus saya, kombinasi tombol Alt+Shift terlihat seperti ini:

m:0x8 + c:50

Sekarang saya perlu membuatnya agar menekan kombinasi ini benar-benar mengubah tata letak keyboard. Saya hanya menemukan satu perintah yang berfungsi untuk menentukan tata letak:


setxkbmap ru
setxkbmap us

Seperti yang bisa Anda lihat dari contoh, ia hanya dapat mengaktifkan satu atau beberapa tata letak, jadi tidak ada yang terlintas di pikiran 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 file .xbindkeysrc dan layout.sh berada di direktori yang sama, tampilan akhir file .xbindkeysrc akan terlihat 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

Setelah ini kami terapkan perubahannya:


xbindkeys -p

Dan Anda bisa memeriksanya. Jangan lupa untuk menonaktifkan opsi pengalihan tata letak apa pun di pengaturan default.

Total

Rekan-rekan, saya harap artikel ini dapat membantu seseorang dengan cepat mengatasi masalah yang mengganggu. Secara pribadi, saya menghabiskan seluruh akhir pekan untuk mencoba mencari tahu dan menyelesaikan masalah tersebut agar tidak perlu mengkhawatirkannya lagi selama jam kerja. Saya menulis artikel ini untuk menghemat waktu dan mengurangi rasa frustrasi seseorang. Banyak dari Anda menggunakan cara alternatif untuk mengganti tata letak keyboard dan tidak memahami masalahnya. Secara pribadi, saya lebih suka Alt+Shift, dan saya ingin cara tersebut berfungsi dengan baik. Jika Anda memiliki pendapat yang sama dan mengalami masalah ini, artikel ini akan membantu Anda.

Sumber: www.habr.com

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster