Cách thay đổi bố cục bàn phím trong gnome 3 từ dòng lệnh


15

Tôi đang sử dụng gnome 3.22.1 nhưng vấn đề tồn tại từ 3.18.

Trước đó (không nhớ phiên bản chính xác) Tôi đã có thể chuyển đổi bố cục bàn phím bằng xkb-witch , ứng dụng đơn giản sử dụng các ràng buộc X.org dưới mui xe.

Sau 3.18 nếu bạn chạy xkb-switch, bố cục bàn phím sẽ không được chuyển sang gnome. Nghiên cứu sâu hơn đã chỉ ra rằng chuyển đổi bố cục đang hoạt động, nhưng trong một khoảng thời gian rất ngắn.

Nếu bạn chạy tập lệnh này:

for i in $(seq 1000); do
  lang=$(xkb-switch -s ru; xkb-switch);
  if [[ "$lang" == "ru" ]]; then
    echo $lang;
  fi;
done

Bạn sẽ nhận được từ 3 đến 20 chuyển đổi bố cục "thành công", tùy thuộc vào mức độ may mắn của bạn.

Sau khi giải quyết vấn đề này, tôi có lời khuyên sau :

gsettings set org.gnome.desktop.input-sources current 0

Cài đặt đang được thay đổi, nhưng bố cục vẫn giữ nguyên.

Tôi đã tìm thấy một phương pháp "hacky" để thay đổi bố cục:

setxkbmap us,ru
setxkbmap ru,us

nhưng shell gnome không nhận thức được sự thay đổi đó và hiển thị ngôn ngữ sai trong chỉ báo bố cục.

Tôi đã đăng về vấn đề này (xin lỗi, không đủ danh tiếng, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), nhưng không có may mắn nhận được bất kỳ câu trả lời tốt.

Và tại thời điểm này tôi bị mắc kẹt. Tôi không đủ kỹ năng để xác định vấn đề trong mã shell gnome. Tôi thậm chí không chắc đó là vấn đề (vỏ gnome).

Những gì tôi muốn là một cách nhận biết gnome để chuyển bố cục bàn phím từ thiết bị đầu cuối. Ai đó có thể chỉ cho tôi đi đúng hướng? Tôi có nên gửi lỗi này không (đặc biệt là bố cục bàn phím có thể thay đổi thông qua gsinstall)?

Câu trả lời:


8

Vì gnome-shell hiển thị giao diện eval JS trên DBus có quyền truy cập vào tất cả các biến, nên có thể thực hiện được bằng lệnh sau:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

Mà sẽ kích hoạt bố trí 0, và vv.

Tín dụng.


Và đây là cách chuyển sang phương thức nhập được sử dụng lần cuối (từ nhận xét):

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"

Cảm ơn bạn đã trả lời của bạn - nó đã tiết kiệm cho tôi rất nhiều googling! Và đây là cách chuyển sang phương thức nhập được sử dụng lần cuối:gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"
Envek

4

Nếu bạn đang sử dụng IBus làm phương thức nhập liệu của mình (có khả năng là mặc định), bạn có thể thay đổi mục nhập của mình bằng ibuslệnh:

# Set the layout to US English
ibus engine xkb:us::eng
# Set the input method to Japanese Mozc IME
ibus engine mozc-jp
# Set the layout to Russian
ibus engine xkb:ru::rus

Bạn có thể thấy tất cả các bố trí có sẵn với ibus list-enginelệnh.

Cần lưu ý cách tiếp cận này không thay đổi chỉ báo ngôn ngữ, mặc dù nó hoạt động đáng tin cậy theo cách khác.


Điều đó cũng giống như setxkbmap us- không có cách nào thay đổi bố cục bằng các phím tắt tiêu chuẩn sau đó.
sanmai

@sanmai Không hoàn toàn giống nhau - không thể chuyển sang các ngôn ngữ cần IME (tiếng Nhật, tiếng Trung, v.v.) bằng cách sử dụng setxkbmap. Hơn nữa, setxkbmapcó thể hành động lỗi đơn giản trong môi trường WM hiện đại, xem câu hỏi để biết chi tiết về điều này.
undercat hoan nghênh Monica

Không thể nhận xét về các phím tắt mặc định không hoạt động - Tôi đang sử dụng các phím tắt tùy chỉnh cho mọi bố cục mà tôi sử dụng.
undercat hoan nghênh Monica

OK, không giống nhau, nhưng tôi vẫn không thể sử dụng công tắc mặc định. Như bạn có thể biết, chỉ có nhiều phím phụ trên bàn phím tiếng Nhật, đối với các bố cục khác tôi vẫn phải sử dụng công tắc mặc định.
sanmai

3

Sử dụng gsettings.

Đặt org.gnome.desktop.input-sources.sourcesthành danh sách null , "[]", cho phép bạn sử dụng cấu hình bàn phím máy chủ X mà không cần gnome-shell cố gắng định cấu hình nó, do đó bạn có thể làm như trước.

$ gsettings set org.gnome.desktop.input-sources sources '[]'

Khi tôi thử điều này, Gnome Terminal của tôi đã bị kẹt trên QWERTY cho dù setxkbmapsau đó tôi đã nhập bao nhiêu lệnh, cho đến khi tôi đặt lại các nguồn đầu vào thông qua hộp thoại Cài đặt.
Silas S. Brown

0

Tôi nghĩ bạn nên thử sudo dpkg-reconfigure keyboard-configuration


0

Bạn có thể thiết lập và chuyển sang một phương thức nhập trên dòng lệnh ngay cả khi trước đó bạn chưa thiết lập phương thức nhập đó bằng chuột:

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"

Đối với Dvorak, hãy sử dụng us+dvorak(hoặc gb+dvoraknếu bạn ở Vương quốc Anh hoặc bất cứ điều gì).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.