同事們大家好!
我想分享我對標題中指出的問題的解決方案。 寫這篇文章的靈感來自於一位同事
問題描述
我在工作中使用 Ubuntu 18.04,最近注意到,在 Visual Studio Code、Skype、Slack 等使用 Electron 創建的應用程式中使用 alt+shift 切換佈局時,會出現以下問題:輸入欄位的焦點移至頂部視窗面板(菜單)。 由於其他原因,我轉向了 Fedora + KDE,並意識到問題並沒有消失。 在尋找解決方案時,我發現了一篇很棒的文章
試著了解出了什麼問題
因此,我決定花點時間弄清楚到底發生了什麼事。 現在我簡單描述我所走的路,也許這方面更了解的人可以幫助解釋我遇到的困難。
我打開 Visual Studio Code 並開始按不同的 Alt+<%something%> 組合來查看應用程式的回應情況。 在幾乎所有情況下,除 Alt+Shift 之外的所有組合都可以正常工作而不會失去焦點。 似乎有人正在吃按下的Shift,然後按住Alt,應用程式認為我按下了Alt,然後沒有按任何東西,釋放了Alt,它很高興地將我的注意力轉移到它的菜單中,這似乎很合乎邏輯它。
我打開了用於切換鍵盤佈局的設定(您知道,這個長列表包含複選框和各種按鍵設定),並將其設置為使用 Alt 按鈕切換佈局,無需任何額外的單擊。
此後,切換視窗的 Alt+Tab 不再運作。 只有Tab起作用了,就是有人又「吃了」我的Alt。 毫無疑問這個「某人」是誰,但我不知道可以對他做什麼。
但既然問題必須以某種方式解決,那麼我想到了一個解決方案:
- 在設定中,停用切換鍵盤佈局的熱鍵(取消選取「切換到另一個佈局」部分中的所有核取方塊);
- 創建您自己的熱鍵來為我切換佈局
解決方案描述
首先,讓我們安裝一個程序,允許您將命令指派給 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