From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1N0S8h-0001pJ-Cq for mharc-grub-devel@gnu.org; Tue, 20 Oct 2009 23:45:31 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N0S8g-0001oQ-5f for grub-devel@gnu.org; Tue, 20 Oct 2009 23:45:30 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N0S8b-0001ju-Dc for grub-devel@gnu.org; Tue, 20 Oct 2009 23:45:29 -0400 Received: from [199.232.76.173] (port=50117 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N0S8b-0001jl-AL for grub-devel@gnu.org; Tue, 20 Oct 2009 23:45:25 -0400 Received: from mail-px0-f192.google.com ([209.85.216.192]:40234) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N0S8a-0001jP-Rg for grub-devel@gnu.org; Tue, 20 Oct 2009 23:45:25 -0400 Received: by pxi30 with SMTP id 30so276862pxi.14 for ; Tue, 20 Oct 2009 20:45:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=QQ1c+rU1Qireblv8bdoo0k0JpSQz8VkCVaz5u/E+Sks=; b=d0IyBuocFA/H+G0tx7xwyFdQb1M4PsI+HdM6Aqa/LWi/79Et1aeeLOWyZyir/6ktYc Zicpb4zGtddGUhxLBIXRAOYsB75XFUVyNhZYLKEl3LIzTbM/i5SKbWNeVH0b61CyeeSR QC779x6xQyfmPjOWfw4C1eT8g68a18zoDy8Rk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=sOEMnl+zD8Zumd/e/ke7entlV1wMCx36c8B85vcVaOOHWujjBFLHAGBFYMIAu1mmEP k0CFQSreAMrPk2BML6dSB/bvK6heLpZ3Zq2jTzBvkv0BZ0+Zrc6/z18L2dC3O0HWSsa6 FOKCZL5djOFgjd5h13z6fnQzKbMaRrsGa1Ezg= MIME-Version: 1.0 Received: by 10.141.22.2 with SMTP id z2mr1662702rvi.122.1256096723773; Tue, 20 Oct 2009 20:45:23 -0700 (PDT) In-Reply-To: References: Date: Wed, 21 Oct 2009 11:45:23 +0800 Message-ID: From: Bean To: The development of GRUB 2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: Re: [GITGRUB] New menu interface (implementation) X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Oct 2009 03:45:30 -0000 On Wed, Oct 21, 2009 at 3:20 AM, Michal Suchanek wrot= e: > 2009/10/18 Bean : >> Hi, >> >> Update: >> >> Add mapkey section. For example: >> >> mapkey { >> =A0f5 =3D ctrl-x >> } > > Does this also generate a mapkey text which you can dump into a text > box so that people know what is mapped to what (and the same for the > default bindings and grub version/last git commit)? > > Wouldn't it be more practical and transparent to just make the > mappings configurable? > > That is write the current mappings as key->function assignments and > then allow change mappings / add new mappings. > >> >> maps f5 key to ctrl-x, this is important for platforms like EFI as >> ctrl-x can't be input. >> >> key name should be lowercase, it can be single character, f1 to f10, >> ctrl-a to ctrl-z, left, right, up, down, home, end, delete, page_up, >> page_down, esc, tab, backspace and space. >> >> Add onkey section, which allow you to assign a function when a key is >> pressed. For example ,this is the onkey section for the demo: >> >> onkey { >> =A0c =3D "menu_popup term_window" >> =A0e =3D "menu_popup edit_window edit.text=3Dcommand" >> =A0f7 =3D "menu_popup layout_test" >> =A0f8 =3D menu_toggle_mode >> =A0f9 =3D halt >> =A0f10 =3D reboot >> } > > This should be merged with the mapkey into a single key mapping function. > Hi, The difference of mapkey and onkey is when they're executed. The order is as follows: mapkey onkey function of current widget key binding in onkey section For example in the edit widget, you use ctrl-x to finish current edit. But in EFI, you can't input ctrl-x. The way to solve this is to map another key as ctrl-x, which use mapkey function. Adding function in onkey doesn't help, as by the time it reaches there, the edit widget has finish handling. Also, if the key is used by widget, the binding in onkey doesn't help. This is actually a good thing, for example, we can add hotkey c to open a terminal window. This has effect on main menu, but we certainly don't want it when inside term already. But if we do need to change a key used by widget, we can map it in mapkey section. >> >> c open a terminal window, e open a edit box to edit the current >> command, use ctrl-x to save it. f7 runs the layout demo test, f8 >> toggle between text and graphic mode, f9 shutdown, f10 reboot. >> >> Data binding for popup windows, for example, in the above example, >> >> menu_popup edit_window edit.text=3Dcommand >> >> property text in the edit widget in the popup dialog binds to the >> command property of current node, this is used to implement the edit >> function. >> >> Add two property attach_hcenter and attach_vcenter for layout manager. > > What is the actual use case for windows which are not managed in the > layout and thus potentially overlap other windows in a system where > window overlapping is not handled? Popup window. For example, the e hotkey popup a edit box to edit current command. The top window of popup is placed in screen directly and not controlled by layout manger. > >> The top widget of popup window must use absolute position, as widget >> are already placed in screen and can't be moved without refresh. But >> it's not easy to put the widget in the middle of screen using >> attach_left/right/top/bottom, the new property attach_hcenter and >> attach_vcenter defines the offset from the center of screen. > > Can't you just make the popup fullscreen? > > IMHO it rids us of quite a few things =A0that allow people to shoot > themselves in the foot and require documentation and maintenance while > not removing anything particularly useful. You can configure the sub menu to pop up full screen. But I like it alongside the parent menu. IMO, this is the most common way to display a submenu. --=20 Bean gitgrub home: http://github.com/grub/grub/ my fork page: http://github.com/bean123/grub/