Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: CLI программа переключения раскладки (iBus)  (Прочитано 14132 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #15 : 18 Февраля 2017, 11:43:42 »
Переключение правым Alt, а дефолтное было левый Alt + Shift.
Код: (text) [Выделить]
ibus engine
xkb:ru::rus
(Не меняется при переключении раскладки)
Код: (text) [Выделить]
ibus list-engine
язык: эстонский
  xkb:ee::est - Estonian
язык: словацкий
  xkb:sk::slo - Slovak
  xkb:sk:qwerty:slo - Slovak (qwerty)
язык: румынский
  xkb:ro::rum - Romanian
язык: испанский; кастильский
  xkb:es::spa - Spanish
  xkb:latam::spa - Spanish (Latin American)
язык: французский
  xkb:ch:fr:fra - French (Switzerland)
  xkb:be::fra - Belgian
  xkb:fr::fra - French
  xkb:ca::fra - French (Canada)
  xkb:fr:dvorak:fra - French (Dvorak)
  xkb:fr:bepo:fra - French (Bepo, ergonomic, Dvorak way)
  xkb:fr:oss:fra - French (alternative)
язык: греческий (с 1453)
  xkb:gr::gre - Greek
язык: корейский
  xkb:kr:kr104:kor - Korean (101/104 key compatible)
язык: чешский
  xkb:cz::cze - Czech
язык: шведский
  xkb:se:dvorak:swe - Swedish (Dvorak)
  xkb:se::swe - Swedish
язык: турецкий
  xkb:tr::tur - Turkish
язык: арабский
  xkb:ara::ara - Arabic
язык: Другие
  xkbc - XKBC (Keyboard Emulation)
язык: иврит
  xkb:il::heb - Hebrew
язык: итальянский
  xkb:it::ita - Italian
язык: голландский; фламандский
  xkb:be::nld - Belgian
язык: литовский
  xkb:lt::lit - Lithuanian
язык: каталанский; валенсийский
  xkb:es:cat:cat - Catalan (Spain, with middle-dot L)
язык: венгерский
  xkb:hu::hun - Hungarian
язык: японский
  xkb:jp::jpn - Japanese
язык: норвежский
  xkb:no:dvorak:nor - Norwegian (Dvorak)
  xkb:no::nor - Norwegian
язык: болгарский
  xkb:bg::bul - Bulgarian
  xkb:bg:phonetic:bul - Bulgarian (traditional phonetic)
язык: финский
  xkb:fi::fin - Finnish
язык: сербский
  xkb:rs::srp - Serbian
язык: датский
  xkb:dk::dan - Danish
язык: украинский
  xkb:ua::ukr - Ukrainian
язык: латышский
  xkb:lv:apostrophe:lav - Latvian (apostrophe variant)
язык: Другие
  xkb:hr::scr - Croatian
язык: словенский
  xkb:si::slv - Slovenian
язык: португальский
  xkb:br::por - Portuguese (Brazil)
  xkb:pt::por - Portuguese
  xkb:br:dvorak:por - Portuguese (Brazil, Dvorak)
язык: русский
  xkb:ru::rus - Russian
  xkb:ru:phonetic:rus - Russian (phonetic)
язык: польский
  xkb:pl:dvorak:pol - Polish (Dvorak)
  xkb:pl::pol - Polish
язык: немецкий
  xkb:de:neo:ger - German (Neo 2)
  xkb:de::ger - German
  xkb:be::ger - Belgian
  xkb:de:dvorak:ger - German (Dvorak)
  xkb:ch::ger - German (Switzerland)
язык: английский
  xkb:gb:dvorak:eng - English (UK, Dvorak)
  xkb:ca:eng:eng - English (Canada)
  xkb:gb:extd:eng - English (UK, extended WinKeys)
  xkb:us:dvorak:eng - English (Dvorak)
  xkb:us::eng - English (US)
  xkb:us:intl:eng - English (US, international with dead keys)
  xkb:us:altgr-intl:eng - English (international AltGr dead keys)
  xkb:us:colemak:eng - English (Colemak)
Вывод ibus read-cache более 30000 знаков, прикрепил в txt.
« Последнее редактирование: 18 Февраля 2017, 12:20:25 от renzrv »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #16 : 18 Февраля 2017, 15:46:55 »
а дефолтное было левый Alt + Shift
А как Вы это поменяли?
Через sudo пробовали?
Сравните read-cache при разных раскладках, меняется?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #17 : 18 Февраля 2017, 18:14:57 »
Цитировать
А как Вы это поменяли?
В стандартном ГУИ:
http://itmages.ru/image/view/5481945/cc7ec7d6
http://itmages.ru/image/view/5481947/929420e5

Цитировать
Через sudo пробовали?
sudo ibus engine 'xkb:ru::rus'тоже не переключает:
(process:2625): IBUS-WARNING **: The owner of /home/USER_NAME/.config/ibus/bus is not root!
Цитировать
Сравните read-cache при разных раскладках, меняется?
Сравнил:
ibus read-cache | md5sumПри переключении раскладки хеш не меняется.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #18 : 18 Февраля 2017, 19:30:21 »
А что тут /home/USER_NAME/.config/ibus/bus?

Пользователь добавил сообщение 18 Февраля 2017, 19:32:44:
В стандартном ГУИ:
Да, вот только это совсем не iBus! Это внешняя программулина, найдите как она называется!
« Последнее редактирование: 18 Февраля 2017, 19:32:44 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #19 : 19 Февраля 2017, 06:44:13 »
Цитировать
А что тут /home/USER_NAME/.config/ibus/bus?
один файл:
efda3907ee5591bb59e321d456ca0970-unix-0
содержимое:
Код: (text) [Выделить]
# This file is created by ibus-daemon, please do not modify it
IBUS_ADDRESS=unix:abstract=/tmp/dbus-pvKufRXs,guid=0fc66505fdcfa2711cc1f45458a90c8d
IBUS_DAEMON_PID=1375

Цитировать
Да, вот только это совсем не iBus! Это внешняя программулина, найдите как она называется!
Конечно это не iBus, и это не внешняя программа, а апплет LxPanel'и.
Настроки этого апплета сохраняются в конфиге /home/USER_NAME/.config/lxpanel/Lubuntu/panels/panel:
Код: (text) [Выделить]
Plugin {
    type = xkb
    Config {
        DisplayType=0
        PerWinLayout=0
        NoResetOpt=0
        KeepSysLayouts=0
        Model=pc105
        LayoutsList=us,ru
        VariantsList=,
        ToggleOpt=toggle
        FlagSize=3
    }
}

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #20 : 19 Февраля 2017, 11:51:14 »
Где-то в её настроках должно быть включение переключения через setxkbmap, ЕМНИП.
Кстати, покажите setxkbmap -query
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #21 : 19 Февраля 2017, 12:04:59 »
Метод ввода можно изменить на xkb, но на нем переключение работает как-то криво.
Нужен CLI переключатель именно для дефолтного метода.
Код: (text) [Выделить]
setxkbmap -query
rules:      evdev
model:      pc105
layout:     us,ru
variant:    ,
options:    grp:toggle

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #22 : 19 Февраля 2017, 12:13:10 »
Метод ввода можно изменить на xkb
Какой «метод ввода»? На данный момент переключением занимается Ваш апплет для панели. Можете найти его исходники и понять как он это делает, а можете его переключить на работу через системные раскладки (что-то вроде «Сохранить системные раскладки»)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #23 : 19 Февраля 2017, 12:48:28 »
Цитировать
Какой «метод ввода»?
Вот:
http://itmages.ru/image/view/5482982/5a3aae11

Цитировать
Можете найти его исходники и понять как он это делает
Исходники не проблема скачать, но вот найти в них и понять как он переключает - извените, неосилю.
Файлов там и кода очень много.

Цитировать
а можете его переключить
А если ничего не переключать, и не менять метод ввода?
Xneur же как-то переключает на дефолтной системе без xkb.
Вот бы выделить из него эту переключалку.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #24 : 19 Февраля 2017, 19:19:05 »
переключить на работу через системные раскладки (что-то вроде «Сохранить системные раскладки»)
и тогда сможете переключать через setxkbmap
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #25 : 20 Февраля 2017, 14:20:38 »
Azure, Нужен способ переключения раскладки в CLI именно на стандартном (дефолтном) методе ввода без переключения на xkb и прочего.

Пользователь добавил сообщение 20 Февраля 2017, 16:26:14:
Вот исходники плагина "Обработчик раскладки клавиатуры"

xkb.h
/*
//====================================================================
//  xfce4-xkb-plugin - XFCE4 Xkb Layout Indicator panel plugin
// -------------------------------------------------------------------
//  Alexander Iliev <sasoiliev@mamul.org>
//  20-Feb-04
// -------------------------------------------------------------------
//  Parts of this code belong to Michael Glickman <wmalms@yahooo.com>
//  and his program wmxkb.
//  WARNING: DO NOT BOTHER Michael Glickman WITH QUESTIONS ABOUT THIS
//           PROGRAM!!! SEND INSTEAD EMAILS TO <sasoiliev@mamul.org>
//====================================================================
*/

/* Modified by Hong Jen Yee (PCMan) <pcman.tw@gmail.com> on 2008-04-06 for lxpanel */

/* Modified by Giuseppe Penone <giuspen@gmail.com> starting from 2012-07 and lxpanel 0.5.10 */

#ifndef _XKB_PLUGIN_H_
#define _XKB_PLUGIN_H_

#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#include <gtk/gtk.h>
#include <glib.h>

#include "plugin.h"
#include "misc.h"
#include "panel.h"
#include "ev.h"

#include "dbg.h"

typedef enum {
    DISP_TYPE_IMAGE=0,
    DISP_TYPE_TEXT=1,
    DISP_TYPE_IMAGE_CUST=2
} DisplayType;

typedef struct {

    /* Plugin interface. */
    Plugin       *p_plugin;                    /* Back pointer to Plugin */
    GtkWidget    *p_label;                     /* Label containing country name */
    GtkWidget    *p_image;                     /* Image containing country flag */
    DisplayType   display_type;                /* Display layout as image or text */
    gboolean      enable_perwin;               /* Enable per window layout */
    gboolean      do_not_reset_opt;            /* Do not reset options in setxkbmap */
    gboolean      keep_system_layouts;         /* Keey system layouts, skip setxkbmap */
    guint         source_id;                   /* Source ID for channel listening to XKB events */
    GtkWidget    *p_dialog_config;             /* Configuration dialog */
    GtkListStore *p_liststore_layout;
    GtkWidget    *p_treeview_layout;
    GtkTreeSelection  *p_treeselection_layout;
    GtkWidget    *p_button_kbd_model;
    GtkWidget    *p_button_change_layout;
    GtkWidget    *p_button_rm_layout;
    GtkWidget    *p_frame_kbd_model, *p_frame_kbd_layouts, *p_frame_change_layout;
    GtkWidget    *p_entry_advanced_opt, *p_checkbutton_no_reset_opt;

    /* Mechanism. */
    int       base_event_code;                /* Result of initializing Xkb extension */
    int       base_error_code;
    int       current_group_xkb_no;           /* Current layout */
    int       group_count;                    /* Count of groups as returned by Xkb */
    char     *group_names[XkbNumKbdGroups];   /* Group names as returned by Xkb */
    char     *symbol_names[XkbNumKbdGroups];  /* Symbol names as returned by Xkb */
    GHashTable *p_hash_table_group;             /* Hash table to correlate window with layout */
    gchar    *kbd_model;
    gchar    *kbd_layouts;
    gchar    *kbd_variants;
    gchar    *kbd_change_option;
    gchar    *kbd_advanced_options;
    guchar    flag_size;
    GString  *p_gstring_layouts_partial;
    GString  *p_gstring_variants_partial;
    int       num_layouts;
    gboolean  cust_dir_exists;

} XkbPlugin;

#define MAX_MARKUP_LEN  64
#define MAX_ROW_LEN  64

extern void xkb_redraw(XkbPlugin * xkb);
extern void xkb_setxkbmap(XkbPlugin *p_xkb);

extern int xkb_get_current_group_xkb_no(XkbPlugin * xkb);
extern int xkb_get_group_count(XkbPlugin * xkb);
extern const char * xkb_get_symbol_name_by_res_no(XkbPlugin * xkb, int group_res_no);
extern const char * xkb_get_current_group_name(XkbPlugin * xkb);
extern const char * xkb_get_current_symbol_name(XkbPlugin * xkb);
extern const char * xkb_get_current_symbol_name_lowercase(XkbPlugin * xkb);
extern void xkb_mechanism_constructor(XkbPlugin * xkb);
extern void xkb_mechanism_destructor(XkbPlugin * xkb);
extern int xkb_change_group(XkbPlugin * xkb, int increment);
extern void xkb_active_window_changed(XkbPlugin * xkb, Window window);

#endif



https://sourceforge.net/projects/lxde/files/LXPanel%20%28desktop%20panel%29/LXPanel%200.6.1/
« Последнее редактирование: 20 Февраля 2017, 16:34:11 от renzrv »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #26 : 20 Февраля 2017, 17:29:15 »
способ переключения раскладки в CLI именно на стандартном (дефолтном) методе
что означает переключение посредством апплета LX-panel. Сумеете его заставить работать через CLI — вперде!
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #27 : 21 Февраля 2017, 04:46:31 »
Сумеете его заставить работать через CLI
Я к сожалению не программист, только увлекаюсь, и Си не знаю, поэтому и пишу чтобы получить помощь в решении.

вперде!
Где?  :o

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #28 : 21 Февраля 2017, 09:51:44 »
Си не знаю
Может тогда подойдет более простой вариант с xdotool?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: CLI программа переключения раскладки (iBus)
« Ответ #29 : 21 Февраля 2017, 10:00:17 »
в конфиге /home/USER_NAME/.config/lxpanel/Lubuntu/panels/panel
А если менять сам конфиг вручную?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.031 секунд. Запросов: 23.