Just a few quick notes: - I have just retried to integrate my 'setkey' and 'setnumpad' commands into my input terminal module, and it works. I have no idea what I did wrong when I tried it earlier on, but it obviously must have been something silly. - The INT16H/10H extended keyboard input call, used by my input terminal module, is not powerful enough to fully support a keymap. For instance, the Belgian keyboard layout uses quite a few <AltGr> (or <RightAlt>) key combinations for various characters, and the call doesn't distinguish between <LeftAlt> and <RightAlt>. Furthermore, not all keys report their <Alt> combination. As a result, under the Belgian keyboard layout, there would be no way to input, for example, a backslash character. Of course, my 'setkey' command runs into similar problems, so that is not a perfect solution either. - Since it's a bit silly to replace one not entirely satisfying solution with another, I will not further pursue a solution that is based upon my input terminal modules; that really seems somewhat like a waste of time. Instead, I'll try and find out what is going wrong with 'at_keyboard', and see if I can fix it. - In any case, I can continue to use my input terminal for now, until I can work out a better option.
2015-07-12 14:25 GMT+02:00 Luc Van Rompaey <luc.vanromp...@gmail.com>: > > 2015-07-12 12:03 GMT+02:00 Andrei Borzenkov <arvidj...@gmail.com>: > >> В Sat, 11 Jul 2015 20:28:20 +0200 >> Luc Van Rompaey <luc.vanromp...@gmail.com> пишет: >> >> > Legacy GRUB had a 'setkey' command to remap the keyboard keys. >> > GRUB2 no longer has this command. Instead, it provides an 'at_keyboard' >> > input terminal module, which can load a GRUB keymap. >> > Unfortunately, at least on the i386-pc platform, 'at_keyboard' is >> problematic, >> > in that it easily causes hangups. >> > >> >> Do you have some more data? Fixing it would be preferable. >> >> For starters, the first keystroke after I activate 'at_keyboard', will > not get processed, even though the countdown until automatic boot will get > stopped. > Further keystrokes are something of a hit-and-miss, until the system no > longer responds to keyboard input. > At that point, either some kind of crash will happen, after which the > computer reboots, or I need to perform a hard reset (power cycle). > > If I do get to the point where I can chainload another GRUB copy (with a > default config as automatically generated under, e.g., Debian or Ubuntu), > then apparently, the keystrokes that didn't get processed earlier on, > suddenly seem to be run, ... after which the system locks up, and a hard > reset is, again, required. > > I would love to fix the 'at_keyboard' issue, and I will if I can. I cannot > at this point promise anything, though. Plus, something less convoluted is > a great exercise to get a feel for the GRUB code. > > > For now, I'm unsure what needs to be done to fix 'at_keyboard', which is >> why >> > I decided to look for a different solution. Whether I can fix the >> 'at_keyboard' >> > input terminal, and in what time frame, remains to be seen. >> > >> > This patch set reintroduces a 'setkey' command, to support changing the >> keyboard >> > map, similarly to what was possible under Legacy GRUB. >> > >> >> GRUB2 already has framework for custom keyboard layouts. Why not reuse >> grub_term_map_key() from keylayouts same as at_keyboard and >> usb_keyboard do? Map scan code to GRUB_KEYBOARD_* and let >> grub_term_map_key() to care about keyboard mapping. This has additional >> advantage of supporting localized keyboard tables (your approach does >> not, it only changes ASCII layouts). > > > Hmm... good idea. I'll look into this. Thanks for the pointer. > > >> > The first patch just makes a simple edit to a comment line in the >> 'memory.h' >> > header file. It updates the URL for the 'bios_data_area.html' web >> page, which >> > contains helpful information about BIOS, and specifically, the keyboard >> > interface. >> > >> >> You already sent this one, it hardly belongs to this patch series. >> > > Sorry about that. > >> >> > The second patch implements the 'nusetkey' module, which provides the >> 'setkey' >> > command. In addition, it provides a 'setnumpad' command, to change the >> > behavior of the numeric keypad. >> > >> >> Why NumLock is not sufficient? >> > > NumLock is 'sufficient' in that it works. > I implemented the 'always output numeric character' feature because I find > it annoying that the numeric keypad doesn't produce numeric characters by > default. > The BIOS of my laptop doesn't offer me the option of automatically turning > NumLock on, which is an added annoyance. > And, last but not least, my laptop doesn't have a NumLock LED, so I cannot > even visually verify if NumLock is on or off. > > I use the numeric keypad only ever to get numeric characters anyway (which > is what it should be there for in the first place, in my not so humble > opinion), and since the feature was pretty easy to implement, I decided to > go for it. > >> >> > The third patch implements the 'nuconsole' input terminal, which works >> in >> > conjunction with the 'nusetkey' module to support keyboard map changes. >> > >> >> Making them two different modules in your case is pointless; nuconsole >> cannot work without nusetkey and nusetkey is used only by nuconsole. >> > > I won't disagree that it seems pointless. > In fact, I initially wanted to integrate all of my code in one module, but > that didn't work. > I got some kind of error about some out-of-memory or table-full condition, > or some such (don't remember exactly; failed to take notes). > It seemed to me that terminal input and/or output modules couldn't provide > their own commands. > I may be wrong, though, in which case I must have done something awfully > stupid. > > >> Also, something like ext_keyboard would probably be more appropriate. >> > > Agreed.. will go for the 'ext_keyboard' name. > >> >> > Finally, the fourth patch provides updates to the GRUB manual. >> > It documents the 'keymap' command (which loads a keyboard map for use by >> > the 'at_keyboard' or 'usb_keyboard' input terminals), plus the 'setkey' >> and >> > 'setnumpad' commands implemented by the 'nusetkey' module. >> > >> > Luc Van Rompaey (4): >> > update URL to bios_data_area.html on comment line >> > implement the nusetkey module >> > implement the nuconsole input terminal >> > add documentation for keymap, setkey, and setnumpad commands >> > >> > docs/grub.texi | 150 +++++++++ >> > grub-core/Makefile.core.def | 12 + >> > grub-core/commands/i386/pc/nusetkey.c | 583 >> ++++++++++++++++++++++++++++++++++ >> > grub-core/term/i386/pc/nuconsole.c | 111 +++++++ >> > include/grub/i386/pc/memory.h | 2 +- >> > include/grub/i386/pc/nusetkey.h | 25 ++ >> > 6 files changed, 882 insertions(+), 1 deletion(-) >> > create mode 100644 grub-core/commands/i386/pc/nusetkey.c >> > create mode 100644 grub-core/term/i386/pc/nuconsole.c >> > create mode 100644 include/grub/i386/pc/nusetkey.h >> > >> >> >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel