On 02.10.2013 10:50, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
>>* Hi, there*
>>* *
>>*   I had merged the patch for enabling hotkey in grub silent mode to*
>>* grub-trunk.*
>>*   The --function-key now has been removed from sleep.mod, now sleep.mod 
>>will*
>>*   monitor all function keys, delete, tab and backspace.*
>>* *
> Have you missed on-going opposition, discussion and improvement
> proposals from me?
> I was going to revert the patch but found out that you didn't actually
> commit it, please see my comments to make it acceptable and don't push it.

Sorry I did not say it clearly, I downloaded sources from grub-trunk,
add my changes,
and finished the patch file. I haven't committed the patch to trunk yet.

I looked at the codes, there is no ungetkey function to do like
ungetc. So currently
I made it to read all keys but only accept function keys / delete /
backspace and Esc
keys to interrupt the sleep thread.

Only function keys / delete key / backspace key are allowed for hotkey
and will be saved to the hotkey environment variable.



On Wed, Oct 2, 2013 at 4:03 PM, Franz Hsieh <franz.hs...@canonical.com>wrote:

> Hi, there
>
>   I had merged the patch for enabling hotkey in grub silent mode to
> grub-trunk.
>   The --function-key now has been removed from sleep.mod, now sleep.mod
> will
>   monitor all function keys, delete, tab and backspace.
>
> Thanks!
>
> Franz Hsieh
>
>
> On Fri, Sep 13, 2013 at 5:18 PM, Franz Hsieh <franz.hs...@canonical.com>wrote:
>
>>
>>
>>
>> On Wed, Sep 11, 2013 at 9:31 PM, Colin Watson <cjwat...@ubuntu.com>wrote:
>>
>>> Hi Franz,
>>>
>>> Throughout this patch, please take care to adhere to the GRUB coding
>>> style.  This is definitely an improvement over previous versions I've
>>> reviewed, but it still has a number of places where functions are called
>>> or declared with no space before the opening parenthesis.  That is,
>>> "function()" should become "function ()".  I know it's a minor point,
>>> but it makes code much easier to read when it's all in the same style.
>>>
>>> On Wed, Sep 11, 2013 at 02:18:04PM +0100, Franz Hsieh (via Colin Watson)
>>> wrote:
>>> > +static struct
>>> > +{
>>> > +  char *name;
>>> > +  int key;
>>> > +} function_key_aliases[] =
>>> > +  {
>>> > +    {"f1", GRUB_TERM_KEY_F1},
>>> > +    {"f2", GRUB_TERM_KEY_F2},
>>> > +    {"f3", GRUB_TERM_KEY_F3},
>>> > +    {"f4", GRUB_TERM_KEY_F4},
>>> > +    {"f5", GRUB_TERM_KEY_F5},
>>> > +    {"f6", GRUB_TERM_KEY_F6},
>>> > +    {"f7", GRUB_TERM_KEY_F7},
>>> > +    {"f8", GRUB_TERM_KEY_F8},
>>> > +    {"f9", GRUB_TERM_KEY_F9},
>>> > +    {"f10", GRUB_TERM_KEY_F10},
>>> > +    {"f11", GRUB_TERM_KEY_F11},
>>> > +    {"f12", GRUB_TERM_KEY_F12},
>>> > +  };
>>> > +
>>>
>>> This is essentially a copy of hotkey_aliases from
>>> grub-core/commands/menuentry.c, and there's duplicated lookup code as
>>> well.  Can you find any way to share it?  Since we certainly don't want
>>> to put this in the kernel, and neither the sleep module nor the normal
>>> module really ought to depend on the other, I suspect that doing so
>>> would require a new module for shared menu code, which may well be
>>> overkill for this, but it's worth a look.
>>>
>>
>> I also agree to remove duplicate code, but seems not easy to do it unless
>> we have a shared module, right? Well it would take me some time to
>> evaluate.
>>
>> At the very least it would be a good idea to bring the contents of this
>>> structure into sync with hotkey_aliases and add comments to encourage
>>> developers to keep them that way.
>>>
>>> I think we should also call this kind of thing simply "hotkey"
>>> consistently across the code, rather than it sometimes being
>>> "function_key" or "fnkey".
>>>
>>
>>
>>>
>>> > +      if (key == fnkey)
>>> > +     {
>>> > +       char hotkey[32] = {0};
>>> > +       grub_snprintf(hotkey, 32, "%d", key);
>>> > +       grub_env_set("hotkey", (char*)&hotkey);
>>> > +       return 1;
>>> > +     }
>>>
>>> We've generally tried to get rid of this kind of static allocation.  Use
>>> grub_xasprintf instead:
>>>
>>>   if (key == fnkey)
>>>     {
>>>       char *hotkey = grub_xasprintf ("%d", key);
>>>       grub_env_set ("hotkey", hotkey);
>>>       grub_free (hotkey);
>>>       return 1;
>>>     }
>>>
>>> > +int
>>> > +grub_menu_get_hotkey (void)
>>>
>>> This function is only used in this file, so it should be static.
>>>
>>
>> These idea are good and I will do these changes in my patch.
>>
>> Rather than having to configure this explicitly, I have an alternative
>>> suggestion, which ties into my earlier suggestion of making the hotkey
>>> code a bit more shared.  Why not have sleep --interruptible look up the
>>> hotkeys configured in the menu and automatically honour any of those?
>>> That way you wouldn't have to configure hotkeys in two places (grub.cfg
>>> and /etc/default/grub).  Plus, I'm always more comfortable with patches
>>> that don't require adding configuration options.
>>>
>>
>> Agree with Colin's points and I will update the patch.
>> By the way I would like to combine --function-key and --interruptible. I
>> think
>> it is a simple way that sleep.mod always checks ESC for interrupt and
>> f1~f12 for the
>> hotkey.
>>
>> Thanks for your reviews and if there is any good suggestion, please feel
>> free to tell me.
>>
>> Regards,
>> Franz Hsieh
>>
>>
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to