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

Halo rekan-rekan!

Saya ingin berbagi solusi saya untuk masalah yang disebutkan dalam judul. Saya terinspirasi untuk menulis artikel ini oleh seorang rekan brnovk, yang tidak malas dan menawarkan solusi parsial (bagi saya) untuk masalah tersebut. Saya membuat β€œkruk” sendiri yang membantu saya. Saya berbagi dengan Anda.

Deskripsi masalahnya

Saya menggunakan Ubuntu 18.04 untuk bekerja dan baru-baru ini memperhatikan bahwa ketika berpindah tata letak menggunakan alt+shift dalam aplikasi seperti Visual Studio Code, Skype, Slack dan lainnya yang dibuat menggunakan Electron, masalah berikut terjadi: fokus dari bidang input mengarah ke atas panel jendela (menu). Karena alasan lain, saya pindah ke Fedora + KDE dan menyadari bahwa masalahnya belum hilang. Saat mencari solusi, saya menemukan artikel yang bagus Cara memperbaiki Skype sendiri. Terima kasih banyak kawan brnovk, yang berbicara secara rinci tentang masalah tersebut dan membagikan metode penyelesaiannya. Namun metode yang disebutkan dalam artikel tersebut menyelesaikan masalah hanya dengan satu aplikasi, yaitu Skype. Bagi saya, memahami Visual Studio Code juga penting karena menulis pesan dengan menu lompat, meskipun mengganggu, tidak terlalu mengganggu jika Anda terlibat dalam pengembangan. Selain itu, seorang kolega menyarankan solusi di mana menu aplikasi hilang sepenuhnya, dan saya tidak ingin kehilangan menu di VS Code.

Mencoba memahami apa yang salah

Jadi, saya memutuskan untuk meluangkan waktu untuk mencari tahu apa yang sedang terjadi. Sekarang saya akan menjelaskan secara singkat jalan yang saya ambil, mungkin seseorang yang lebih ahli dalam hal ini dapat membantu menjelaskan kesulitan yang saya temui.

Saya membuka Visual Studio Code dan mulai menekan kombinasi Alt+<%something%> yang berbeda untuk melihat bagaimana respons aplikasi. Di hampir semua kasus, semua kombinasi kecuali Alt+Shift berfungsi tanpa kehilangan fokus. Sepertinya seseorang sedang memakan Shift yang ditekan, yang diikuti setelah menahan Alt, dan aplikasi berpikir bahwa saya menekan Alt, lalu tidak menekan apa pun, melepaskan Alt dan dengan senang hati mengalihkan fokus saya ke menunya, yang tampaknya cukup logis untuk dia.

Saya membuka pengaturan untuk berpindah tata letak keyboard (Anda tahu, daftar panjang ini dengan kotak centang dan segala macam pengaturan untuk tombol) dan mengaturnya untuk berpindah tata letak menggunakan tombol Alt, tanpa klik tambahan.

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

Setelah itu, Alt+Tab untuk berpindah windows berhenti berfungsi. Hanya Tab yang berfungsi, artinya seseorang β€œmemakan” Alt saya lagi. Tidak ada pertanyaan tersisa tentang siapa β€œseseorang” ini, tapi saya tidak tahu apa yang bisa dilakukan dengannya.

Namun karena masalahnya harus diselesaikan, maka muncullah solusi:

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

Deskripsi solusi

Pertama, mari kita instal program yang memungkinkan Anda menetapkan perintah ke tombol Xbindkeys. Sayangnya, alat standar tidak memungkinkan saya membuat hotkey untuk kombinasi seperti Alt+Shift melalui antarmuka yang indah. Dapat dilakukan untuk Alt+S, Alt+1, Alt+shift+Y, dll. dll., tetapi ini tidak cocok untuk tugas kita.

sudo dnf install xbindkeysrc

Rincian lebih lanjut tentangnya tersedia di Wiki Agung
Selanjutnya, kita akan membuat contoh file pengaturan untuk program tersebut. Contohnya cukup singkat, dengan beberapa perintah, yang Anda perlukan untuk mengetahui cara menggunakannya:

xbindkeys -d > ~/.xbindkeysrc

Seperti yang bisa Anda lihat dari contoh di file, kita perlu menunjukkan hotkey yang ingin kita gunakan dan perintah yang harus dijalankan. Terlihat sederhana.


# 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 dapat menggunakan tulisan yang dapat dibaca manusia atau menggunakan kode kunci. Ini hanya berfungsi untuk saya dengan kode, tetapi tidak ada yang melarang Anda bereksperimen sedikit.

Untuk mendapatkan kode, Anda perlu menggunakan perintah:

xbindkeys -k

Jendela β€œX” kecil akan terbuka. Anda hanya perlu menekan tombol saat fokus berada pada jendela ini! Hanya dalam kasus 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 kasus saya, kombinasi tombol Alt+Shift terlihat seperti ini:

m:0x8 + c:50

Sekarang kita perlu memastikan bahwa ketika Anda mengklik kombinasi ini, tata letaknya berubah. Saya hanya menemukan satu perintah yang berfungsi untuk menentukan tata letak:


setxkbmap ru
setxkbmap us

Seperti yang Anda lihat dari contoh, ini hanya dapat mengaktifkan satu atau beberapa tata letak, jadi tidak ada yang terlintas dalam 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

Nah, jika file .xbindkeysrc dan layout.sh berada pada direktori yang sama, maka tampilan akhir dari 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 itu kami menerapkan perubahan:


xbindkeys -p

Dan Anda dapat memeriksanya. Jangan lupa untuk menonaktifkan opsi apa pun untuk berpindah tata letak di pengaturan standar.

Total

Rekan-rekan, semoga artikel ini dapat membantu seseorang dengan cepat menghilangkan masalah yang mengganggu. Secara pribadi, saya menghabiskan seluruh hari libur saya untuk mencoba mencari tahu dan memecahkan masalah tersebut, sehingga saya tidak lagi terganggu oleh masalah tersebut selama jam kerja. Saya menulis artikel ini untuk menghemat waktu dan saraf seseorang. Banyak dari Anda menggunakan metode alternatif untuk berpindah tata letak dan tidak memahami apa masalahnya. Saya pribadi suka beralih dengan Alt+Shift. Dan itulah cara saya ingin ini berhasil. Jika Anda sependapat dengan saya dan menghadapi masalah ini, artikel ini akan membantu Anda.

Sumber: www.habr.com

Tambah komentar