Добрый день!Подскажите, как скриптом можно добавить русскую раскладку клавиатуры и задать сочетание клавиш для ее смены? Но сделать это так, чтобы после перезагрузки настройка сохранялась. Система Debian 6, gnome.
Выполнение команды setxkbmap -layout us,ru -variant ,winkeys -option grp:switch,grp:alt_shift_toggle приводит к желаемому результату, но только до перезагрузки. Ставить эту команду в автозагрузку выглядит костылем.
Проверял файл /etc/default/keyboard, там стоят верные настройки:
XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT=","
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"Тем не менее, раскладка только английская. Если добавить русскую раскладку через графическое меню гнома, то все работает нормально. Но нужно именно через скрипт.
Проверьте, что у вас в "реестре":
gconftool-2 -a /desktop/gnome/peripherals/keyboard/kbdОсобенно посмотрите на layouts - должен быть пустым списком [], тогда, если не ошибаюсь, подхватываются общесистемные настройки. С помощью всё того же gconftool-2 можно устанавливать эти и другие значения в скриптах.
> Проверьте, что у вас в "реестре":
>gconftool-2 -a /desktop/gnome/peripherals/keyboard/kbd
> Особенно посмотрите на layouts - должен быть пустым списком [], тогда, если
> не ошибаюсь, подхватываются общесистемные настройки. С помощью всё того же gconftool-2
> можно устанавливать эти и другие значения в скриптах.Посмотрел, пусто во всех параметрах.
P.S.: спасибо за gconftool-2, прям Америку открыли для меня :)
Пробую выполнять команду:gconftool-2 --type List --set /desktop/gnome/peripherals/keyboard/kbd/layouts --list-type String [us,ru]
но в редакторе конфигураций все равно этот параметр остается пустым. Уже выполнял команду и от рута, и от обычного юзера. Систему тоже пробовал перегружать. Что не так? При этом заметил, что если добавить раскладку через графический интерфейс, то этот параметр в редакторе конфигураций заполняется нужным значением.
> Пробую выполнять команду:
> gconftool-2 --type List --set /desktop/gnome/peripherals/keyboard/kbd/layouts --list-type String [us,ru]
> но в редакторе конфигураций все равно этот параметр остается пустым.Порядок параметров перепутали, надо так:
gconftool-2 --type list --list-type string --set /desktop/gnome/peripherals/keyboard/kbd/layouts '[us,ru]'Можно также сделать общесистемные настройки, которые пользователи смогут переопределить для себя, если что:
sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults ...дальше те же самые параметры...Кстати, у меня (Debian 6) тут действительно пустой список, и действительно есть русская раскладка клавиатуры, как указано в /etc/default/keyboard. Ещё три машины рядом с аналогичной конфигурацией - тоже всё хорошо. Корни проблемы, очевидно, нужно искать не здесь.
В общем добился того, чтобы значения появлялись в конфигураторе. Но теперь проблема задать сочетание клавиш для переключения раскладки клавиатуры. Выполняю команду:/usr/bin/gconftool-2 --type list --list-type string --set /desktop/gnome/peripherals/keyboard/kbd/options "[grp grp:alt_shift_toggle]"
Значение появляется, но раскладка не переключается, даже после перезагрузки. Попробовал задать это сочетание через GUI и вот что увидел. [grp grp:alt_shift_toggle] - между двумя grp стоит табуляция, а не пробел. Но как я не пытался, со скрипта табуляцию вставить не получается. Пробую так: "[grp\tgrp:alt_shift_toggle]", но вставляется буква t. Пробовал копировать символ табуляции из конфигуратора, но он не вставляется.
Да, я когда-то тоже с таким столкнулся. Что характерно, разные шеллы на это по-разному смотрят. В dash (который используется в Debian в качестве sh) работает так:
$ echo '\t'Выводится табуляция. А вот в bash и во многих других шеллах нужно так:
$ echo -e '\t'Но это касается только команды echo. Для bash ещё можно использовать что-то вроде:
$'\t'Тут уж man bash читайте. Для скрипта, вероятно, лучше всего будет тем или иным способом определить переменную, содержащую один символ табуляции, и вставлять её, где нужно.
Объединяя вышенаписанное (FreeBSD 9.1)$gconftool-2 --direct --config-source xml:readwrite:/usr/local/etc/gconf/gconf.xml.defaults
$gconftool-2 --type list --list-type string --set /desktop/gnome/peripherals/keyboard/kbd/layouts '[us,ru]'Далее через костыль:
$ echo -e gconftool-2 --type list --list-type string --set /desktop/gnome/peripherals/keyboard/kbd/options "[grp'\t'grp:alt_shift_toggle]" > ./grp
$sh<grpмм
$rm ./grpНаверняка можно одной строкой.
На всякий случай проверяю:
$gconftool-2 --get /desktop/gnome/peripherals/keyboard/kbd/optionsЧерез несколько секунд заработало.
> Добрый день!
> Подскажите, как скриптом можно добавить русскую раскладку клавиатуры и задать сочетание
> клавиш для ее смены? Но сделать это так, чтобы после перезагрузки
> настройка сохранялась. Система Debian 6, gnome.В /etc/X11/xorg.conf :
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "en_US,ru"
Option "XkbOptions" "grp:menu_toggle,grp_led:scroll"
EndSection
> В /etc/X11/xorg.conf :Так а разве в новом Debian /etc/X11/xorg.conf не упразднили??
http://debian-user.blogspot.com/2010/06/etcdefaultkeyboard-r...
Я находил в интернете как настраивать раскладки через xorg.conf, но также многие говорили, что от этого файла уже отказались. И в моей системе его нет.
> Так а разве в новом Debian /etc/X11/xorg.conf не упразднили??У меня так работает в 6.0, проапгрейженное с позапрошлого (или типа того) релиза. Я и не заморачиваюсь.
Добрый день!Та же самая проблема, что описана в первом посте:
> Выполнение команды setxkbmap -layout us,ru -variant ,winkeys -option grp:switch,grp:alt_shift_toggle
> приводит к желаемому результату, но только до перезагрузки. Ставить эту команду
> в автозагрузку выглядит костылем.
> Проверял файл /etc/default/keyboard, там стоят верные настройки:
> XKBMODEL="pc105"
> XKBLAYOUT="us,ru"
> XKBVARIANT=","
> XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"
> Тем не менее, раскладка только английская. Если добавить русскую раскладку через графическое
> меню гнома, то все работает нормально.Но, надо настроить это через терминал.
Однако, при выполнении команд с gconftool-2, получаю:
++++++++++++++++++++++
Сбой при перечислении записей в «/desktop/gnome/peripherals/keyboard/kbd»: Failed to contact configuration server; the most common cause is a missing or misconfigured D-Bus session bus daemon. See http://projects.gnome.org/gconf/ for information. (Details - 1: Не удалось подсоединиться к сеансу: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.)
++++++++++++++++++++++Папки /desktop/gnome/peripherals/keyboard/kbd не существует. По правде говоря, в корне / даже desktop'a нету
Дебиан в виртуалке установлен, в инет выход есть.
В чем может быть проблема?
> Так а разве в новом Debian /etc/X11/xorg.conf не упразднили??
Аналогично, xorg.conf у меня нету.
#uname -a
Linux debian 2.6.32.5.686 #1 SMP Mon Mar 26 05:20:33...
> Но, надо настроить это через терминал.
> Однако, при выполнении команд с gconftool-2, получаю...GConf запущен? (ps ax | grep gconf — в выводе должен быть gconfd-2) GNOME вообще запущен?
> Папки /desktop/gnome/peripherals/keyboard/kbd не существует. По правде говоря, в корне
> / даже desktop'a нетуЭто не файлы и не папки, а ключи этого самого GConf'а. Можно тут привести приблизительную аналогию с реестром оффтопика. Хранятся в виде файлов XML в каталогах ~/.gconf и /etc/gconf. При выключенном GConf вручную править можно, но осторожно :-) Лучше пользовать gconftool.
>> Но, надо настроить это через терминал.
>> Однако, при выполнении команд с gconftool-2, получаю...
> GConf запущен? (ps ax | grep gconf — в выводе должен быть
> gconfd-2) GNOME вообще запущен?Да, запущен:
root@debian:~# ps ax | grep gconf
2056 ? S 0:00 /usr/lib/libgconf2-4/gconfd-2
2682 pts/0 S+ 0:00 grep gconf
>>> Но, надо настроить это через терминал.
>>> Однако, при выполнении команд с gconftool-2, получаю...
>> GConf запущен? (ps ax | grep gconf — в выводе должен быть
>> gconfd-2) GNOME вообще запущен?
> Да, запущен:
> root@debian:~# ps ax | grep gconf
> 2056 ? S
> 0:00 /usr/lib/libgconf2-4/gconfd-2
> 2682 pts/0 S+ 0:00
> grep gconfgconf походу вообще ни на что не реагирует:
++++++++++++++++
root@debian:~# gconftool-2 -R /desktop/gnome
Сбой при перечислении записей в «/desktop/gnome»: Failed to contact configuration server; the most common cause is a missing or misconfigured D-Bus session bus daemon.
++++++++++++++++Но, при добавлении поддержки раскладки через оболочку gnome, повтоюсь, все работает
>[оверквотинг удален]
>> 2682 pts/0 S+ 0:00
>> grep gconf
> gconf походу вообще ни на что не реагирует:
> ++++++++++++++++
> root@debian:~# gconftool-2 -R /desktop/gnome
> Сбой при перечислении записей в «/desktop/gnome»: Failed to contact configuration
> server; the most common cause is a missing or misconfigured D-Bus
> session bus daemon.
> ++++++++++++++++
> Но, при добавлении поддержки раскладки через оболочку gnome, повтоюсь, все работаетТак, разобрался вроде
перед командой gconf... Надо было sudo дописать... хотя, я выполнял эту команду под рутом... обнаружил, когда попробовал запускать от пользователя
Теперь имею следующее:
++++++++++++++++
root@debian:~# sudo gconftool-2 -a /desktop/gnome/peripherals/keyboard/kbd
model =
options = [grp grp:alt_shift_toggle]
layouts = [us,ru]
++++++++++++++++в options вставил значение при помощи скрипта:
++++++++++++++++
#! /bin/bashgconftool-2 --type list --list-type string --set /desktop/gnome/peripherals/keyboard/kbd/options "[grp grp:alt_shift_toggle]"
++++++++++++++++Пробем между двумя grp прямо в скрипте забил табуляцией
Но, увы, переключение между языками так и не работает...
> root@debian:~# sudo gconftool-2 -a /desktop/gnome/peripherals/keyboard/kbdgconftool надо запускать от имени простого пользователя, не от рута, — вы же меняете пользовательские настройки. От рута нужно запускать только в случае, когда нужно поменять общесистемные умолчания, и только с ключами «--direct --config-source...», как я уже писал выше.
>> root@debian:~# sudo gconftool-2 -a /desktop/gnome/peripherals/keyboard/kbd
> gconftool надо запускать от имени простого пользователя, не от рута, — вы
> же меняете пользовательские настройки. От рута нужно запускать только в случае,
> когда нужно поменять общесистемные умолчания, и только с ключами «--direct
> --config-source...», как я уже писал выше.Да, это я уже понял в "живом режиме" =)
Добавил раскладку и переключение между раскладками не из скрипта, а из консоли
вопросы:
теперь, когда я хочу вставить символ табуляции в консоли (CTRL+V+TAB) у меня вставляется русская буква "м", хотя язык включен английский
После ребута системы имею только английскую раскладку
В чем может быть дело?
> теперь, когда я хочу вставить символ табуляции в консоли (CTRL+V+TAB) у меня
> вставляется русская буква "м", хотя язык включен английскийИзвестная проблема, хотя у меня, например, никогда почему-то она не возникала. Гуглите на тему «не работает ctrl+c в gnome-terminal» — решения есть.
> После ребута системы имею только английскую раскладку
Показали бы, что теперь в GConf'e там, а то мне не видно ;-)
>> теперь, когда я хочу вставить символ табуляции в консоли (CTRL+V+TAB) у меня
>> вставляется русская буква "м", хотя язык включен английский
> Известная проблема, хотя у меня, например, никогда почему-то она не возникала. Гуглите
> на тему «не работает ctrl+c в gnome-terminal» — решения есть.Определил, что когда раскладкой по-умолчанию является русская, то описанная проблема возникает; если раскладкой по умолчанию сделать английскую, то управляющие клавиши и их комбинации работают, как надо... Это для себя и определил, как решение
>> После ребута системы имею только английскую раскладку
> Показали бы, что теперь в GConf'e там, а то мне не видно
> ;-)А вот и не понятно... Теперь с языком и раскладкой все ок =) Специально несколько дней поработал, чтобы посмотреть - авось вылетит =) Но нет...
Всё, спасибо!