ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] looking for xkbcommon experts
@ 2021-12-29 14:03 Alexey Gladkov
    2021-12-29 23:16 ` Leonid Krivoshein
  0 siblings, 2 replies; 12+ messages in thread
From: Alexey Gladkov @ 2021-12-29 14:03 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Привет!

Есть ли у нас хорошо знающие устройство библиотеки xkbcommon ?

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  @ 2021-12-29 16:18   ` Alexey Gladkov
  2021-12-29 23:52     ` Vladislav Zavjalov
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Gladkov @ 2021-12-29 16:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1363 bytes --]

On Wed, Dec 29, 2021 at 06:23:14PM +0400, Igor Chudov wrote:
>    Добрый день.
>     
>    А можно ли получить больше информации о том, какую задачу планируется решать? Это позволит понять, корректно ли
>    задан вопрос и чем можно помочь.

Oк.

Я исследую возможность дампа keymap при заданной конфигурации. Например, у
меня есть конфигурация:

struct xkb_rule_names names = {
	.rules = "evdev",
	.model = "pc105",
	.layout = "us,ru",
	.variant = NULL,
	.options = "grp:lctrl_toggle"
};

Я могу сделать дамп (см. аттач), но я не могу понять как получить какой
модификатор используется для переключения layout. Переключатель есть
только в options и там много чего ещё есть. Более того, как-то странно
парсить руками эти опции.

Возможно я слаб в этой библиотеке и не нашёл как получить
XKB_KEY_Control_L для указанной конфигруации. Поэтому и решил спросить
тут.

-- 
Rgrds, legion


[-- Attachment #2: xkbcommon-dump-test.c --]
[-- Type: text/plain, Size: 2577 bytes --]

#include <stdlib.h>
#include <string.h>
#include <err.h>

#include <xkbcommon/xkbcommon.h>

#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))

/* Offset between evdev keycodes (where KEY_ESCAPE is 1), and the evdev XKB
 * keycode set (where ESC is 9). */
#define EVDEV_OFFSET 8

int main(int argc, char **argv)
{
	struct xkb_context *ctx;

	ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
	if (!ctx)
		errx(EXIT_FAILURE, "xkb_context_new failed");

	struct xkb_rule_names names = {
		.rules = "evdev",
		.model = "pc105",
		.layout = "us,ru",
		.variant = NULL,
		.options = "grp:lctrl_toggle"
	};

	struct xkb_keymap *keymap;

	keymap = xkb_keymap_new_from_names(ctx, &names, XKB_KEYMAP_COMPILE_NO_FLAGS);
	if (!keymap)
		errx(EXIT_FAILURE, "xkb_keymap_new_from_names failed");

	xkb_mod_index_t num_mods = xkb_keymap_num_mods(keymap);

	for (xkb_keycode_t keycode = 1; keycode < 255; keycode++) {
		xkb_keycode_t evdev_keycode = keycode + EVDEV_OFFSET;
		xkb_layout_index_t num_layouts = xkb_keymap_num_layouts_for_key(keymap, evdev_keycode);

		printf("keycode %3d =", keycode);

		for (xkb_layout_index_t layout = 0; layout < num_layouts; layout++) {
			xkb_level_index_t num_levels = xkb_keymap_num_levels_for_key(keymap, evdev_keycode, layout);

			printf(" | {%s}", xkb_keymap_layout_get_name(keymap, layout));

			for (xkb_level_index_t level = 0; level < num_levels; level++) {
				xkb_mod_mask_t masks[100];
				size_t num_masks;
				const xkb_keysym_t *syms;
				int num_syms;

				memset(masks, 0, sizeof(masks));

				num_masks = xkb_keymap_key_get_mods_for_level(keymap, evdev_keycode, layout, level, masks, ARRAY_SIZE(masks));
				num_syms  = xkb_keymap_key_get_syms_by_level(keymap, evdev_keycode, layout, level, &syms);

				for (int i = 0; i < num_syms; i++) {
					xkb_keysym_t sym = syms[i];

					for (size_t m = 0; m < num_masks; m++) {
						xkb_mod_mask_t mask = masks[m];

						char s[255];
						int ret;

						ret = xkb_keysym_get_name(sym, s, sizeof(s));

						if (ret < 0 || (size_t) ret >= sizeof(s))
							errx(EXIT_FAILURE, "Failed to get name of keysym");

						xkb_mod_index_t num_mods = xkb_keymap_num_mods(keymap);

						printf(" (");

						if (!mask)
							printf("Plain");

						int delim = 0;
						for (xkb_mod_index_t mod = 0; mod < num_mods; mod++) {
							if ((mask & (1 << mod)) == 0)
								continue;

							printf("%s%s",
									(delim ? " " : ""),
									xkb_keymap_mod_get_name(keymap, mod));

							delim = 1;
						}

						printf(") %s,", s);
					}
				}
			}
		}
		printf("\n");
	}

	return EXIT_SUCCESS;
}

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-29 14:03 [devel] looking for xkbcommon experts Alexey Gladkov
  @ 2021-12-29 23:16 ` Leonid Krivoshein
  2021-12-29 23:31   ` Alexey Gladkov
  1 sibling, 1 reply; 12+ messages in thread
From: Leonid Krivoshein @ 2021-12-29 23:16 UTC (permalink / raw)
  To: devel

Привет!


29.12.2021 17:03, Alexey Gladkov пишет:
> Привет!
>
> Есть ли у нас хорошо знающие устройство библиотеки xkbcommon ?

У нас не знаю, вроде он: https://www.linux.org.ru/people/svu/profile
Когда-то он хорошо помог, добавил целую раскладку в xkb.


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-29 23:16 ` Leonid Krivoshein
@ 2021-12-29 23:31   ` Alexey Gladkov
  0 siblings, 0 replies; 12+ messages in thread
From: Alexey Gladkov @ 2021-12-29 23:31 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 02:16:55AM +0300, Leonid Krivoshein wrote:
> Привет!
> 
> 
> 29.12.2021 17:03, Alexey Gladkov пишет:
> > Привет!
> > 
> > Есть ли у нас хорошо знающие устройство библиотеки xkbcommon ?
> 
> У нас не знаю, вроде он: https://www.linux.org.ru/people/svu/profile
> Когда-то он хорошо помог, добавил целую раскладку в xkb.

Я почти уверен, что я пытаюсь сделать не получится реализовать.

На самом деле я попробовал реализовать загрузку консольных раскладок из
xkbcommon т.е. научить loadkeys понимать параметры setxkbmap. Я знаю, что
за годы с некоторыми хаками реализовали конветацию как в одну, так и
в другую сторону. Я решил попробовать сделать это нативно, если это можно
так назвать, но похоже это невозможно на текущем уровне xkbcommon.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-29 16:18   ` Alexey Gladkov
@ 2021-12-29 23:52     ` Vladislav Zavjalov
  2021-12-30  0:07       ` Vladislav Zavjalov
  2021-12-30  0:28       ` Alexey Gladkov
  0 siblings, 2 replies; 12+ messages in thread
From: Vladislav Zavjalov @ 2021-12-29 23:52 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Dec 29, 2021 at 05:18:09PM +0100, Alexey Gladkov wrote:
> Я могу сделать дамп (см. аттач), но я не могу понять как получить какой
> модификатор используется для переключения layout. Переключатель есть
> только в options и там много чего ещё есть. Более того, как-то странно
> парсить руками эти опции.
> 
> Возможно я слаб в этой библиотеке и не нашёл как получить
> XKB_KEY_Control_L для указанной конфигруации. Поэтому и решил спросить
> тут.

Мне кажется, что надо искать все кнопки, в которых присутствует работа с
группами: ISO_Next_Group, ISO_Prev_Group (и всякие LockGroup, LatchGroup
с которыми я никогда не имел дела).

При этом приложенная программа явно не показывает всей картины:
$ ./xkbcommon-dump-test | grep Group
keycode  29 = | {English (US)} (Plain) ISO_Next_Group,

при том, что у меня

$ xmodmap -pk | grep Group
108         0xfe08 (ISO_Next_Group) 0xffe8 (Meta_R) 0xfe0c
    (ISO_First_Group)        0xffe8 (Meta_R) 0xfe0c (ISO_First_Group)
    0xffe8 (Meta_R)    0xfe0c (ISO_First_Group)
134         0xfe08 (ISO_Next_Group) 0xffe8 (Meta_R) 0xfe08
    (ISO_Next_Group) 0xffe8 (Meta_R) 0xfe0c (ISO_First_Group)
    0xffe8 (Meta_R)    0xfe0c (ISO_First_Group)        0xffe8
    (Meta_R)

(у меня три группы и две кнопки, keycode 108 и 134: одна переключает все
по кругу, 1->2->3->1->2->3, вторая - только две (3->)1->2->1->2)




^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-29 23:52     ` Vladislav Zavjalov
@ 2021-12-30  0:07       ` Vladislav Zavjalov
  2021-12-30  0:12         ` Alexey Gladkov
  2021-12-30  0:28       ` Alexey Gladkov
  1 sibling, 1 reply; 12+ messages in thread
From: Vladislav Zavjalov @ 2021-12-30  0:07 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 02:52:04AM +0300, Vladislav Zavjalov wrote:
> On Wed, Dec 29, 2021 at 05:18:09PM +0100, Alexey Gladkov wrote:
> > Я могу сделать дамп (см. аттач), но я не могу понять как получить какой
> > модификатор используется для переключения layout. Переключатель есть
> > только в options и там много чего ещё есть. Более того, как-то странно
> > парсить руками эти опции.
> > 
> > Возможно я слаб в этой библиотеке и не нашёл как получить
> > XKB_KEY_Control_L для указанной конфигруации. Поэтому и решил спросить
> > тут.
> 
> Мне кажется, что надо искать все кнопки, в которых присутствует работа с
> группами: ISO_Next_Group, ISO_Prev_Group (и всякие LockGroup, LatchGroup
> с которыми я никогда не имел дела).
> 
> При этом приложенная программа явно не показывает всей картины:
> $ ./xkbcommon-dump-test | grep Group
> keycode  29 = | {English (US)} (Plain) ISO_Next_Group,

А я начал внимательнее читать код и понял, что это дамп
конфигурации с grp:lctrl_toggle
Тогда вот она evdev_keycode = 37, XKB_KEY_Control_L



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-30  0:07       ` Vladislav Zavjalov
@ 2021-12-30  0:12         ` Alexey Gladkov
  0 siblings, 0 replies; 12+ messages in thread
From: Alexey Gladkov @ 2021-12-30  0:12 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 03:07:44AM +0300, Vladislav Zavjalov wrote:
> On Thu, Dec 30, 2021 at 02:52:04AM +0300, Vladislav Zavjalov wrote:
> > On Wed, Dec 29, 2021 at 05:18:09PM +0100, Alexey Gladkov wrote:
> > > Я могу сделать дамп (см. аттач), но я не могу понять как получить какой
> > > модификатор используется для переключения layout. Переключатель есть
> > > только в options и там много чего ещё есть. Более того, как-то странно
> > > парсить руками эти опции.
> > > 
> > > Возможно я слаб в этой библиотеке и не нашёл как получить
> > > XKB_KEY_Control_L для указанной конфигруации. Поэтому и решил спросить
> > > тут.
> > 
> > Мне кажется, что надо искать все кнопки, в которых присутствует работа с
> > группами: ISO_Next_Group, ISO_Prev_Group (и всякие LockGroup, LatchGroup
> > с которыми я никогда не имел дела).
> > 
> > При этом приложенная программа явно не показывает всей картины:
> > $ ./xkbcommon-dump-test | grep Group
> > keycode  29 = | {English (US)} (Plain) ISO_Next_Group,
> 
> А я начал внимательнее читать код и понял, что это дамп
> конфигурации с grp:lctrl_toggle
> Тогда вот она evdev_keycode = 37, XKB_KEY_Control_L

Да, это дамп не текущей конфигурации, а заданной. По сути это эмуляция
входных параметров будущей реализации.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-29 23:52     ` Vladislav Zavjalov
  2021-12-30  0:07       ` Vladislav Zavjalov
@ 2021-12-30  0:28       ` Alexey Gladkov
  2021-12-30 10:25         ` Vladislav Zavjalov
  1 sibling, 1 reply; 12+ messages in thread
From: Alexey Gladkov @ 2021-12-30  0:28 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 02:52:04AM +0300, Vladislav Zavjalov wrote:
> On Wed, Dec 29, 2021 at 05:18:09PM +0100, Alexey Gladkov wrote:
> > Я могу сделать дамп (см. аттач), но я не могу понять как получить какой
> > модификатор используется для переключения layout. Переключатель есть
> > только в options и там много чего ещё есть. Более того, как-то странно
> > парсить руками эти опции.
> > 
> > Возможно я слаб в этой библиотеке и не нашёл как получить
> > XKB_KEY_Control_L для указанной конфигруации. Поэтому и решил спросить
> > тут.
> 
> Мне кажется, что надо искать все кнопки, в которых присутствует работа с
> группами: ISO_Next_Group, ISO_Prev_Group (и всякие LockGroup, LatchGroup
> с которыми я никогда не имел дела).
> 
> При этом приложенная программа явно не показывает всей картины:
> $ ./xkbcommon-dump-test | grep Group
> keycode  29 = | {English (US)} (Plain) ISO_Next_Group,
> 
> при том, что у меня
> 
> $ xmodmap -pk | grep Group
> 108         0xfe08 (ISO_Next_Group) 0xffe8 (Meta_R) 0xfe0c
>     (ISO_First_Group)        0xffe8 (Meta_R) 0xfe0c (ISO_First_Group)
>     0xffe8 (Meta_R)    0xfe0c (ISO_First_Group)
> 134         0xfe08 (ISO_Next_Group) 0xffe8 (Meta_R) 0xfe08
>     (ISO_Next_Group) 0xffe8 (Meta_R) 0xfe0c (ISO_First_Group)
>     0xffe8 (Meta_R)    0xfe0c (ISO_First_Group)        0xffe8
>     (Meta_R)
> 
> (у меня три группы и две кнопки, keycode 108 и 134: одна переключает все
> по кругу, 1->2->3->1->2->3, вторая - только две (3->)1->2->1->2)

Я пока даже не представляю как такое конвертировать в плоскую таблицу.
Скорее всего если такое будет вообще возможно, то придётся ставить
определённые ограничения, кроме очевидных keycode < 255, unicode < U+F000.

Но прежде всего сначала я хочу понять смогу ли я получить дамп keymap c
переключателями. Сама keymap вроде дампится и layouts есть, но вот
как получить переключатель между A и B я не нашёл пока. Я очень не хочу
парсить текстовые options.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-30  0:28       ` Alexey Gladkov
@ 2021-12-30 10:25         ` Vladislav Zavjalov
  2021-12-30 11:43           ` Alexey Gladkov
  0 siblings, 1 reply; 12+ messages in thread
From: Vladislav Zavjalov @ 2021-12-30 10:25 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 01:28:08AM +0100, Alexey Gladkov wrote:
> Я пока даже не представляю как такое конвертировать в плоскую таблицу.
> Скорее всего если такое будет вообще возможно, то придётся ставить
> определённые ограничения, кроме очевидных keycode < 255, unicode < U+F000.
> 
> Но прежде всего сначала я хочу понять смогу ли я получить дамп keymap c
> переключателями. Сама keymap вроде дампится и layouts есть, но вот
> как получить переключатель между A и B я не нашёл пока. Я очень не хочу
> парсить текстовые options.

А чем не устраивает строчка в дампе "keycode  29 = | {English (US)} (Plain)
ISO_Next_Group" ?

...

Но в целом мне такой проект не очень понятен. Во-первых, я вообще
люблю, когда система распадается на небольшие слабо взаимодействующие кусочки,
в каждом из которых "простой пользователь" может разобраться при желании.
Что можно настроить консоль, не зная ничего про X.
Во-вторых, раскладки - это такая повседневная и базовая вещь, в которой
не хочется резких изменений. Я уже давным-давно нашел чью-то раскладку,
которая мне нравилась (Crosser-Vovenko) и поправил ее, чтобы мне было удобно.
Поправил себе консольный шрифт (altc), чтоб хотя бы все русские буквы отличались
от английских и т.п. И зачем там какие-то изменения, тем более автоматические,
там более сделанные поверх существующей инфраструктуры - непонятно.

Понятна идея, что мы хорошо настраиваем xkb, а потом сделаем, чтобы в
консоли было точно так же. Но точно так же в общем случае не получится.
Например, если у кого-то layout=en,ru,fa - то такой шрифт в консоль не
загрузишь, и какой после этого смысл в правильном переключателе - непонятно.
И после этого смысл немного теряется.

С точки зрения собирателя дистрибутивов, наверное, хорошо где-то в
модуле альтератора иметь фиксированный список настроек xkb, и
соответствующий ему список консольных раскладок.
И, может быть, в этом месте как раз имеет смысл программа-конвертер, которая
сделает (или подберет из списка) более-менее хорошую настройку консоли для
разных вариантов настройки xkb.




^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-30 10:25         ` Vladislav Zavjalov
@ 2021-12-30 11:43           ` Alexey Gladkov
  2021-12-30 13:25             ` Vladislav Zavjalov
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Gladkov @ 2021-12-30 11:43 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 01:25:57PM +0300, Vladislav Zavjalov wrote:
> On Thu, Dec 30, 2021 at 01:28:08AM +0100, Alexey Gladkov wrote:
> > Я пока даже не представляю как такое конвертировать в плоскую таблицу.
> > Скорее всего если такое будет вообще возможно, то придётся ставить
> > определённые ограничения, кроме очевидных keycode < 255, unicode < U+F000.
> > 
> > Но прежде всего сначала я хочу понять смогу ли я получить дамп keymap c
> > переключателями. Сама keymap вроде дампится и layouts есть, но вот
> > как получить переключатель между A и B я не нашёл пока. Я очень не хочу
> > парсить текстовые options.
> 
> А чем не устраивает строчка в дампе "keycode  29 = | {English (US)} (Plain)
> ISO_Next_Group" ?

Я сначала не понял. На самом деле это именно то, что мне нужно.

> ...
> 
> Но в целом мне такой проект не очень понятен. Во-первых, я вообще
> люблю, когда система распадается на небольшие слабо взаимодействующие кусочки,
> в каждом из которых "простой пользователь" может разобраться при желании.
> Что можно настроить консоль, не зная ничего про X.

А это не совсем относится к Х. Это раньше оно было прибито к xlib, а
теперь это просто библиотека с базой раскладок.

$ rpmquery -R libxkbcommon
libc.so.6(GLIBC_2.14)(64bit)  
libc.so.6(GLIBC_2.17)(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libc.so.6(GLIBC_2.8)(64bit)  
libxml2.so.2()(64bit) >= set:ojEMWl9MZc1b88W3WxDrxiYtfBIp3cL1BVp5u00sqxoX28E7gjs0
rpmlib(SetVersions)  
libxml2.so.2(LIBXML2_2.4.30)(64bit)  
libxml2.so.2(LIBXML2_2.5.8)(64bit)  
rtld(GNU_HASH)  
rpmlib(PayloadIsLzma)  

Более того, моя идея состоит в том, чтобы добавить возможность работать с
xkb раскладками, а не заменить существующие keymaps.

> Во-вторых, раскладки - это такая повседневная и базовая вещь, в которой
> не хочется резких изменений. Я уже давным-давно нашел чью-то раскладку,
> которая мне нравилась (Crosser-Vovenko) и поправил ее, чтобы мне было удобно.
> Поправил себе консольный шрифт (altc), чтоб хотя бы все русские буквы отличались
> от английских и т.п. И зачем там какие-то изменения, тем более автоматические,
> там более сделанные поверх существующей инфраструктуры - непонятно.
> 
> Понятна идея, что мы хорошо настраиваем xkb, а потом сделаем, чтобы в
> консоли было точно так же. Но точно так же в общем случае не получится.
> Например, если у кого-то layout=en,ru,fa - то такой шрифт в консоль не
> загрузишь, и какой после этого смысл в правильном переключателе - непонятно.
> И после этого смысл немного теряется.
> 
> С точки зрения собирателя дистрибутивов, наверное, хорошо где-то в
> модуле альтератора иметь фиксированный список настроек xkb, и
> соответствующий ему список консольных раскладок.
> И, может быть, в этом месте как раз имеет смысл программа-конвертер, которая
> сделает (или подберет из списка) более-менее хорошую настройку консоли для
> разных вариантов настройки xkb.

Тут есть нюанс, который вы упускаете: раскладки для консоли не
комбинируются. Каждая из них содержит набор языков и переключателей,
которые посчитал удобными автор. Если вам нужно сочетание языков, которых
нет в базе, то нужно писать новую раскладку.

Гораздо проще указать что-то типа:

loadkeys --layout="en,ru" --options="grp:lctrl_toggle"

Если же хочется большего контроля, то всегда можно создать раскладку по
старому.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-30 11:43           ` Alexey Gladkov
@ 2021-12-30 13:25             ` Vladislav Zavjalov
  2022-02-12 23:06               ` Alexey Gladkov
  0 siblings, 1 reply; 12+ messages in thread
From: Vladislav Zavjalov @ 2021-12-30 13:25 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 12:43:17PM +0100, Alexey Gladkov wrote:
> А это не совсем относится к Х. Это раньше оно было прибито к xlib, а
> теперь это просто библиотека с базой раскладок.
...
> Гораздо проще указать что-то типа:
> 
> loadkeys --layout="en,ru" --options="grp:lctrl_toggle"

А, я понял. И это, пожалуй, кажется разумным. То есть, идея в том,
что loadkeys может загрузить раскладку из файла как обычно, а
может построить с помощью библиотеки xkb и соответствующих параметров.

Очень интересно будет потом почитать, какие нетривиальные
преобразования и ограничения потребовались при адаптации раскладки xkb.
Наверное, ничего плохого в этих ограничениях нет, если они понятны,
выводятся соответствующие ошибки т.п. Можно хоть двумя раскладками
ограничиться, если это все упростит - при 256-буквенном шрифте вряд ли
больше понадобится.

А еще, наверное, если на входе использовать только параметры --layout,
--options и т.п., без хитрых правок с помощью xmodmap, то многие из
ограничений в реальности и не встретятся...


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [devel] looking for xkbcommon experts
  2021-12-30 13:25             ` Vladislav Zavjalov
@ 2022-02-12 23:06               ` Alexey Gladkov
  0 siblings, 0 replies; 12+ messages in thread
From: Alexey Gladkov @ 2022-02-12 23:06 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Dec 30, 2021 at 04:25:53PM +0300, Vladislav Zavjalov wrote:
> On Thu, Dec 30, 2021 at 12:43:17PM +0100, Alexey Gladkov wrote:
> > А это не совсем относится к Х. Это раньше оно было прибито к xlib, а
> > теперь это просто библиотека с базой раскладок.
> ...
> > Гораздо проще указать что-то типа:
> > 
> > loadkeys --layout="en,ru" --options="grp:lctrl_toggle"
> 
> А, я понял. И это, пожалуй, кажется разумным. То есть, идея в том,
> что loadkeys может загрузить раскладку из файла как обычно, а
> может построить с помощью библиотеки xkb и соответствующих параметров.
> 
> Очень интересно будет потом почитать, какие нетривиальные
> преобразования и ограничения потребовались при адаптации раскладки xkb.
> Наверное, ничего плохого в этих ограничениях нет, если они понятны,
> выводятся соответствующие ошибки т.п. Можно хоть двумя раскладками
> ограничиться, если это все упростит - при 256-буквенном шрифте вряд ли
> больше понадобится.
> 
> А еще, наверное, если на входе использовать только параметры --layout,
> --options и т.п., без хитрых правок с помощью xmodmap, то многие из
> ограничений в реальности и не встретятся...

На самом деле код выглядит не настолько ужасно как я думал. Работают до
4-х языков.

Для первой версии не хватает compose, которые xkbcommon не позволяет
сдампить. Я поговорил с авторами и когда они расширят api для compose, то
можно быть доделать.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-02-12 23:06 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-29 14:03 [devel] looking for xkbcommon experts Alexey Gladkov
2021-12-29 16:18   ` Alexey Gladkov
2021-12-29 23:52     ` Vladislav Zavjalov
2021-12-30  0:07       ` Vladislav Zavjalov
2021-12-30  0:12         ` Alexey Gladkov
2021-12-30  0:28       ` Alexey Gladkov
2021-12-30 10:25         ` Vladislav Zavjalov
2021-12-30 11:43           ` Alexey Gladkov
2021-12-30 13:25             ` Vladislav Zavjalov
2022-02-12 23:06               ` Alexey Gladkov
2021-12-29 23:16 ` Leonid Krivoshein
2021-12-29 23:31   ` Alexey Gladkov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git