This is ioctls.m in view mode; [Download] [Up]
#import "Thinker.h" #import "BackWindow.h" #import "psfuncts.h" #import <appkit/Window.h> #import <objc/List.h> #import <nextdev/evsio.h> #import <libc.h> // these defines allow this to compile on a 2.0 system, though // BackSpace can't prevent the screen from dimming on a 2.0 // system. You need 2.1 for that. Other than this, BackSpace // works fine on a 2.0 system. #ifndef EVSIOSADB #define EVSIOSADB _IOW('e', 104, int) /* Set AutoDim Brightness */ #define EVSIOCADB _IOR('e', 105, int) /* Current AutoDim Brightness */ #endif @implementation Thinker(ioctls) // You really should restore the old dim value every time you // are not acting as the screen saver. Unfortunately, setting // a bright screen saver value has no effect when the screen is // dim! - normalMode { [self _setDimBrightness : &oldDimBrightness]; return self; } - screenSaverMode { // this method prevents the screen from dimming so you can see the // screen saver. Just return self right here if you want the screen // to go dim while the screensaver is doing its thing. [self getNormalBrightness :&normalBrightness]; [self _setDimBrightness :&normalBrightness]; return self; } // In the multi-headed case, I gotta throw a black window over all // the screens so they don't burn in while I do animation on one. - blackOutAllScreens { int i; NXRect r; if (screenCount <= 1) return self; if (!screenList) screenList = [[List alloc] init]; for (i=0; i < screenCount; i++) { id theWindow; r = screens[i].screenBounds; theWindow = [[BackWindow alloc] initContent:&r style:NX_TOKENSTYLE backing:NX_NONRETAINED buttonMask:0 defer:NO]; [screenList addObject:theWindow]; [theWindow removeFromEventMask:(NX_LMOUSEDOWNMASK | NX_LMOUSEUPMASK | NX_MOUSEMOVEDMASK | NX_LMOUSEDRAGGEDMASK | NX_MOUSEENTEREDMASK | NX_MOUSEEXITEDMASK | NX_KEYDOWNMASK | NX_KEYUPMASK | NX_CURSORUPDATEMASK)]; [theWindow setBackgroundGray:NX_BLACK]; tweakWindow([theWindow windowNum], SAVERTIER-1); [theWindow placeWindowAndDisplay:&r]; [theWindow orderFront:self]; } return self; } - unBlackOutAllScreens { if (screenCount <= 1) return self; [screenList makeObjectsPerform:@selector(orderOut:) with:self]; [screenList freeObjects]; return self; } - getDimBrightness:(int *)b { ioctl(evs, EVSIOCADB, b); return self; } - _setDimBrightness :(int *)b { ioctl(evs, EVSIOSADB, b); return self; } - getNormalBrightness :(int *)b { ioctl(evs, EVSIOCB, b); //get current brighness return self; } - getDimTime :(int *)t { ioctl(evs, EVSIOGADT, t); //get dim time return self; } - getDimInterval :(int *)i { ioctl(evs, EVSIOCADT, i); //get dim interval return self; } - setDimInterval :(int *)i { ioctl(evs, EVSIOSADT, i); //set dim interval return self; } - getDimStatus :(int *)s { ioctl(evs, EVSIOCADS, s); //get dim status return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.