bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

console status


From: Marcus Brinkmann
Subject: console status
Date: Fri, 6 Sep 2002 04:43:57 +0200
User-agent: Mutt/1.4i

Hi,

here is your friendly status update on the console.  I uploaded a new tar
file (84911) to alpha.gnu.org, so you can grab it there in a couple of
minutes if you are interested.

The main new features in this version compared to the previous one are:

* PC keyboard support!  Well, I put in a small driver I wrote myself (mmmh,
  the list of scan codes is from colortext, which got it from a book
  itself).  The keyboard layout is that of an US keyboard.  Don't complain ;)
  The unicode characters I put in (Right Alt + c resp e) don't seem to work,
  but everything else does, including cursor keys and other special keys.
  Alt, Ctrl, Shift are all implemented, but Caps Lock and Num Lock aren't. 

  I know I promised xkb, but that is so heavy that I postpone it for later. 
  After all, digging around in the X sources isn't so much fun.  But it will
  come, it's just that I need to finish up some lose ends here and there in
  the rest of the code before, and until then a functional keyboard might come
  in handy.

* Plugin support!  Ok, I am lying.  It is almost there.  Internally, it
  already is all about pluggable drivers, but currently they have to be
  compiled in.  Anyway, even the internal drivers are accessed by
  dlopen/dlsym, and that shows you that it is only the matter of adding a few
  rules to the Makefile and about 5 lines of code to the module loader to
  use a filename of a plugin instead NULL in dlopen() to make it work.

  There are two modules so far: "vga" and "pckbd".
  There are three types of driver components modules can install: display,
  input and bell.  The vga driver installs a display component.  The pckbd
  driver installs an input component.  So far there is no driver for a bell
  component, sorry (it is easy to write, though).

  For later, the idea is to be able to run the program like this:
  console --driver vga --mode 80x43 --driver pckbd --layout de_DE --driver 
pcspeaker
  or
  console --driver ncursesw --driver vibrator-in-pants
  (Yes, this means that utils/console-ncursesw will go)
  of course with the usual short cuts like reasonable defaults and meta
  configuration (maybe from a configuration file).

  Note also that the plugin system is designed to be dynamic.  That means
  that you will be able to load and unload drivers at runtime.  I envision
  that at some time the libcons library comes with support for an on-screen
  configuration menu like you know it from monitors, and that you can use
  that to configure various aspects of the library, the console client and the
  loaded drivers.

So, in total, what works and what is missing?  Well, here is what works:
You can start the client with the path of a console server, and it will be
able to display the first console and update it when it changes on your VGA
card.  You can enter input on your PC keyboard, and it will correctly be
processed, so that if you have a shell or getty on the console server, you
can really use it!  You can view up to 256 different unicode characters in
your font at the same time, with all 16 colors.  You can end the console
client with CTRL+ALT+BACKSPACE (just like X), and it will terminate.

What does not work:
If you terminate it, the original font, colors and screen content will NOT
be restored.  Your VGA card is now pretty much messed up, congratulations ;)
The code to restore everything is mostly there, it's just that the input
driver doesn't invoke it before exiting.  This will need a better framework.
Console switching doesn't work.  Last time I tried to make it work it
didn't, and since I wrote the plugin code I didn't try.  This is high
priority of course, next version should have it.  All the bugs and little
problems I reported earlier are probably still there.  512 glyphs at the
same time don't work yet.  Plugins can not be loaded from disk yet.  There
is no PC speaker driver to make it beep.  Keyboard LEDs are not handled
(have to try if you can do it in user space without confusing the kernel driver
by unexpected ACK data from the keyboard).  If you use the included font, there
are gaps between the rows, which can be avoided by programming the vga card
a bit, but it is not done yet.  Horizontal line graphic characters are not
dynamically allocated, causing some complex line graphics to have vertical
gaps, too.  Etc, etc, etc.

As you can see, still some way to go.  However, most stuff left to do are
independent features which don't require a lot of changes to the code, and
almost never any interface changes (with some important exceptions, like
scroll lock LED).  So I will continue to work down the list until I am out
of ideas or get fed up ;)  With most of the above problems fixed I think it
can go into CVS easily, and actually be used.

Thanks,
Marcus

-- 
`Rhubarb is no Egyptian god.' GNU      http://www.gnu.org    marcus@gnu.org
Marcus Brinkmann              The Hurd http://www.gnu.org/software/hurd/
Marcus.Brinkmann@ruhr-uni-bochum.de
http://www.marcus-brinkmann.de/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]