Secara permanen mengatur opsi tata letak keyboard dengan setxkbmap di gnome / unity

28

Ubuntu 13.10 1 (dan mungkin upstream gnome) memperkenalkan bug yang sangat menjengkelkan : menekan pintasan tata letak keyboard membuat fokus beralih ke beberapa jendela sistem, lalu kembali ke jendela tempat pintasan ditekan. Beberapa aplikasi memiliki beberapa tindakan yang terikat pada perubahan fokus, misalnya twitter (di browser) menutup bidang input teks balasan ketika kehilangan fokus, dll. Jadi pengalih keyboard asli ubuntu tidak cocok untuk saya, sampai diperbaiki.

X memiliki built-in mekanisme switching, dan jauh lebih baik, selain itu tidak melibatkan fokus switching, ia segera beralih (gnome switcher juga kadang-kadang ketinggalan).

Bagaimana saya bisa mengatur opsi xkbmap sehingga pengaturan akan tetap setelah reboot dan tidak akan diatur ulang oleh Gnome?

Apa yang saya coba:

Pertama, cukup jalankan setxkbmap:

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

Tetapi hanya berfungsi:

  1. Untuk sesi saat ini
  2. Hingga Gnome akan menimpanya (misalnya menyentuh sesuatu di org.gnome.desktop.input-sourcespemicu gconf's reset).

Kedua, menambahkan opsi xkb ke konfigurasi Xorg:

Opsi lain adalah menambahkan berikut ke konfigurasi xorg:

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 memahami bahwa selama startup:

[    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"

Tetapi beralih konfigurasi masih mengatur ulang nanti, mungkin oleh gnome

Ketiga, gconf

masukkan deskripsi gambar di sini

Saya punya xkb-optionsdan sourcesmengatur org.gnome.desktop.input-sources, tetapi Gnome masih menetapkan xkb ke tata letak bahasa Inggris tunggal:

$ 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)" };
};

Keempat, opsi lain di gconf

masukkan deskripsi gambar di sini

Pengaturan org.gnome.settings-daemon.peripherals.keyboardjuga tidak berfungsi untuk saya. Tidak ada yang berubah.

Pembaruan 1 : Ada diskusi yang merekomendasikan untuk menghapus /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. Setidaknya ini memperbaiki beberapa reset xkbmap (yaitu setelah layar kunci).

1 Saya menggunakan 14,04, tetapi masalah dengan kehilangan fokus masih belum diperbaiki. ( Laporan belum dikonfirmasi di hulu Gnome )

kolen
sumber
Sudahkah Anda mencoba mengatur tata letak dengan benar di gnome dan kemudian menambahkan dua setxkbmapperintah ke Anda ~/.profile? Dengan begitu, mereka akan dijalankan setiap kali Anda masuk dan karena pengaturan yang sama ada di Gnome, seharusnya tidak mengubah apa pun jika pengaturan ulang.
terdon
1
@terdon ulang bahkan setelah kunci layar. Dan itu me-reset ke "us-only, no switch", tidak ke pengaturan yang ditentukan org.gnome.desktop.input-sources.
kolen
Aneh. Apakah Anda yakin menggunakan Gnome dan bukan Unity? Sudahkah Anda mencoba mengubah pengaturan melalui GUI normal dconf-editor?
terdon
@terdon ya, itu adalah kesatuan, tetapi ia menggunakan kehilangan hal-hal gnome, seperti gnome-settings-daemon, yang meremehkan keymap.
kolen
Jadi, sudahkah Anda mencoba pengaturan pengaturan yang benar dari Unity GUI?
terdon

Jawaban:

19

Untuk mencegah gnome me-reset pengaturan keyboard di X saya menggunakan perintah ini:

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

Ini bekerja untuk saya.

Iasha102
sumber
4
Saya mencoba ini di Ubuntu 14.04 dan tidak melakukan apa-apa. Apakah Anda memiliki penjelasan ulang: bagaimana ini seharusnya bekerja?
Nickolai Leschov
2
Bekerja untuk saya di 14,04
ndemou
2
Bekerja untuk saya di 16,04, setelah mencoba yang lainnya.
Leonardo Castro
1
Satu-satunya metode yang saya temukan bekerja di 17.04.
Cnly
1
Perlu diingat Ubuntu sebenarnya telah menciptakan daemon unity-settings-setting untuk jangka waktu yang lama juga, tetapi sekarang mereka akan kembali ke Gnome lagi ini mungkin tetap berfungsi.
dragon788
6

Saya sudah membahas ini seperti Anda, tetapi dengan Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 dan xkbd (dari xfce goodies). Ctrl + Space untuk mengubah tata letak keyboard berfungsi, tetapi Alt + Shift tidak (tombol pengubah-saja).

Akhirnya berhasil membuat semuanya bekerja-

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

Kamu sudah selesai! Gunakan Alt + Shift untuk mengubah tata letak keyboard.

Pelabuhan Oron
sumber
1
Mengapa Anda merekomendasikan menggunakan xfce4-keyboard-settingsdalam pertanyaan meminta bantuan dengan gnome / persatuan, khususnya?
Nickolai Leschov
2

Saya baru saja membaca artikel ini tentang screenlocking, yang mungkin terkait. Menurut artikel itu, penguncian layar memiliki konsekuensi yang dimaksudkan untuk memblokir perangkat input dan memanipulasi lokal. Sepertinya Anda memiliki beberapa opsi:

  1. Berhenti mengunci layar, mungkin ini termasuk layar ucapan juga yang melayani fungsi serupa
  2. Gunakan alat manajemen daya yang berbeda
  3. Berhenti menggunakan ibus untuk beralih (Mungkin FCITX?)
  4. Buat kait untuk acara buka kunci layar seperti yang dijelaskan di sini .

Ada diskusi menarik tentang ini dan acara terkait yang dapat ditemukan di milis ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html

Elang
sumber
1

Solusi oleh pengguna WOF di Ubuntu bug tracker, untuk Ubuntu 14.10 menggunakan gxkb :

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

solusi ini bekerja untuk ubuntu 14.10:

  • di Pengaturan-> Entri teks menghapus semua sumber input, hanya menyisakan bahasa inggris
  • install gxkb (layout switcher): sudo apt-get install gxkb
  • tambahkan gxkb ke aplikasi startup melalui gnome-tweak-tool
  • setup hotkey gxkb di ~ / .config / gxkb (defaultnya adalah alt_shift, tetapi di 14.10 tidak berfungsi. ctrl_shift berfungsi ok)

ps versi baru gxkb memiliki appindicator untuk ubuntu. dapat diinstal melalui ppa: zen-root / gxkb-stable

kolen
sumber
(Belum mencobanya)
kolen
E: Tidak dapat menemukan paket gxkb
e18r
0

Pertama, cukup jalankan setxkbmap:

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

Tetapi hanya berfungsi:

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

Sejauh Gnome "mengatur ulang", saya tidak tahu. Saya tahu bagaimana Anda bisa tetap setiap reboot meskipun karena saya harus melakukan hal yang sama persis untuk mouse Logitech saya. Ini memiliki beberapa tombol yang saya ingin memetakan kembali dengan cara tertentu dan saya harus mengatur itu di restart.

Jadi yang Anda lakukan untuk itu adalah membuat file teks. Kemudian dalam jenis file teks itu:

#!/bin/bash

dan tepat di bawah itu masukkan perintah Anda. Sebagai contoh, mouse saya terlihat seperti ini:

#!/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

selanjutnya Anda akan menyimpannya sebagai nama apa pun yang Anda inginkan dan memindahkannya ke suatu tempat seperti direktori home Anda. itu harus tetap di sana "selamanya".

kemudian cukup buka Aplikasi Startup Anda dan Tambahkan file ke startup Anda dan kemudian Anda tidak perlu khawatir itu hanya berlangsung selama sesi. tidak apa-apa untuk me-reboot komputer Anda karena pengaturan Anda akan kembali melalui file yang baru saja Anda tambahkan.

David
sumber