summaryrefslogtreecommitdiffstats
path: root/sys/isa/syscons.h
Commit message (Collapse)AuthorAgeFilesLines
* Add a new keyboard mode K_CODE. Returns a single byte for each keysos1997-10-011-9/+10
| | | | | | | | much like the scancode mode. However the keys that (for no good reason) returns extension codes etc, are translated into singlebyte codes. Needed by libvgl. This makes life ALOT easier, also the XFree86 folks could use this.
* Add a new compile option SC_HISTORY_SIZE to specify the history bufferyokota1997-09-041-2/+5
| | | | | | | | | | | | size in terms of lines (instead of bytes). When changing video mode in ioctl SW_XXX commands, syscons checks scp->history_size and allocate a history buffer at least as large as the new screen size. (This was unnecessary before, because HISTORY_SIZE was as large as 100 lines and this is bigger than the maximum screen size: 60 lines). Similar adjustment is done in ioctl CONS_HISTORY command too. PR: kern/4169 Reviewed by: sos
* Removed unused misplaced definition of TIMER_FREQ.bde1997-08-251-3/+2
| | | | Use less-magic numbers in the definition of HISTORY_SIZE.
* Screen saver related fixes.yokota1997-07-151-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Add new interface, add_scrn_saver()/remove_scrn_saver(), to declare loading/unloading of a screen saver. The screen saver calls these functions to notify syscons of loading/unloading events. It was possible to load multiple savers each of which will try to remember the previous saver in a local variable (`old_saver'). The scheme breaks easily if the user load two savers and unload them in a wrong order; if the first saver is unloaded first, `old_saver' in the second saver points to nowhere. Now only one screen saver is allowed in memory at a time. Soeren will be looking into this issue again later. syscons is becoming too heavy. It's time to cut things down, rather than adding more... 2. Make scrn_timer() to be the primary caller of the screen saver (*current_saver)(). scintr(), scioctl() and ansi_put() update `scrn_time_stamp' to indicate that they want to stop the screen saver. There are three exceptions, however. One is remove_scrn_saver() which need to stop the current screen saver if it is running. To guard against scrn_timer() calling the saver during this operation, `current_saver' is set to `none_saver' early. The others are sccngetc() and sccncheckc(); they will unblank the screen too. When the kernel enters DDB (via the hot key or a break point), the screen saver will be stopped by sccngetc(). However, we have a reentrancy problem here. If the system has been in the middle of the screen saver... (The screen saver reentrancy problem has always been with sccnputc() and sccngetc() in the -current source. So, the new code is doing no worse, I reckon.) 3. Use `mono_time' rather than `time'. 4. Make set_border() work for EGA and CGA in addition to VGA. Do nothing for MDA. Changes to the LKM screen saver modules will follow shortly. YOU NEED TO RECOMPILE BOTH SCREEN SAVERS AND KERNEL AS OF THESE CHANGES. Reviewed by: sos and bde
* A fix/work-around for ThinkPad 535.yokota1997-06-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new configuration flag, KBD_NORESET (0x20) to tell scprobe() not to reset the keyboard. IBM ThinkPad 535 has the `Fn' key with which the user can perform certain functions in conjunction with other keys. For example, `Fn' + PageUP/PageDOWN adjust speaker volume, `Fn' + Home/End change brightness of LCD screen. It can also be used to suspend the system. It appears that these functions are implemented at the keyboard level or the keyboard controller level and totally independent from BIOS or OS. But, if the keyboard is reset (as is done in scprobe()), they become unavailable. (There are other laptops which have similar functions associated with the `Fn' key. But, they aren't affected by keyboard reset.) ThinkPad 535 doesn't have switches or buttons to adjust brightness and volume, or to put the system into the suspend mode. Therefore, it is essential to preserve these `Fn' key functions in FreeBSD. The new flag make scprobe() skip keyboard reset. If this flag is not set, scprobe() behaves in the same say as before. (If we only knew a way to detect ThinkPad 535, we could skip keyboard reset automatically, but...)
* 1) font loading (two fixes)yokota1997-05-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an ioctl command SW_XXXX is issued, scioctl() checks if the font appropriate for the specified mode is already loaded. The check was correctly done for 8 line and 16 line fonts, but not for 14 line font. The symbols FONT_8, FONT_14 and FONT_16 were defined as numbers but were sometimes treated as bit flags. They are now defined as bit flags. 2) screen blinking (two fixes) Removed a redundant call to timeout() in do_bell(). Don't let blink_screen() write to the video buffer if the screen is in the graphics (UNKNOWN) mode. 3) screen saver timeout The ioctl command CONS_BLANKTIME sets the screen saver's timeout. The value of zero will disable the screen saver. If the screen saver is currently running it should be stopped. 4) border color and destructive cursor (two fixes) The border color and the cursor type can be changed via escape sequences. But only VGA can change the border color and set the cursor type to destructive (CHAR_CURSOR) in the current syscons. scan_esc() failed to check this. Reviewed by: sos
* Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are notpeter1997-02-221-1/+1
| | | | ready for it yet.
* Add save/restore cursor as pr SCO screen(HW) manpage.sos1997-01-231-0/+2
| | | | | | | | Fix ESC[2J to not move cursor home Clear mouse cutmarking on more cases. Minor changes by me. Submitted by: ache
* Upgrade the kbdio rutines to provide queued kbd & mouse events.sos1997-01-151-2/+2
| | | | | | Minor other updates to syscons by me. Submitted by: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
* Allow us to enable the 'XT_KEYBOARD' code using a configuration flag.nate1996-11-101-1/+2
| | | | | | | | This allows the user to add modify syscons's configuration flags using UserConfig that will allow older/quirky hardware (most notably older IBM ThinkPad laptops) to work with the standard boot kernel. Inspired by: The Nomads
* Remove SC_KBD_PROBE_WORKS option and replace it with a simple run-time flagpst1996-10-231-1/+2
| | | | | | | | | bit (0x0008) in the sc driver configuration line. This way it's easy to boink a generic kernel. Also, document and place in an opt_ file the #define's for overriding which serial port is the system console. Approved by: sos
* Changed mouse functionality a bit, now the pointer disappears ifsos1996-10-181-2/+4
| | | | | | | | | | there is keyboard input. The mousepointer is shown again immediately if moved. Also a function pointer used to install a userwritten extra ioctl handler (sc_user_ioctl). This way its is possible to install user defined videomodes etc etc. No further changes should be in the kernel.
* Fix a couble of nasties regarding mouse pointer and differentsos1996-09-301-3/+5
| | | | | | resolutions. Allow middle mouse button to be used for pasting. Also added the beginnings of support for a splash page.
* Fixed a couple of bugs in the mousepointer code.sos1996-09-011-5/+7
| | | | | Changed update strategy slightly. Make set_mode & copy_font externally visible.
* Fixed bug in pasting 8bit char (ache).sos1996-06-261-5/+6
| | | | | Added linefeeds in cuts that extend beyond one line. Prepared for the mousefunctions to be used in nontext modes.
* Change the way moused talk to syscons, now its only delivering mouseeventssos1996-06-251-3/+7
| | | | | | | | via an ioctl (MOUSE_ACTION). Fixed a couple of bugs (destructive cursor, uncut, jitter). Now applications can use the mouse via the MOUSE_MODE ioctl, its possible to have a signal sent on mouseevents, makeing an event loop in the application take over mouseevents.
* Moved declarations of static functions to the correct file. This fixesbde1996-06-231-36/+3
| | | | hundreds of warnings from -Wunused in lkm/syscons/*.
* Some news for syscons (long overdue):sos1996-06-211-4/+7
| | | | | | | | Real support for a Textmode mousecursor, works by reprogramming the charset. Together with this support for cut&paste in text mode. To use it a userland daemon is needed (moused), which provides the interface to the various mice protokols. Bug fixes here and there, all known PR's closed by this update.
* Fix a bunch of spelling errors in the comment fields ofmpp1996-01-301-2/+2
| | | | a bunch of system include files.
* Staticize and cleanup.phk1995-12-101-5/+1
|
* Separate colors & attributes as Terry pointsache1995-11-281-6/+17
| | | | Reviewed by: soren
* Added `#include "ioconf.h"' to <machine/conf.h> and cleaned up thebde1995-11-041-2/+1
| | | | | | | | | | misplaced extern declarations (mostly prototypes of interrupt handlers) that this exposed. The prototypes should be moved back to the driver sources when the functions are staticalized. Added idempotency guards to <machine/conf.h>. "ioconf.h" can't be included when building LKMs so define a wart in bsd.kmod.mk to help guard against including it.
* Make pcvt and syscons live in the same kernel. If both are enabled, thenbde1995-09-101-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the first one in the config has priority. They can be switched using userconfig(). i386/i386/conf.c: Initialize the shared syscons/pcvt cdevsw entry to `nx'. Add cdevsw registration functions. Use devsw functions of the correct type if they exist. i386/i386/cons.c: Add renamed syscons entry points to constab. i386/i386/cons.h: Declare the renamed syscons entry points. i386/i386/machdep.c: Repeat console initialization after userconfig() in case the current console has become wrong. This depends on cn functions not wiring down anything important. sys/conf.h: Declare new functions. i386/isa/isa.[ch]: Add a function to decide which display driver has priority. Should be done better. i386/isa/syscons.c: Rename pccn* -> sccn*. Initialize CRTC start address in case the previous driver has moved it. i386/isa/syscons.c, i386/isa/pcvt/* Initialize the bogusly shared variable Crtat dynamically in case the stored value was changed by the previous driver. Initialize cdevsw table from a template. Don't grab the console if another display driver has priority. i386/isa/syscons.h, i386/isa/pcvt/pcvt_hdr.h: Don't externally declare now-static cdevsw functions. i386/isa/pcvt/pcvt_hdr.h: Set the sensitive hardware flag so that pcvt doesn't always have lower priority than syscons. This also fixes the "stupid" detection of the display after filling the display with text. i386/isa/pcvt/pcvt_out.c: Don't be confused the off-screen cursor offset 0xffff set by syscons. kern/subr_xxx.c: Add enough nxio/nodev/null devsw functions of the correct type for syscons and pcvt.
* Fix races in scstart(). q_to_b() wasn't called at spltty(), so therebde1995-07-111-10/+9
| | | | | | | | | | | | | | were two races: - q_to_b() might unexpectedly return 0 (e.g, after a keyboard signal flushes the output queue and isn't echoed). ansi_put() interprets 0 bytes as 4GB... - more output (e.g. for echoes) might arrive afer q_to_b() returns 0. Then scstart() returns presumably and the new output might not be handled for a long time. Remove unused function scxint(). Fix prototypes (foo() isn't a prototype).
* Remove trailing whitespace.rgrimes1995-05-301-2/+2
|
* Correct the type of the `c' arg to pccnputc().bde1995-04-231-7/+3
| | | | | Move declarations of console functions to cons.h so that they can't be defined inconsistently in several places. They should be config(8)ed.
* Fixes to the hardware cursor emulation.sos1995-04-041-8/+19
| | | | Submitted by: ache
* Emulate hw cursor closely, and get start&end scanlines from BIOS.sos1995-03-301-1/+2
|
* Optimized the way physical screen updates are done. Now onlysos1995-03-291-2/+4
| | | | | | | update what has actually been touched. This should speed up screen access on slow hardware. Introduced setting of "destructive" cursor size, much like the old hardware cursor.
* Minor update to syscons.sos1995-03-031-8/+6
| | | | | | | Let "grey delete" be a function key (default is 0x7f) Fix the xor cursor again.. Made the backspace key generate del as default Made CTRL-space generate nul as default.
* Incorporate bde's code-review comments.pst1995-02-281-2/+2
| | | | | | | | | | | (a) bring back ttselect, now that we have xxxdevtotty() it isn't dangerous. (b) remove all of the wrappers that have been replaced by ttselect (c) fix formatting in syscons.c and definition in syscons.h (d) add cxdevtotty NOT DONE: (e) make pcvt work... it was already broken...when someone fixes pcvt to link properly, just rename get_pccons to xxxdevtotty and we're done
* (a) remove the pointer to each driver's tty structure array from cdevswpst1995-02-251-3/+8
| | | | | | | | | (b) add a function callback vector to tty drivers that will return a pointer to a valid tty structure based upon a dev_t (c) make syscons structures the same size whether or not APM is enabled so utilities don't crash if NAPM changes (and make the damn kernel compile!) (d) rewrite /dev/snp ioctl interface so that it is device driver and i386 independant
* Next syscons update (given up on numbering :)sos1995-02-221-0/+203
Removed screensavers from syscons, they are now LKM's. This makes it possible to do some really "interesting" screensavers... Fixed bug that sometimes caused garbage to appear when leaving "scroll-lock" history. Reformattet indentation, it got too deep for a normal 80 pos screen. Split up in syscons.c & syscons.h for use with the saver-lkm's. Temporarily removed -s option from vidcontrol, savers should now be loaded with modload.
OpenPOWER on IntegriCloud