在 CentOS 7 中首次成功登入之前如何設定登入畫面的鍵盤佈局?

在 CentOS 7 中首次成功登入之前如何設定登入畫面的鍵盤佈局?

我意識到透過添加

setxkbmap xxx

我們可以更改 X 伺服器中的鍵盤佈局。它無法在登出/重新啟動後繼續存在,因此我們可以添加此行$HOME/.profile以使其在登入時可用,如下所示這個問題描述。

但是,當我們這樣做時,在登入之前,鍵盤佈局仍然不可用。如果我們現階段想要使用它,該怎麼走呢?我在 Centos7 上使用 GDM。

我嘗試過的:

  1. 定義一個新的鍵盤佈局,命名為symmetri,並將其放在 下/usr/share/X11/xkb/symbols/。為了測試,你可以下載它這裡注意:我只定義了 X11 伺服器的佈局,尚未定義虛擬控制台的佈局。也許這就是為什麼我不能列出它locatectl list-keymaps,既不loadkeys,也不觸摸/etc/vconsole.conf

  2. setxkbmap symmetri使用它。已套用更改。將其放入/etc/profile.d/symmetri.sh用戶設定檔中以使用它。

  3. 註銷,當我嘗試登入時,它停止工作並顯示 QWERTY。

  4. 我使用 QWERTY 登錄,然後我現在使用 Symmetri,因為腳本是在成功登入後取得的。

  5. 打開終端,我切換回usby setxkbmap us

進而,

localectl set-x11-keymap symmetri

這次,佈局沒有切換。localectl set-keymap symmetri兩者都不。

答案1

您可以使用

localectl set-x11-keymap ***

這對於控制台和桌面來說將是永久的,更詳細的配置可以在手冊頁上找到https://www.unix.com/man-page/centos/1/LOCALECTL/

答案2

@terdon你的解決方案不起作用,但感謝你幫助我,我學到了更多;一開始我也懷疑是不是跟Gnome有關係,結果發現只是X11而已。 @TimBrandrick,您的解決方案應該在大多數情況下都有效,但就我而言,不是在將鍵盤佈局添加到之前.../X11/xkb/rules/evdev.xml(以防萬一.../X11/xkb/rules/evdev.lst,因為根據某些來源,該lst文件是 的編譯版本xml,但我懷疑依賴這些文件的所有進程是否只會讀取文件;所以xml我添加了這兩個文件xmllstlst

所以,我是這樣做的:

1. 打開.../X11/xkb/rules/evdev.xml.

(我省略了最初的部分,因為它在發行版之間有所不同。在 CentOS 7 中,它位於/usr/share/; 在 Ubuntu <= 8.08 中,它位於/etc/. 1 Strange 下。)

2. 在 的子節點末尾<layoutList>加入這部分:

(根據需要修改,這只是一個模板)

<layout>
  <configItem>
    <name>symmetri</name>
    <shortDescription>symmetri</shortDescription>
    <description>Symmetri (CN, EN and ES)</description>
    <languageList>
      <iso639Id>us</iso639Id>
    </languageList>
  </configItem>
  <variantList>
    <variant>
      <configItem>
        <name>non-prog</name>
        <shortDescription>non-prog</shortDescription>
        <description>Symmetri for non-programmer (CN, EN and ES)</description>
        <languageList>
          <iso639Id>us</iso639Id>
        </languageList>
      </configItem>
    </variant>
  </variantList>
</layout>

如果您的鍵盤佈局沒有變體,<variantList>則部分可以是自動關閉的,例如:<variantList />

注意:iso639Id應具有與 ISO 639-1 或 639-2 標準相容的值。1參考文獻 1 中也給出了完整的表格。我設定English(U.S)為我的系統語言,所以我us在這裡填寫。

3.保存並打開.../X11/xkb/rules/evdev.lst

4. 在 的末端! layout新增佈局的名稱。喜歡:

symmetri        Symmetri layout (CN, EN and ES)

5. 如果您的鍵盤佈局有變體,請在 的末尾! variant也添加它。

non-prog        symmetri: non-programmer

變體的名稱應與 xml 檔案中的上述資訊一致。 (當我測試時,localectl list-x11-keymap-variants僅有的讀取此文件而不是讀取 xml,應該是一個錯誤/bug。

base.xml6. 你可以對和執行同樣的操作base.lst,但我先這樣做了,但不起作用。

7. 設定鍵盤佈局:

setxkbmap symmetri

或者,要設定變體,請使用:

setxkbmap symmetri -variant non-prog 

localectl可以list-x11-keymap-layoutslist-x11-keymap-variants,但不能用它來設定變體;只能setxkbmap

有了這個設置,現在重新啟動後和首次登入前,您有了新的鍵盤佈局(儘管該變體不會持續存在!只需要基本的佈局就可以了!)但是,一旦成功登錄,桌面管理器將接管,如果您沒有在$HOME/.bashrc/ $HOME/.profile(對於單一使用者)/ /etc/profile.d/xxx.sh/ /etc/profile(對於所有使用者)檔案中配置新的鍵盤佈局,您將不是登出並重新登入後即可獲得新的鍵盤佈局!所以這些改變將僅有的在第一次成功登入之前持續存在...您必須使用.bashrc或設定檔腳本來告訴X伺服器:“不僅在登入之前,而且在登入之後我希望所有用戶都可以使用它!”注意:透過此更改,即使您登出並更改用戶,佈局也將是更改後的佈局,而不是qwerty(us).

真的令人沮喪......一定有一個更簡單的方法,但我找不到它。

參考資料:(必讀)

  1. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11

相關內容