ฉันจะเปลี่ยนคีย์บอร์ดจากบรรทัดคำสั่งได้อย่างไร


65

ฉันจะเปลี่ยนเค้าโครงแป้นพิมพ์จากบรรทัดคำสั่งได้อย่างไร ตัวอย่างเช่นฉันต้องการเปลี่ยนจากภาษาอังกฤษเป็นภาษาฮิบรู ฉันสามารถทำได้จาก lightdm ด้วยไอคอนเล็ก ๆ ที่มุมของหน้าจอของฉัน

คำตอบ:


43

จากสถานี

ภาษาอังกฤษเป็นภาษาฮิบรูและในทางกลับกันด้วยAlt+Shift

setxkbmap -option grp:alt_shift_toggle us,il

คุณสามารถดูนามแฝงโลแคลทั้งหมดได้ด้วยคำสั่งนี้

cat /etc/locale.alias

ข้อมูลเพิ่มเติมเกี่ยวกับ setxkbmap ในคู่มือ

man setxkbmap

ข้อมูลในการตั้งค่าในการบูต: wiki.gentoo.org/wiki/Keyboard_layout_switching
Adriano P

52

คุณสามารถค้นหาคีย์แมปที่แตกต่างกันทั้งหมดในตำแหน่งที่ตั้งต่อไปนี้:

/usr/share/keymaps/i386/
/usr/share/kbd/keymaps/i386/
/usr/share/X11/xkb/symbols/

หากต้องการเปลี่ยนเค้าโครงแป้นพิมพ์ (เช่นเป็นภาษาสเปน) ในบรรทัดคำสั่ง Linux ให้พิมพ์คำสั่งต่อไปนี้:

loadkeys es

สำหรับ X:

setxkbmap es

ในการเปลี่ยนแปลงระบบให้กว้างนี้โดยสมมติว่าคุณใช้ Ubuntu คุณสามารถใช้สิ่งต่อไปนี้:

sudo dpkg-reconfigure console-setup

สิ่งนี้มีผลกับ tty1, tty2 ฯลฯ แต่ไม่มีผลใน X ฉันต้องการทำมันใน X แบบเดียวกับที่ตัวสลับคีย์บอร์ดใน lightdm ทำงาน
Eyal

ฉันเพิ่มคำสั่งในคำตอบนี่คือสิ่งที่คุณกำลังมองหาใช่ไหม
Dr_Bunsen

ใช่! ขอบคุณ นอกจากนี้คุณสามารถอัปเดตคำตอบของคุณเพื่อพูดถึง loadkeys สะกดด้วย 's' ได้หรือไม่
Eyal

2
ใช่ฉันจะและไม่ขอบคุณ ทำเครื่องหมายว่าแก้ไขแล้วเพื่อให้ทุกคนรู้
Dr_Bunsen

สำหรับผู้ใช้ redhat ต่อไปนี้เป็นชิ้นที่มีค่า: /usr/share/X11/xkb/symbols/และsetxkbmap es
Peter Butkovic

13

Ubuntu 13.10 หรือใหม่กว่า

สิ่งนี้ทำงานได้ดีกว่าจากนั้น setxkbmap ด้วยตัวบ่งชี้เค้าโครงแป้นพิมพ์ Gnome / Unity

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

0 คือดัชนีโครงร่าง (0 ค่าเริ่มต้นหรือเค้าโครงด้านบน) การจัดทำดัชนีเริ่มต้นจาก 0

สำหรับการใช้งานง่ายสร้างนามแฝง


2
คำตอบนี้ดีกว่าเพราะจริง ๆ แล้วมันเปลี่ยนตัวบ่งชี้ สิ่งที่ฉันกำลังมองหา
Ainar-G

1
ขอบคุณ ใช้คำตอบของคุณได้ที่นี่: askubuntu.com/a/984981/6193
Alexey

3
สิ่งนี้ใช้ไม่ได้กับ GNOME 3.26 มันบอกว่า "คีย์นี้ถูกคัดค้านและละเว้น"
hugomg

@hugomg ตอนนี้ฉันยังไม่สามารถเข้าถึง gnome ที่ใหม่กว่าได้ แต่คุณอาจลองใช้เครื่องมือและตรวจสอบdconf-editor /org/gnome/desktop/พวกเขาอาจเปลี่ยนชื่อได้
user.dz

12
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

คำสั่งนี้ช่วยให้คุณสามารถสลับไปมาระหว่างภาษาอังกฤษและภาษาฮิบรูเพียงผ่านโดยright alt+ shiftและช่วยเหลือคุณจากการ+left altshift


3

ดูเหมือนจะไม่มีเครื่องมือ CLI มาตรฐาน แต่xkb-switchเป็นเครื่องมือโอเพนซอร์ซขนาดเล็กสำหรับทำงาน เพิ่งทดสอบกับ Ubuntu 16.04.4 LTS และทำงานได้อย่างไม่มีที่ติ

$ xkb-switch       # display current group
ua
$ xkb-switch -l    # list groups
us
ua
$ xkb-switch -s us # switch to a named group
$

สิ่งนี้ดูดีกว่าโซลูชันอื่น ๆ เนื่องจากsetxkbmap <name>ทำลายตัวเลือกทั้งหมดและsetxkbmap -layout <name>ในขณะที่รักษาตัวเลือกไว้มันยังคงล้มเหลวในการเปลี่ยนตัวบ่งชี้แถบงานหรือgrp_ledหากตั้งค่าไว้


ข้อแม้

หากการ~/.config/kxkbrcใช้งานของคุณLayoutLoopCount(เช่นถูกตั้งค่าให้น้อยกว่าจำนวนเลย์เอาต์ทั้งหมดที่แสดงในLayoutList) เช่นนี้:

LayoutList=us,ua,th,de
LayoutLoopCount=2
Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch,
        nbsp:level2,grp:rctrl_toggle,misc:typo

จากนั้นxkb-switchจะอนุญาตให้คุณสลับระหว่างโครงร่างในกลุ่มปัจจุบันเท่านั้น


เรียกใช้เมื่อล็อกหน้าจอ

ฉันสังเกตเห็นความคิดเห็นของคุณ:

ก่อนที่สกรีนเซฟเวอร์จะเปิดขึ้นฉันต้องการเปลี่ยนเป็นภาษาอังกฤษเพื่อให้สามารถพิมพ์รหัสผ่านของฉันได้ง่ายเมื่อฉันกลับเข้ามา

นี่คือเป้าหมายของฉันได้อย่างแม่นยำดังนั้นนี่คือคำตอบ:
ต้องการทำเช่นนั้นคุณจะต้องตัดมันลงไปใน hooking สคริปต์เพื่อdbus-monitorชอบกล่าวถึงที่นี่


3

การใช้gsettingsใน 18.04+ กับ Gnome คุณสามารถเพิ่มรูปแบบแป้นพิมพ์และสลับไปมาระหว่างบรรทัดคำสั่งหรือจากตัวสลับเค้าโครงแป้นพิมพ์บนเดสก์ท็อป

1. นำเสนอเค้าโครงแป้นพิมพ์และตัวเลือก:

$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp']
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources mru-sources @a(ss) []
org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]

2. การเพิ่มรูปแบบแป้นพิมพ์:

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]"
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]

3. การเปลี่ยนรูปแบบแป้นพิมพ์ปัจจุบันจากบรรทัดคำสั่ง:

$ gsettings set org.gnome.desktop.input-sources current 1

เนื่องจากเรามี 3 ภาษาที่แตกต่างกันเรามีสามตัวเลือกตั้งแต่ 0 ถึง 2 โดยมี 1 เป็นภาษาสเปน 2 เป็นนอร์เวย์และ 3 เป็นภาษากรีก ดังนั้นการตั้งค่าปัจจุบันที่ 1 ข้างต้นทำให้นอร์เวย์เป็นรูปแบบแป้นพิมพ์ปัจจุบัน

4. ใช้รูปแบบแป้นพิมพ์ที่เป็นไปได้ทั้งหมด:

cat //usr/share/X11/xkb/rules/base.lst

5. การเปลี่ยนเค้าโครงแป้นพิมพ์ด้วยแป้นพิมพ์ลัด:

แป้นพิมพ์ลัดได้รับการกำหนดค่าล่วงหน้าสำหรับการเปลี่ยนเค้าโครงแป้นพิมพ์ ทางลัดปัจจุบัน:

$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source
['<Super>space']

สามารถตั้งค่าทางลัดใหม่โดยใช้ชุด gsetting แต่ระวังไม่ให้ใช้ทางลัดที่ใช้งานอยู่แล้ว ในการแสดงรายการทางลัดทั้งหมดที่ใช้งาน:

$ gsettings list-recursively org.gnome.desktop.wm.keybindings
org.gnome.desktop.wm.keybindings cycle-windows-backward ['<Shift><Alt>Escape']
org.gnome.desktop.wm.keybindings minimize ['<Super>h']
org.gnome.desktop.wm.keybindings move-to-workspace-7 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-8 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-9 @as []
org.gnome.desktop.wm.keybindings move-to-monitor-left ['<Super><Shift>Left']
...

นี่คือคำตอบที่ครอบคลุมมากที่สุดรุ่งโรจน์สำหรับเรื่องนี้
Julien Chappuis

1

สำหรับ Ubuntu 18.04 + Gnome คำตอบอื่น ๆ ใช้ไม่ได้สำหรับฉัน แต่สิ่งนี้ทำได้:

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()"

อาร์กิวเมนต์ใน "inputSources [0]" เป็นดัชนีของเค้าโครงแป้นพิมพ์เช่นเดียวกับโซลูชัน gsettings

พบว่ามันอยู่บนลินุกซ์ StackExchange


-1

แค่อยากรู้อยากเห็นทำไมคุณจะทำอย่างนั้น? ทำไมคุณถึงเปิดเทอร์มินัลและพวกเขาพิมพ์คำสั่งเพื่อสลับเค้าโครงแป้นพิมพ์ของคุณเมื่อคุณสามารถทำได้โดยใช้แป้นพิมพ์ลัดง่ายๆ! สมมติว่าคุณใช้ Ubuntu มันจะเป็นWindows+Space


2
สิ่งนี้ดูเหมือนจะเป็นความคิดเห็นมากกว่าและมีคำตอบน้อยกว่า
WinEunuuchs2Unix

ก่อนที่สกรีนเซฟเวอร์ของฉันจะเปิดฉันต้องการที่จะเปลี่ยนเป็นภาษาอังกฤษเพื่อที่จะพิมพ์รหัสผ่านของฉันได้อย่างง่ายดายเมื่อฉันกลับมา
Eyal

นอกจากนี้ยังมีประโยชน์สำหรับการสร้างแป้นพิมพ์ลัดแบบกำหนดเอง
Vassilis

สิ่งนี้ไม่ทำงานใน Ubuntu 16.04 บนเวอร์ช่วลบ็อกซ์
Juha Untinen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.