[comp.sys.att] Can several windows be smgr/wmgr/phmgr?

ecf_hap@jhunix.HCF.JHU.EDU (Andrew Poling) (02/24/89)

In article <618@icus.islp.ny.us> lenny@icus.islp.ny.us (Lenny Tropiano) writes:
>
>	ioctl(wd,WIOCSYS,SYSWMGR);	/* declare to be system window */
>

I've been wondering if more than one window can issue this ioctl.
Anybody tried it or know?


>... Maybe someday I'll finish my unfinished window-manager replacement.
>It was a good lesson in windows/tam and some other obscure UNIX pc 
>functions.   It's about 65% finished ...
>
>-Lenny
>-- 
>Lenny Tropiano             ICUS Software Systems         [w] +1 (516) 582-5525
>lenny@icus.islp.ny.us      Telex; 154232428 ICUS         [h] +1 (516) 968-8576
>{talcott,decuac,boulder,hombre,pacbell,sbcs}!icus!lenny  attmail!icus!lenny
>        ICUS Software Systems -- PO Box 1; Islip Terrace, NY  11752

 Now that's something to look forward to!  I've been whacking away at
my own wmgr/smgr/phmgr replacement - you're right; I've learned alot
of stuff that I never encountered before.  I think it's just too
monumental a task for me, though.  Mine, like yours, is mostly
finished but that final 20% or so is killing me.  From your work I've
seen before, maybe I'll just give up on mine and wait for yours.


Andy
.  *        .       *           .     *  .     *   .     *    *     .       *
  .     *     _        .   *     *    .  .   *      andy@gollum.hcf.jhu.edu  .
    *  .    _/ \   *   _   .      .  *      *       *    .       *     .
\          /    \_   _/ \      *         _/\   *    ap@ipgate.hcf.jhu.edu    *
 \   . * _/  /\   \ / () \_       /\_   /   \_*  .   *   .       *    .    .
^ \_    /         _/       \    _/   \_/   <> \_    ecf_hap@jhunix.hcf.jhu.edu
    \ /`     <>  /   <>     \_ /   <>     _     \  *       .         *      .
\    \_  ()   __/        _    \  /\      / \_ ^  \   L64A0429@jhuvm.BITNET  .
   /\  \_   _/   ()    _/ \_   \_      _/    \_   \___________________________

ditto@cbmvax.UUCP (Michael "Ford" Ditto) (02/25/89)

In article <848@jhunix.HCF.JHU.EDU> ecf_hap@jhunix.HCF.JHU.EDU (Andrew Poling) writes:
>In article <618@icus.islp.ny.us> lenny@icus.islp.ny.us (Lenny Tropiano) writes:
>>
>>	ioctl(wd,WIOCSYS,SYSWMGR);	/* declare to be system window */
>>
>
>I've been wondering if more than one window can issue this ioctl.
>Anybody tried it or know?

For each system window "type" there can be only one system window.  Thus
you can have one "PMGR", one "SMGR", and one "WMGR".  Otherwise, how would
the system know to which window the hot key should be sent?

However, if you are trying to "take over" one of the window manager's hot
keys, for example, you can have your own program replace "ph" or "smgr"
(assuming that you don't run one of those) and use "keyfix" to redefine
the key you want to go to the program you're replacing.  The high byte of
a keymap entry, if from 0x80 to 0xfe, inclusive, causes the corresponding
key to be a hot key for system window number (0xfe - highbyte).  See
<sys/kbd.h> for examples.
-- 
					-=] Ford [=-

"The number of Unix installations	(In Real Life:  Mike Ditto)
has grown to 10, with more expected."	ford@kenobi.cts.com
- The Unix Programmer's Manual,		...!sdcsvax!crash!kenobi!ford
  2nd Edition, June, 1972.		ditto@cbmvax.commodore.com

dave@galaxia.Newport.RI.US (David H. Brierley) (02/28/89)

In article <848@jhunix.HCF.JHU.EDU> ecf_hap@jhunix.HCF.JHU.EDU (Andrew Poling) writes:
>
>In article <618@icus.islp.ny.us> lenny@icus.islp.ny.us (Lenny Tropiano) writes:
>>
>>	ioctl(wd,WIOCSYS,SYSWMGR);	/* declare to be system window */
>>
>
>I've been wondering if more than one window can issue this ioctl.
>Anybody tried it or know?

The WIOCSYS function is limited to one window at a time.  Well, actually one
window per listed special function (wmgr, smgr, ph).  Each special function
has a list of keys that "belong" to it.  The wmgr has suspd, s-suspd, resume,
s-resume, and s-print; the wmgr has msg and s-msg; and the phone manager has
all shifted function keys (f1-f8).  The WIOCSYS ioctl will stay in effect
until overridden by a new WIOCSYS call.  This means that two processes can
compete for control of the special keys.  I ran into this when I was writing
a program which would "listen" for the function keys and then perform various
actions.  While I was writing the program I still had the phone manager
installed (I was using it as an online telephone directory) and whenever
anything happened which affected the phone lines (such as an incoming call),
the phone manager would wake back up again and reclaim control of the special
keys.  Eventually I was forced to remove the phone manager in order to preserve
my sanity.

The program I wrote is kinda neat if you are willing to sacrifice the phone
manager.  It lets you assign a program to each function key and when you press
one of the function keys it creates a new window, switches control to that
window, and then runs the specified program.  Windows can be either full-screen
borderless windows or smaller windows with borders and resize/move icons.  It's
nice to be able to press s-F7 and bring up Pcomm, or press s-F1 and bring up
a new shell so that I can check something without disturbing my editor session.

If anybody wants a copy, let me know.  If enough people respond I will post it.
Like I said above, you have to nuke the phone manager in order for it to work
properly.  Otherwise it gets into a WIOCSYS war with ph trying to decide who
has control over the function keys.  It's very annoying to press s-F7 and
instead of having Pcomm come up to have a window come up saying that you have
no number assigned to that key.
-- 
David H. Brierley
Home: dave@galaxia.Newport.RI.US   {rayssd,xanth,lazlo,jclyde}!galaxia!dave
Work: dhb@rayssd.ray.com           {sun,decuac,gatech,necntc,ukma}!rayssd!dhb