Le sam. 9 mars 2024 à 21:17, Samuel Thibault <[email protected]> a
écrit :
> Hello,
>
> > 19 files changed, 547 insertions(+), 5803 deletions(-)
>
> Yay, nice cleanup :D
>
> Did you try to run Xorg with this patch applied?
>
No I have not configured an X client on my VM, I can try
>
> Did you check that it builds when xkb_common is not available?
>
No, will do
> Did you try to use compose?
>
No, I only tested the default
> Do you have a patch for debian's /etc/default/hurd-console file?
>
I will create one
> Etienne Brateau, le sam. 09 mars 2024 01:48:34 +0100, a ecrit:
> > diff --git a/console-client/pc-kbd.c b/console-client/pc-kbd.c
> > index aa5f1103..8ca36793 100644
> > --- a/console-client/pc-kbd.c
> > +++ b/console-client/pc-kbd.c
> > @@ -805,30 +799,17 @@ input_loop (void *unused)
> > {
> > keypress_t key;
> >
> > - key.keycode = read_keycode () + min_keys;
> > - key.rel = key.keycode & 0x80;
> > - key.redir = 0;
> > -
> > - if (!key.rel && key.keycode == prevkey)
> > - key.repeat = 1;
> > - else
> > - key.repeat = 0;
> > + keycode_t raw_keycode = read_keycode () + get_min_keycode();
> > + key.keycode = raw_keycode & ~0x80;
> > + key.rel = raw_keycode & 0x80;
> >
> > - if (key.repeat)
> > + /* don’t allow repeated key */
> > + if (raw_keycode == prevkey)
> > continue;
>
> You can move this above filling key.
>
> > - {"xkbdir", 'x', "DIR", 0,
> > - "Directory containing the XKB configuration files" },
> > - {"keymapfile", 'f', "FILE", 0,
> > - "File containing the keymap" },
> > - {"keymap", 'k', "SECTIONNAME" , 0,
> > - "Choose keymap"},
> > + {"model", 'm', "XKB_MODEL", 0,
> > + "the keyboard model for xkb" },
> > + {"layout", 'l', "XKB_LAYOUT", 0,
> > + "The layout of the keyboard" },
> > + {"variant", 'v', "XKB_VARIANT" , 0,
> > + "The variant to use"},
> > + {"options", 'p', "XKB_OPTIONS" , 0,
> > + "The xkb options"},
> > {"compose", 'o', "COMPOSEFILE", 0,
> > "Compose file to load (default none)"},
> > {"ctrlaltbs", 'c', 0 , 0,
> > @@ -1235,17 +1219,21 @@ parse_opt (int key, char *arg, struct argp_state
> *state)
> > {
> > #ifdef XKB_SUPPORT
> > case 'x':
>
> This should be made 'm'?
>
Yes, I need to change to 'm'
> > diff --git a/console-client/xkb/xkb.c b/console-client/xkb/xkb.c
> > index f0c36a64..5046c747 100644
> > --- a/console-client/xkb/xkb.c
> > +++ b/console-client/xkb/xkb.c
> > +int
> > +execute_action(keycode_t keycode)
> > {
> [...]
> >
> > - if (actioncompl == KEYCONSUMED && !key.rel)
> > + if (xkb_state_mod_name_is_active (state, XKB_MOD_NAME_ALT,
> XKB_STATE_MODS_EFFECTIVE) > 0)
> > {
>
> The values for XKB_KEY_F1 ... XKB_KEY_F35 are fixed and happen to be
> consecutive, so you can factorize these:
>
> > /* Special key, generate escape sequence. */
> > char *escseq = NULL;
> >
> > switch (input)
> > {
> > - case XK_Up: case XK_KP_Up:
> > - escseq = CONS_KEY_UP;
> > + case XKB_KEY_Up:
> > + case XKB_KEY_KP_Up:
> > + escseq = CONS_KEY_UP;
>
> The GNU coding standard says it's to be like it was before:
>
> {
> case XKB_KEY_Up:
> case XKB_KEY_KP_Up:
> escseq = CONS_KEY_UP;
> break;
>
> and similar for the rest.
>
ok changing it
>
> > @@ -1323,60 +446,138 @@ xkb_input (keypress_t key)
> > {
> > char *buffer = &buf[size];
> > size_t left = sizeof (buf) - size;
> > - char *inbuf = (char *) &input;
> > - size_t inbufsize = sizeof (wchar_t);
> > - size_t nr;
> > + int nr;
> >
> > /* Control key behaviour. */
> > + if (xkb_state_mod_name_is_active (state, XKB_MOD_NAME_CTRL,
> XKB_STATE_MODS_EFFECTIVE) > 0)
> > + {
> > + input = symtoctrlsym (input);
> > + buffer[0] = input;
> > + buffer[1] = '\n';
>
> Why \n?
>
Fails of me, wanted to put '\0'
>
> Samuel
>