ฉันจะเปลี่ยนเค้าโครงแป้นพิมพ์ที่เลือกในปัจจุบันจากบรรทัดคำสั่งได้อย่างไร


12

ฉันมีรูปแบบแป้นพิมพ์ของฉัน (สองรูปแบบ) และสลับไปมาระหว่างรูปแบบเหล่านั้นด้วยคำสั่งต่อไปนี้:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

ตอนนี้ฉันต้องการเปลี่ยนเป็นusเค้าโครงโดยใช้คำสั่ง command line เป็นไปได้ไหม

คำตอบ:


13

คุณสามารถใช้xkb-switch ( -nเปลี่ยนเป็นเค้าโครงถัดไป):

xkb-switch -n

หรือxkblayout-state ( set +1ในกรณีที่คุณต้องการห่อหุ้ม):

xkblayout-state set +1

หรือxteจากxautomationเพื่อจำลองControl_L+ การShift_Lกดปุ่ม / ปล่อย:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'

xkblayout-state เยี่ยมมากขอบคุณ! ฉันใช้xkblayout-state set 1และฉันได้รับusเลย์เอาต์ทันที
Rogach

2

การค้นหา Stack Exchange สำหรับkbdmapค้นหาหน้านี้โดยไม่พูดถึงคำนั้น เพื่อความชัดเจนนี่คือคำตอบ (ไม่เหมาะกับแท็กX11ของคำถาม แต่ควรช่วยใครซักคน) ...

เมื่อถูก จำกัด ให้คอนโซลเสมือน

- ไม่มี X

kbdmap (1)

kbdmap, vidfont- ปลายด้านหน้าสำหรับ syscons และ VT

... ช่วยให้การตั้งค่าปุ่มกดใช้ได้ง่าย ...

แท้จริงแล้วมันง่ายและ (สำหรับฉันเปลี่ยนเป็นรูปแบบแป้นพิมพ์ของสหราชอาณาจักร) ที่มีประสิทธิภาพ

เมื่อใช้ X

- ตัวอย่างเช่นกับ TrueOS Desktop ที่ใช้ FreeBSD

จากโพสต์ 5ภายใต้เปลี่ยนเค้าโครงแป้นพิมพ์? | ฟอรัม FreeBSD (2015-08-03):

kbdmapสำหรับคอนโซล setxkbmapเป็นยูทิลิตี้ที่คุณต้องการสำหรับ X11 ...

มีคำเตือนเป็นตัวอย่างเช่นเมื่อมีการเปลี่ยนแปลงไปU nited ราชอาณาจักร:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 

1

ขึ้นอยู่กับ distro สำหรับรูปแบบแป้นพิมพ์คำสั่งคือ

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

ถ้าจำไม่ผิด ตรวจสอบ manpage เพื่อดู loadkeys หากคุณต้องการกำหนดคีย์เฉพาะให้กับลักษณะการทำงานเฉพาะ


ปัญหาคือหลังจากที่ฉันทำ (ตัวอย่าง) loadkeys usมันจะรีเซ็ตการตั้งค่าที่ฉันสร้างขึ้นด้วย setxkbmap (สองเลย์เอาต์และสลับระหว่างพวกเขา)
Rogach

เท่าที่ฉันรู้ว่านี่คือคำสั่งให้เปลี่ยนเลย์เอาต์ถ้าคุณมีเฉพาะฉันเดาว่าวิธีที่ดีที่สุดคือการมีนามแฝงในเชลล์ของคุณที่จะเรียกใช้ loadkeys ด้วยการตั้งค่า yout เช่น load_us จะโหลดแป้นพิมพ์ของเราและจริง ๆ แล้วจะเรียกใช้ loadkey /lib/kbd/keymaps/i386/qwerty/us.map.gz หรือที่คล้ายกัน และเหมือนกันสำหรับเค้าโครงอื่น ๆ
BitsOfNix

แต่ฉันจะเปลี่ยนการตั้งค่าแป้นพิมพ์ในภายหลังได้อย่างไร ปัจจุบันฉันเปลี่ยนเลย์เอาต์โดยการกด Ctrl-Shift โดยใช้ loadkeys ขันมัน
Rogach

ให้ย้อนกลับไปที่นี่จากบรรทัดคำสั่งฉันสมมติว่าคุณพูดถึงเทอร์มินัล tty หมายความว่าคุณไม่ได้ใช้ xterm / terminology / gnome-terminal หรือโปรแกรมจำลองอื่น ๆ แต่จริงๆแล้วคุณอยู่ในสภาพแวดล้อมที่ไม่มีเซิร์ฟเวอร์ X จากนั้นคุณต้องใช้ loadkeys ตามคำถามของคุณฉันให้บรรทัดคำสั่งแก่คุณสิ่งที่คุณต้องการจริง ๆ แล้วดูเหมือนจะเป็นปุ่มลัด หากคุณมีคีย์เฉพาะที่จะทำการแมปคุณจะต้องสร้างเลย์เอาต์ของคุณเองแล้วโหลดตามคำขอพร้อมปุ่มโหลดจากมุมมอง cli หากคุณต้องการทางลัดแทนให้อัปเดตคำถามของคุณ
BitsOfNix

ไม่ฉันใช้สภาพแวดล้อมแบบกราฟิกและ gnome-terminal โดยเฉพาะ เป็นเพียงที่ฉันต้องการเปลี่ยน X layout programmaticaly เพื่อตอบสนองต่อเหตุการณ์บางอย่าง - ดังนั้นสิ่งที่ tty จะไม่ทำงาน
Rogach

0

ลองดูที่บทความนี้สำหรับบทความเรื่อง: การเปลี่ยนเค้าโครงของภาษาและแป้นพิมพ์บนการแจกแจงแบบต่างๆสำหรับคำสั่งต่าง ๆ เพื่อเปลี่ยนเค้าโครงแป้นพิมพ์ของคุณใน distros ที่แตกต่างกัน

คำสั่งเหล่านี้ส่วนใหญ่แสดงเป็น GUI แต่ถ้าคุณดูส่วนใหญ่สามารถเรียกใช้จากบรรทัดคำสั่งได้เช่นกัน ตัวอย่างเช่นฉันใช้ Fedora (Distro based Red Hat) คำสั่งsystem-config-keyboardเมื่อเรียกใช้โดยไม่มีอาร์กิวเมนต์แสดง GUI

แต่ถ้าฉันรันsystem-config-keyboard --helpมันก็สามารถรันได้จากบรรทัดคำสั่งด้วย:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

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

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