Global Hotkey support

In addition to defining a menu entry hotkey by using a .txt file, you can define global hotkeys in the MyE2B.cfg file which will act on all menus.

As soon as the user presses a hotkey (e.g. presses the F4 key) in any menu, the command assigned to the F4 hotkey will immediately run.

Some examples can be found in the \_ISO\Sample_MyE2B.cfg files.

Avoid using SHIFT+ P, C, E or B for hotkeys as these are used by grub4dos for password entry and editing, etc.  

Also, for global hotkeys it is also best to avoid using the  CTRL key (e.g. don't use CTRL+F4 to run an ISO from a hotkey because the Ctrl key may modify the behaviour of the ISO when it runs - e.g. some linux ISOs).

Note: Not all key combinations can be used as the keyboard does not generate a scan code for certain combinations (e.g. Ctrl+3). See here for a list.


Run any .iso or payload file from a hotkey

For instance, set up the F11 hotkey to always run a the Ubuntu Live ISO (or any ISO file) from any menu, by adding the line below to your \_ISO\MyE2B.cfg file:

(bd)/%grub%/hotkey [F11] "(bd)/%grub%/qrun.g4b force.isodefault  (bd)/_ISO/MyUbuntu.iso ;; boot" > nul


Note that using F11 and F12 as hotkeys may not always work on some notebooks because the keyboard scan codes may vary! Using F1-F10 should be OK.

Global hotkeys do not use a menu entry and so are invisible to the user. If you want the user to know what they are, add text to the HELPTEXT variable in the MyE2B.cfg file or to your background bitmap. The hotkeys that you define will be active for all the menus. See \_ISO\docs\Templates\TextMinimal\MyE2B.cfg for an example.

Another example press SHIFT+F2 to boot to Hirens:

(bd)/%grub%/hotkey [Shift+F2] "(bd)/%grub%/qrun.g4b (bd)/_ISO/Hirens.isowinvh ;; boot" > nul

When a hotkey is pressed, the commands will be executed. If you don't want  any grub4dos messages to be displayed, precede the command list with @ - e.g.

(bd)/%grub%/hotkey [Shift+F2] "@(bd)/%grub%/qrun.g4b (bd)/_ISO/Hirens.isowinvh ;; boot" > nul


Run a .mnu file from a hotkey

If you want to set up a .mnu file to run from a hotkey (e.g. you run a linux Mint ISO with persistence using the linuxmint-17-mate-32bit-v2.mnu menu file) it is a little more tricky!
Suppose you already have a working iso and .mnu file in the \_ISO\LINUX\Linux folder
and you want to set up the F4 key to run the .mnu file so you can run Mint with persistence just by pressing F4 in any E2B menu:
1. Make a copy of the .mnu file in the \_ISO folder (any file name will do), e.g.
2. Edit the new file as follows:
   a. Delete the line beginning with title or iftitle (e.g. comment it out with #)
   b. Change any occurrences of $HOME$ to the path of the ISO file
   c. Change any occurrences of $NAME$ to the name of the ISO file
Example: The lines in red below have been edited:
iftitle [if exist $HOME$/linuxmint-17-mate-32bit-v2.iso] Mint\n Boot using .mnu file with persistence
set ISO=linuxmint-17-mate-32bit-v2.iso
set PER=/mint-rw
if exist CD echo WARNING: Cannot use partnew command! && pause && configfile (bd)/menu.lst
if "%E2BDEV%"=="" set E2BDEV=hd0 && pause E2BDEV forced to hd0!
#enable parttype output
debug 1
# make empty table entry in 3rd position in ptn table
parttype (%E2BDEV%,2) | set check=
debug off
set check=%check:~-5,4%
if "%check%"=="0x00" partnew (%E2BDEV%,2) 0 0 0
if not "%check%"=="0x00" echo WARNING: PTN TABLE 3 IS ALREADY IN USE - PERSISTENCE MAY NOT WORK! && pause
debug 1
if not exist %PER% echo WARNING: %PER% persistence file not found! && pause
errorcheck off
if "%check%"=="0x00" partnew (%E2BDEV%,2) 0x0 %PER%
errorcheck on
#map ptn 4 to ISO
partnew (%E2BDEV%,3) 0x0 /_ISO/LINUX/Linux/%ISO%
map /_ISO/LINUX/Linux/%ISO% (0xff)
map --hook
root (0xff)
errorcheck on
kernel /casper/vmlinuz file=/cdrom/preseed/linuxmint.seed boot=casper persistent
# quiet splash --
initrd /casper/initrd.lz
3. Add the hotkey entry to the \_ISO\MyE2B.cfg file:
(bd)/%grub%/hotkey [F4] "configfile (bd)/_ISO/F4.mnu" > nul
You can now press F4 in any menu (or whilst E2B is booting) and it will immediately run your .mnu file.


Note for Advanced tweakers only!

Any global hotkey that is set, will exist for ALL menus and you cannot change or remove a hotkey command unless you add a new hotkey command to the top of a menu .hdr or .lst file so that it is executed when that menu loads or add a .mnu file that is loaded first (e.g. starts with $$$ so it is added before other payload and .mnu files)

For example: If you want F11 to automatically run Ubuntu when you are in the LINUX menu, but do not want the menu entry to be visible in the menu, 

1. Create a \_ISO\LINUX\$$$HotkeyUbuntu.mnu file containing this single line of text:

(bd)/%grub%/hotkey [F11] "(bd)/%grub%/qrun.g4b force.isodefault  /_ISO/MyUbuntu.iso ;; boot" > nul

2. Add your MyUbuntu.iso file to the \_ISO folder.

Note that once the Linux menu is loaded, the F11 hotkey will now work in every menu unless you redfine the hotkey or clear it. For instance, if you added  (bd)/%grub%/hotkey [F11] > nul to a new .mnu file in the \_ISO\$$$$CONFIG folder, then when the Main menu was loaded, the F11 hotkey would be cleared.

Tip: You can define a global hotkey in the \_ISO\MyE2B.cfg file which will work in all menus.