언어를 전환할 때 그놈이 언어 입력 순서를 변경하는 것을 방지하는 방법은 무엇입니까?

언어를 전환할 때 그놈이 언어 입력 순서를 변경하는 것을 방지하는 방법은 무엇입니까?

내 입력 설정은 다음과 같습니다. 목록에서 내가 선호하는 언어 순서를 확인하세요.

여기에 이미지 설명을 입력하세요

이제 처음에 입력을 전환하기 위해 바로가기를 호출하면 목록이 다음과 같이 표시됩니다(예상대로).

여기에 이미지 설명을 입력하세요

이제 한국어 입력(두 번째 항목)을 선택하고 스위치 단축키를 다시 호출합니다. 목록은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

보시다시피 순서가 바뀌었습니다.
이제 다른 입력을 선택하고 다시 전환하려고 하면 목록이 완전히 이동됩니다.

gnome이 항상 목록을 재정렬하는 것을 방지하는 방법이 있습니까?

내 직업은 언어에 관한 것이고 항상 언어를 전환한다는 점을 언급할 가치가 있다고 생각합니다(한자 검색, 영어 키보드로 돌아가기, 정의를 찾기 위해 한국어 사전으로 돌아가기 등...). 뇌는 실제로 쓰여진 것보다 목록에 있는 언어의 위치를 ​​더 쉽게 기억하며 이것이 Windows의 방식입니다.
이 문제를 해결할 수 있는 방법이 있으면 좋겠지만, 그렇지 않다면 그놈 웹사이트에 문제로 보고해야 할 것입니다.

미리 감사드립니다.

답변1

현재로서는 기본 단축키 Super+Space 및 Shift+Super+Space를 사용하여 키보드 레이아웃의 정적 이동을 위한 gnome-shell 확장이 없습니다.

그리고 이 링크에 대한 댓글GNOME 3을 사용하는 Ubuntu 17.10 이상에서 키보드 레이아웃 전환의 정적 순서OP에서

링크(Alt+Shift)에서 제안된 솔루션의 문제점은 시각적 피드백이 부족하고 이전에 대한 단축키(예: 한 입력으로 돌아가기 위한 win+shift+space)를 사용할 수 없다는 것입니다. 그래서 별로 만족스럽진 않습니다.

아래 해결 방법을 사용하면 두 가지(시각적 피드백 및 이전 레이아웃으로 다시 전환) 중 하나 이상을 달성할 수 있습니다.

해결 방법

운영체제: 우분투 19.10

참조:그래픽 표현 없이 다음 입력 소스로 전환하기 위한 기본 바로 가기 Super+Space 조작

아래 내용으로 두 개의 스크립트를 만듭니다. 이름은 "SuSpace.sh" 및 "ShSuSpace.sh"로 지정했습니다.

SuSpace.sh

#!/bin/bash

totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")

currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")

declare -i math=$currentLang+1

if [ "$math" -lt "$totalLang" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang+1"].activate()"
else
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()"
fi

ShSuSpace.sh

#!/bin/bash

totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")

currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")

declare -i math=$currentLang-1

if [ "$math" -eq -1 ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$totalLang-1"].activate()"
else
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang-1"].activate()"
fi

원하는 대로 이 두 스크립트에 대한 사용자 정의 바로가기를 만들 수 있습니다.

여기에 이미지 설명을 입력하세요

관련 정보