##(see the SpecSpec for an explanation) ''Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.'' * '''Launchpad Entry''': UbuntuSpec:hardy-console * '''Packages affected''': `console-tools`, `kbd`, `console-setup`, kernel == Summary == The switch to console-setup in 6.10 went quite well, but our console handling needs some further improvements. == Release Note == A number of bugs in the virtual console system have been fixed. In particular, switching to X and back to the console now reliably preserves the console font. == Rationale == This specification cleans up a variety of bugs in the console layer, as part of the Hardy quality and robustness drive. == Use Cases == * A speaker of a non-English language needs a different console font in order to display all the characters in his native language. When he switches to X and back to the console, the font should be preserved. == Design == === console-tools to kbd === The `console-tools` package is a modified version of `kbd` that has been maintained by Debian for some time. Recently (over the last year or so), maintenance of `console-tools` has fallen away and the `kbd` package has become maintained reasonably well again. Certain fonts are not supported by `console-tools` and require `kbd`. While Debian has not yet switched to `kbd` by default, it does not yet use `console-setup` either (to which we switched in Ubuntu 6.10), and `console-setup` strongly recommends `kbd`. We will switch to `kbd` by default, which requires a brief audit of Ubuntu patches to `console-tools`, changing `localechooser` to install `kbd`, and switching their priorities in the archive. === Kernel console font handling === The `vgacon` driver does not save the console font anywhere other than video memory, which means that it cannot restore the console font when switching back from graphics mode and userspace programs such as usplash and X need to deal with this themselves; some X drivers fail to do this correctly. This is clearly suboptimal and consensus appears to be that `vgacon` should instead save and restore the font itself rather than requiring userspace to do it. The best place to do this seems to be in the `vgacon_switch` function. We will check `fbcon` to ensure that it does not suffer from this problem. (There are other console drivers, but they are not interesting here.) === console-setup internationalisation === `console-setup`'s debconf interaction [[https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/127528|should be fixed to be localisable]]; this work should be done in d-i upstream in order to take advantage of their translation infrastructure. At present, the model, layout, variant, and fontface questions are not marked translatable and may not necessarily handle distinguishing translated from untranslated text where appropriate. BryceHarrington has volunteered to work on this. === loadkeys compatibility fix === The `loadkeys` program used to support invocations such as `loadkeys gb` to select a British keyboard layout, but [[https://launchpad.net/bugs/83487|no longer does]]. Since this facility was convenient, we should reinstate it. In the case where `loadkeys` fails to find a keymap (in `console-tools/kbdtools/loadkeys.y:yywrap` or `kbd/src/loadkeys.y:yywrap`), it can fall back to using the output of `ckbcomp -model pc105 LAYOUT VARIANT`. `LAYOUT` and `VARIANT` will be gleaned from the keymap specified on the command line (the newly-invented syntax being `LAYOUT[:VARIANT]`). This will not provide perfect compatibility since some keymap names have changed, but it should be good enough for most purposes. '''[Done in console-tools 1:0.2.3dbs-65ubuntu6 and kbd 1.12-19ubuntu2.]''' == Test/Demo Plan == It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during CD testing, and to show off after release. This need not be added or completed until the specification is nearing beta. ---- CategorySpec