ตั้งค่าตัวเลือกเค้าโครงแป้นพิมพ์อย่างถาวรด้วย setxkbmap เป็น gnome / unity


28

Ubuntu 13.10 1 (และอาจเป็น gnome ต้นน้ำ) แนะนำข้อผิดพลาดที่น่ารำคาญมาก : การกดแป้นพิมพ์ลัดสลับเค้าโครงทำให้โฟกัสไปที่หน้าต่างบางหน้าต่างของระบบจากนั้นกลับสู่หน้าต่างที่กดปุ่มลัด แอปพลิเคชั่นบางตัวมีการกระทำบางอย่างที่เปลี่ยนแปลงโฟกัสเช่น twitter (ในเบราว์เซอร์) ปิดฟิลด์ป้อนข้อความตอบกลับเมื่อสูญเสียโฟกัส ฯลฯ ดังนั้นตัวสลับคีย์บอร์ดดั้งเดิมของอูบุนตูจึงไม่เหมาะสำหรับฉันจนกว่าจะแก้ไข

X มีกลไกการสลับในตัวและดีกว่ามากนอกเหนือจากที่ไม่เกี่ยวข้องกับการสลับโฟกัสมันสลับทันที (gnome switcher บางครั้งก็ล่าช้า)

ฉันจะตั้งค่าตัวเลือก xkbmap ได้อย่างไรเพื่อให้การตั้งค่ายังคงอยู่หลังจากรีบูตและ Gnome จะไม่ถูกรีเซ็ต

สิ่งที่ฉันได้ลอง:

ก่อนอื่นเพียงดำเนินการ setxkbmap:

setxkbmap -layout "us,ru"
setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"

แต่ใช้งานได้เท่านั้น:

  1. สำหรับเซสชันปัจจุบัน
  2. จนกว่า Gnome จะเขียนทับมัน (ตัวอย่างเช่นการแตะบางสิ่งในการorg.gnome.desktop.input-sourcesรีเซ็ตทริกเกอร์ของ gconf )

ประการที่สองเพิ่มตัวเลือก xkb ลงใน Xorg config:

ตัวเลือกอื่นคือการเพิ่มต่อไปนี้ลงใน xorg config:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" "pc105"
        Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll"
EndSection

Xorg เข้าใจดีว่าในช่วงเริ่มต้น:

[    33.791] (**) Option "xkb_rules" "evdev"
[    33.791] (**) Option "xkb_model" "pc105"
[    33.791] (**) Option "xkb_layout" "us,ru"
[    33.791] (**) Option "xkb_variant" "pc105"
[    33.791] (**) Option "xkb_options" "grp:rctrl_toggle,grp_led:scroll"

แต่การเปลี่ยนการตั้งค่ายังคงรีเซ็ตในภายหลังโดย gnome

ประการที่สาม gconf

ป้อนคำอธิบายรูปภาพที่นี่

ฉันมีxkb-optionsและsourcesตั้งค่าorg.gnome.desktop.input-sourcesแล้ว แต่ Gnome ยังคงกำหนด xkb เป็นเค้าโครงภาษาอังกฤษเดี่ยว:

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
options:    grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

ประการที่สี่ตัวเลือกอื่นใน gconf

ป้อนคำอธิบายรูปภาพที่นี่

การตั้งค่าorg.gnome.settings-daemon.peripherals.keyboardไม่ทำงานสำหรับฉัน ไม่มีอะไรเปลี่ยนแปลง

UPD 1 : มีการอภิปรายคือ/usr/lib/gnome-settings-daemon-3.0/libkeyboard.soการแนะนำที่จะลบ อย่างน้อยนี่จะแก้ไขการรีเซ็ต xkbmap บางส่วน (เช่นหลังจากล็อคหน้าจอ)

1ฉันใช้ 14.04 แต่ปัญหาเกี่ยวกับการสูญเสียโฟกัสยังไม่ได้รับการแก้ไข ( รายงานไม่ได้รับการยืนยันใน Gnome ต้นน้ำ )


คุณลองตั้งค่าเลย์เอาต์อย่างถูกต้องในคำพังเพยแล้วเพิ่มsetxkbmapคำสั่งสองคำไปยังของคุณ~/.profileหรือไม่? ด้วยวิธีดังกล่าวพวกเขาจะทำงานทุกครั้งที่คุณเข้าสู่ระบบและเนื่องจากการตั้งค่าแบบเดียวกันมีอยู่ใน Gnome จึงไม่ควรเปลี่ยนแปลงสิ่งใดหากตั้งค่าใหม่
terdon

1
@terdon มันรีเซ็ตแม้หลังจากล็อคหน้าจอ และมันรีเซ็ต "พวกเราเท่านั้นไม่มีสวิทช์" org.gnome.desktop.input-sourcesรัฐไม่ได้ที่จะตั้งค่าที่กำหนดไว้ใน
kolen

แปลก. คุณแน่ใจหรือว่าใช้ Gnome ไม่ใช่ Unity? คุณลองเปลี่ยนการตั้งค่าผ่าน GUI ปกติแทนที่จะเป็นdconf-editorหรือไม่?
terdon

@terdon ใช่มันเป็นเอกภาพ แต่มันใช้สิ่งที่หายไปของ gnome เช่น gnome-settings-daemon ซึ่งมีการรีเซ็ตคีย์แมป
kolen

คุณลองตั้งค่าที่ถูกต้องจาก Unity GUI แล้วหรือยัง?
terdon

คำตอบ:


19

วิธีป้องกันการรีเซ็ตการตั้งค่าแป้นพิมพ์ gnome ใน X i ใช้คำสั่งนี้:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

มันใช้งานได้สำหรับฉัน


4
ฉันลองสิ่งนี้บน Ubuntu 14.04 และไม่ทำอะไรเลย คุณมีคำอธิบายเกี่ยวกับเรื่องนี้อีกครั้งว่ามันทำงานอย่างไร?
Nickolai Leschov

2
ได้ผลสำหรับฉันใน 14.04
ndemou

2
ทำงานได้ดีสำหรับฉันใน 16.04 หลังจากลองทุกอย่างอื่น
Leonardo Castro

1
วิธีเดียวที่ฉันพบว่าทำงานใน 17.04
Cnly

1
โปรดทราบว่า Ubuntu ได้สร้าง unity-settings-daemon เป็นระยะเวลาหนึ่งเช่นกัน แต่ในตอนนี้เมื่อพวกเขากลับไปที่ Gnome อีกครั้งสิ่งนี้อาจทำงานต่อไปได้
dragon788

6

ฉันจะบ้ามากกว่านี้เหมือนคุณ แต่กับ Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 และ xkbd (จาก xfce goodies) Ctrl + Space เพื่อเปลี่ยนเค้าโครงแป้นพิมพ์ทำงานได้ แต่ Alt + Shift ไม่ทำงาน (ปุ่มตัวปรับเท่านั้น)

ในที่สุดการจัดการเพื่อให้สิ่งต่าง ๆ ทำงาน -

1. Run ibus-setup (Keyboard Input Methods application).
2. Goto Advanced tab.
3. Check 'Use system keyboard layout'.
4. Click 'Close'

5. Run xfce4-keyboard-settings (Keyboard application).
6. Goto Layout tab.
7. Uncheck 'Use system defaults'
8. Select 'Keyboard model' (typically 'Generic 105-key (Intl) PC' will do)
9. Set 'Change layout option' to your required switching keys combination (typically Alt+Shift will do).
10. Add languages to 'Keyboard layout'.
11. Click 'Close'.
12. Restart the computer

คุณทำเสร็จแล้ว! ใช้ Alt + Shift เพื่อเปลี่ยนเค้าโครงแป้นพิมพ์


1
ทำไมคุณแนะนำให้ใช้xfce4-keyboard-settingsในคำถามที่ขอความช่วยเหลือเกี่ยวกับคำพังเพย / ความสามัคคีโดยเฉพาะ?
Nickolai Leschov

2

ฉันเพิ่งอ่านบทความนี้ในการล็อกหน้าจอซึ่งอาจเกี่ยวข้อง อ้างอิงจากบทความการล็อคหน้าจอมีวัตถุประสงค์ที่สำคัญของการปิดกั้นอุปกรณ์อินพุตและการจัดการสถานที่ ดูเหมือนว่าคุณมีตัวเลือกน้อย:

  1. หยุดล็อคหน้าจอซึ่งอาจรวมถึงหน้าจอแสดงคำทักทายเช่นกันซึ่งทำหน้าที่คล้ายกัน
  2. ใช้เครื่องมือการจัดการพลังงานที่แตกต่างกัน
  3. หยุดใช้ ibus เพื่อเปลี่ยน im (บางที FCITX?)
  4. สร้างเบ็ดสำหรับการจัดกิจกรรมการปลดล็อคหน้าจอตามที่อธิบายไว้ที่นี่

มีการอภิปรายที่น่าสนใจเกี่ยวกับเรื่องนี้และกิจกรรมที่เกี่ยวข้องซึ่งสามารถพบได้ในรายชื่อผู้รับจดหมาย ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013- พฤศจิกายน 2013/07/07


1

การแก้ปัญหาโดยใช้wofในอูบุนตูบั๊กสำหรับ Ubuntu 14.10 ใช้gxkb :

https://bugs.launchpad.net/gnome-settings-daemon/+bug/1244090/comments/39

วิธีแก้ปัญหานี้ใช้งานได้กับ Ubuntu 14.10:

  • ในการตั้งค่า -> การป้อนข้อความลบแหล่งอินพุตทั้งหมดออกเป็นภาษาอังกฤษเท่านั้น
  • ติดตั้ง gxkb (layout switcher): sudo apt-get install gxkb
  • เพิ่ม gxkb ไปยังแอปพลิเคชั่นเริ่มต้นผ่าน gnome-tweak-tool
  • ตั้งค่าคีย์ลัด gxkb ใน ~ / .config / gxkb (ค่าเริ่มต้นคือ alt_shift แต่ใน 14.10 ใช้งานไม่ได้ ctrl_shift ใช้งานได้)

ps gxkb รุ่นใหม่มี appindicator สำหรับ Ubuntu สามารถติดตั้งผ่าน ppa: zen-root / gxkb-stable


(ยังไม่ได้ลอง)
kolen

E: ไม่พบแพ็คเกจ gxkb
e18r

0

ก่อนอื่นเพียงดำเนินการ setxkbmap:

setxkbmap -layout "us, ru" setxkbmap -option "grp: caps_toggle, grp_led: เลื่อน, เขียน: ralt"

แต่ใช้งานได้เท่านั้น:

For current session
Until Gnome will overwrite it (for example touching something in gconf's org.gnome.desktop.input-sources triggers reset).

เท่าที่ Gnome "รีเซ็ต" มันฉันก็ไม่รู้ ฉันรู้ว่าคุณจะอยู่ได้อย่างไรในการรีบูตแม้ว่าฉันจะต้องทำสิ่งเดียวกันกับเมาส์ Logitech ของฉัน มันมีหลายปุ่มที่ฉันต้องการแมปใหม่ในแบบที่แน่นอนและฉันต้องตั้งค่านั้นเมื่อรีสตาร์ท

ดังนั้นสิ่งที่คุณทำคือสร้างไฟล์ข้อความ จากนั้นในประเภทไฟล์ข้อความนั้น:

#!/bin/bash

และด้านล่างที่อยู่ในคำสั่งของคุณ ตัวอย่างเช่นเมาส์ของฉันมีลักษณะดังนี้:

#!/bin/bash
xinput set-button-map "Logitech USB-PS/2 Optical Mouse" 1 2 3 4 5 8 9 6 7 10 11 12 13 14 15 16

ถัดไปคุณจะบันทึกว่าเป็นชื่ออะไรก็ตามที่คุณต้องการและย้ายไปยังสถานที่เช่นไดเรกทอรีบ้านของคุณ มันต้องอยู่ที่นั่น "ตลอดไป"

จากนั้นเพียงแค่เปิดแอปพลิเคชั่นเริ่มต้นของคุณและเพิ่มไฟล์ลงในการเริ่มต้นของคุณแล้วคุณไม่ต้องกังวลว่าจะใช้งานได้นานในเซสชันเท่านั้น มันจะโอเคที่จะรีบูทคอมพิวเตอร์ของคุณเพราะการตั้งค่าของคุณจะกลับมาผ่านไฟล์ที่คุณเพิ่งเพิ่มเข้าไป

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