Xin chào các đồng nghiệp!
Tôi muốn chia sẻ giải pháp của mình cho vấn đề được nêu trong tiêu đề. Tôi được truyền cảm hứng để viết bài này bởi một đồng nghiệp , người không lười biếng và đưa ra giải pháp một phần (cho tôi) cho vấn đề. Tôi đã tự làm một chiếc “nạng” giúp ích cho mình. Tôi đang chia sẻ với bạn.
Mô tả vấn đề
Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью . Cảm ơn đồng chí nhiều , người đã nói chi tiết về vấn đề và chia sẻ phương pháp giải quyết nó. Nhưng phương pháp được chỉ ra trong bài viết đã giải quyết được vấn đề chỉ với một ứng dụng duy nhất, đó là Skype. Đối với tôi, việc hiểu Visual Studio Code cũng rất quan trọng, bởi vì viết tin nhắn bằng menu nhảy, mặc dù gây khó chịu nhưng sẽ không quá nhiều nếu bạn tham gia vào quá trình phát triển. Ngoài ra, một đồng nghiệp đã đề xuất giải pháp trong đó menu ứng dụng biến mất hoàn toàn và tôi thực sự không muốn mất menu trong VS Code.
Đã cố gắng hiểu có chuyện gì
Vì vậy, tôi quyết định dành thời gian để tìm hiểu chuyện gì đang xảy ra. Bây giờ tôi sẽ mô tả ngắn gọn con đường tôi đã đi, có thể ai đó am hiểu hơn về vấn đề này sẽ giúp giải thích những khó khăn tôi gặp phải.
Tôi đã mở Visual Studio Code và bắt đầu nhấn các tổ hợp Alt+<%something%> khác nhau để xem ứng dụng phản hồi như thế nào. Trong hầu hết các trường hợp, tất cả các kết hợp ngoại trừ Alt+Shift đều hoạt động mà không làm mất tiêu điểm. Có vẻ như ai đó đang nhấn phím Shift, tiếp theo sau khi nhấn giữ Alt, và ứng dụng nghĩ rằng tôi nhấn Alt, sau đó không nhấn gì cả, thả Alt ra và nó vui vẻ ném sự tập trung của tôi vào menu của nó, điều này có vẻ khá hợp lý. Nó.
Tôi đã mở cài đặt để chuyển đổi bố cục bàn phím (bạn biết đấy, danh sách dài này có các hộp kiểm và tất cả các loại cài đặt cho phím) và đặt nó để chuyển bố cục bằng nút Alt mà không cần nhấp chuột thêm.

Sau đó, Alt+Tab để chuyển đổi cửa sổ ngừng hoạt động. Chỉ có Tab hoạt động, tức là có người lại “ăn” Alt của tôi. Không còn câu hỏi nào về “ai đó” này là ai, nhưng tôi không biết có thể làm gì với anh ta.
Nhưng vì vấn đề phải được giải quyết bằng cách nào đó nên trong đầu tôi nảy ra một giải pháp:
- Trong cài đặt, tắt phím nóng để chuyển bố cục bàn phím (bỏ chọn tất cả các hộp kiểm trong phần Chuyển sang bố cục khác);
- Tạo phím nóng của riêng bạn để chuyển đổi bố cục cho tôi
Mô tả giải pháp
Trước tiên, hãy cài đặt một chương trình cho phép bạn gán lệnh cho các phím Xbindkeys. Thật không may, các công cụ tiêu chuẩn không cho phép tôi tạo phím nóng cho tổ hợp như Alt+Shift thông qua giao diện đẹp. Có thể được thực hiện cho Alt+S, Alt+1, Alt+shift+Y, v.v. v.v., nhưng điều này không phù hợp với nhiệm vụ của chúng tôi.
sudo dnf install xbindkeysrc Thông tin chi tiết về nó có sẵn tại
Tiếp theo, chúng ta sẽ tạo một file cài đặt mẫu cho chương trình. Mẫu này khá ngắn, có một vài lệnh, đúng những gì bạn cần để tìm ra cách làm việc với nó:
xbindkeys -d > ~/.xbindkeysrcNhư bạn có thể thấy từ ví dụ trong tệp, chúng ta cần chỉ ra phím nóng mà chúng ta muốn sử dụng và lệnh sẽ được thực thi. Trông đơn giản.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Là một phím nóng, bạn có thể sử dụng chữ viết mà con người có thể đọc được hoặc sử dụng mã khóa. Đối với tôi nó chỉ hoạt động với mã, nhưng không ai cấm bạn thử nghiệm một chút.
Để lấy mã bạn cần sử dụng lệnh:
xbindkeys -kMột cửa sổ “X” nhỏ sẽ mở ra. Bạn chỉ cần nhấn phím khi tiêu điểm nằm ở cửa sổ này! Chỉ trong trường hợp này, bạn mới thấy một cái gì đó như thế này trong thiết bị đầu cuối:
[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
Trong trường hợp của tôi, tổ hợp phím Alt+Shift trông như thế này:
m:0x8 + c:50Bây giờ chúng ta cần đảm bảo rằng khi bạn nhấp vào tổ hợp này, bố cục sẽ chuyển đổi. Tôi chỉ tìm thấy một lệnh làm việc để chỉ định bố cục:
setxkbmap ru
setxkbmap us
Như bạn có thể thấy trong ví dụ, nó chỉ có thể kích hoạt bố cục này hoặc bố cục khác, vì vậy tôi không nghĩ ra điều gì khác ngoài việc viết một tập lệnh.
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
Bây giờ, nếu các tệp .xbindkeysrc và bố cục.sh nằm trong cùng một thư mục thì chế độ xem cuối cùng của tệp .xbindkeysrc sẽ trông như thế này:
# 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
Sau đó chúng tôi áp dụng các thay đổi:
xbindkeys -p
Và bạn có thể kiểm tra. Đừng quên tắt mọi tùy chọn chuyển đổi bố cục trong cài đặt tiêu chuẩn.
Tổng
Các đồng nghiệp, tôi hy vọng rằng bài viết này có thể giúp ai đó nhanh chóng thoát khỏi một vấn đề khó chịu. Cá nhân tôi đã dành cả ngày nghỉ của mình để cố gắng tìm ra và giải quyết vấn đề bằng cách nào đó, để không còn bị phân tâm trong giờ làm việc nữa. Tôi viết bài này để tiết kiệm thời gian và thần kinh cho ai đó. Nhiều bạn sử dụng phương pháp thay thế để chuyển đổi bố cục và không hiểu vấn đề là gì. Cá nhân tôi thích chuyển đổi bằng Alt+Shift. Và đó là cách tôi muốn nó hoạt động. Nếu bạn chia sẻ ý kiến của tôi và đang phải đối mặt với vấn đề này, bài viết này sẽ giúp bạn.
Nguồn: www.habr.com
