疯掉了,尽然有js写的操作系统

2016-02-19 09:54 28 1 收藏

下面,图老师小编带您去了解一下疯掉了,尽然有js写的操作系统,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - Web开发 】

http://www.masswerk.at/jsuix/

// JS/UIX v0.44
// (c) mass:werk (N.Landsteiner) 2003
// all rights reserved

// term gui

var conf_term_x=102;
var conf_term_y=34;
var conf_kbd_offset=34;
var termImgPath='jsuix_support/';
var termDiv='termDiv';
var termBgColor='#181818';
var termFrameColor='#555555';
var termPageColor='#222222';
var conf_repeat_delay1=320;
var conf_repeat_delay2=170;

var termKbdDiv='termKbdDiv';
var termKbdBgColor='#222222';
var keycapspath='jsuix_support/keycaps/';

var termSubDivs=false;
var termLayers=false;
var termDocNS4=null;
var termStringStart='';
var termStringEnd='';

var termKbdDocNS4=null;
var termKbdOn=false;
var keycapsShift=false;
var keycapsCpslk=false;
var keycapsShiftRef=new Array();
var keycapsCpslkRef=new Array();

var termSpecials=new Array();
termSpecials[0]=' ';
termSpecials[1]='$';
termSpecials[2]=' ';
termSpecials[3]='?';
termSpecials[4]='#';
termSpecials[32]=' ';
termSpecials[34]='"';
termSpecials[38]='&';
termSpecials[60]='';
termSpecials[62]='';
termSpecials[127]='◊';

var termStyles=new Array(1,2,4,8);
var termStyleOpen=new Array();
var termStyleClose=new Array();
termStyleOpen[1]='SPAN CLASS="termReverse"';
termStyleClose[1]='/SPAN';
termStyleOpen[2]='U';
termStyleClose[2]='/U';
termStyleOpen[4]='I';
termStyleClose[4]='/I';
termStyleOpen[8]='STRIKE';
termStyleClose[8]='/STRIKE';


// buttons UI

var termImgNames=new Array('left_lo', 'left_hi', 'right_lo', 'right_hi', 'delete_lo', 'delete_hi', 'esc_lo', 'esc_hi', 'kbd_show_lo', 'kbd_show_hi', 'kbd_hide_lo', 'kbd_hide_hi');
var termImages=new Array();

function termImgPreload(path,imgnames) {
    for (var i=0; iimgnames.length; i++) {
        var n=imgnames[i];
        termImages[n]=new Image();
        termImages[n].src=path+n+'.gif'
    }
}

if (document.images) termImgPreload(termImgPath,termImgNames);

function termSetImg(n,v) {
    if (document.images) {
        var img=(termLayers)? termDocNS4.images['term_'+n] : document.images['term_'+n];
        var stat=(v)? '_hi' : '_lo';
        img.src=termImages[n+stat].src
    }
}


// UI keyboard
// key maps (200=left shift, 202=right shift, 204=CpsLock)

var termKeyMap= [
    [96,49,50,51,52,53,54,55,56,57,48,45,61,8],
    [27,113,119,101,114,116,121,117,105,111,112,91,93,13],
    [204,97,115,100,102,103,104,106,107,108,59,39,35],
    [200,92,122,120,99,118,98,110,109,44,46,47,30,202],
    [32,28,31,29]
];
var termKeyMapShift=[
    [126,33,34,35,36,37,94,38,42,40,41,95,43,8],
    [27,81,87,69,82,84,89,85,73,79,80,123,125,13],
    [204,65,83,68,70,71,72,74,75,76,58,34,64],
    [200,124,90,88,67,86,66,78,77,60,62,63,30,202],
    [32,28,31,29]
];
var termKeyMapCpslk=[
    [96,49,50,51,52,53,54,55,56,57,48,45,61,8],
    [27,81,87,69,82,84,89,85,73,79,80,91,93,13],
    [204,65,83,68,70,71,72,74,75,76,59,39,35],
    [200,92,90,88,67,86,66,78,77,44,46,47,30,202],
    [32,28,31,29]
];
var termKeyWdth=[
    [35,35,35,35,35,35,35,35,35,35,35,35,35,69],
    [55,35,35,35,35,35,35,35,35,35,35,35,35,0],
    [65,35,35,35,35,35,35,35,35,35,35,35,35],
    [49,35,35,35,35,35,35,35,35,35,35,35,35,54],
    [252,35,35,35]
];

var keycapsImgNames=new Array(200,201,202,203,204,205);

function termKeyCaps(k) {
    if ((k28) && (k=32) && (repeatTimer)) clearTimeout(repeatTimer);
    if (k==204) {
        keycapsCpslk=(!keycapsCpslk);
        var cnr=(keycapsCpslk)? 205:204;
        termKbdSetImg(204,cnr)
    }
    else if ((k==200) || (k==202)) {
        keycapsShift=(!keycapsShift);
        var m=(keycapsShift)? 1:0;
        termKbdSetImg(200,200+m);
        termKbdSetImg(202,202+m)
    }
    else {
        var ch=0;
        if (keycapsShift) {
            ch=keycapsShiftRef[k]
            keycapsShift=false;
            termKbdSetImg(200,200);
            termKbdSetImg(202,202)
        }
        else if (keycapsCpslk) ch=keycapsCpslkRef[k]
        else ch=k;
        keyHandler({which:ch,jsuix_remapped:true})
    }
}

function termKbdSetImg(n,v) {
    if (document.images) {
        var img=(termLayers)? termKbdDocNS4.images['key'+n] : document.images['key'+n];
        img.src=termImages[v].src
    }
}


function termSetKbdButton(v) {
    if (document.images) {
        var img=(termLayers)? termDocNS4.images.term_kbd_show : document.images.term_kbd_show;
        var n=(termKbdOn)? 'kbd_hide' : 'kbd_show';
        var stat=(v)? '_hi' : '_lo';
        img.src=termImages[n+stat].src
    }
}

function termKbdShow() {
    if (termKbdOn) {
        setDivVisibility(termKbdDiv,0);
        termKbdOn=false;
        termSetKbdButton(0)
    }
    else {
        termImgPreload(keycapspath,keycapsImgNames);
        keycapsShift=false;
        keycapsCpslk=false;
        var s='TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"n';
        s+='TRTD WIDTH="7" BGCOLOR="'+termPageColor+'"IMG SRC="'+keycapspath+'spacer.gif" WIDTH="7" HEIGHT="2"/TDn';
        s+='TD BGCOLOR="'+termPageColor+'"'+termMakeKbd()+'/TDn';
        s+'TD WIDTH="7" BGCOLOR="'+termPageColor+'"IMG SRC="'+keycapspath+'spacer.gif" WIDTH="7" HEIGHT="2"/TDTRn';
        s+='TRTD HEIGHT="10" COLSPAN="3" BGCOLOR="'+termPageColor+'"IMG SRC="'+keycapspath+'spacer.gif" WIDTH="2" HEIGHT="10"/TD/TRn';
        s+='/TABLE';
        writeElement(termKbdDiv,s);
        setDivXY(termKbdDiv,conf_term_x,conf_term_y+conf_kbd_offset+conf_rows*conf_rowheigt);
        if (termLayers) termKbdDocNS4=document.layers[termKbdDiv].document;
        termKbdOn=true;
        setDivVisibility(termKbdDiv,1);
        termSetKbdButton(0)
    }
}

function termMakeKbd() {
    var s='TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"n';
    for (var i=0; itermKeyMap.length; i++) {
        s+='TRTD NOWRAP HEIGHT="39" VALIGN="top" NOWRAP BGCOLOR="'+termKbdBgColor+'"';
        for (var k=0; ktermKeyMap[i].length; k++) {
            var kc=termKeyMap[i][k];
            keycapsShiftRef[kc]=termKeyMapShift[i][k];
            keycapsCpslkRef[kc]=termKeyMapCpslk[i][k];
            if (kc==13) {
                s+='A HREF="javas'+'cript:termKeyCaps(13)" onfocus="if(this.blur)this.blur()"IMG SRC="'+keycapspath+'13_1.gif" HSPACE="0" VSPACE="0" ALIGN="top" BORDER="0" WIDTH="47" HEIGHT="39"/A';
                continue
            };
            if (kc==32) s+='IMG SRC="'+keycapspath+'spacer.gif" WIDTH="139" HEIGHT="35" HSPACE="1" VSPACE="1" ALIGN="top"'
            else if (kc==28) {
                s+='IMG SRC="'+keycapspath+'spacer.gif" WIDTH="23" HEIGHT="35" HSPACE="1" VSPACE="1" ALIGN="top"';
                s+='A HREF="javasc'+'ript:cursorKbdLeft()" onfocus="if(this.blur)this.blur()" onmousedown="repeatSet('left',1)" onmouseup="repeatClear()"IMG SRC="'+keycapspath+kc+'.gif" NAME="key'+kc+'" HSPACE="1" VSPACE="1" ALIGN="top" BORDER="0" WIDTH="'+termKeyWdth[i][k]+'" HEIGHT="35"/A';
                continue
            }
            else if (kc==29) {
                s+='A HREF="javasc'+'ript:cursorKbdRight()" onfocus="if(this.blur)this.blur()" onmousedown="repeatSet('right',1)" onmouseup="repeatClear()"IMG SRC="'+keycapspath+kc+'.gif" NAME="key'+kc+'" HSPACE="1" VSPACE="1" ALIGN="top" BORDER="0" WIDTH="'+termKeyWdth[i][k]+'" HEIGHT="35"/A';
                continue
            }
            else if (kc==8) {
                s+='A HREF="javasc'+'ript:termKbdBackspace()" onfocus="if(this.blur)this.blur()" onmousedown="repeatSet('backspace',1)" onmouseup="repeatClear()"IMG SRC="'+keycapspath+kc+'.gif" NAME="key'+kc+'" HSPACE="1" VSPACE="1" ALIGN="top" BORDER="0" WIDTH="'+termKeyWdth[i][k]+'" HEIGHT="35"/A';
                continue
            }
            s+='A HREF="javas'+'cript:termKeyCaps('+kc+')" onfocus="if(this.blur)this.blur()"IMG SRC="'+keycapspath+kc+'.gif" NAME="key'+kc+'" HSPACE="1" VSPACE="1" ALIGN="top" BORDER="0" WIDTH="'+termKeyWdth[i][k]+'" HEIGHT="35"/A';
            if (kc==35) s+='A HREF="javas'+'cript:termKeyCaps(13)" onfocus="if(this.blur)this.blur()"IMG SRC="'+keycapspath+'13_2.gif" HSPACE="0" VSPACE="0" ALIGN="top" BORDER="0" WIDTH="37" HEIGHT="36"/A';
        };
        s+='/TD/TRn';
    };
    s+='/TABLE';
    return s
}


// term UI

function termHide() {
    if (repeatTimer) clearTimeout(repeatTimer);
    if (termKbdOn) termKbdShow();
    setDivVisibility(termDiv,0)
}

function makeTerm() {
    window.status='Building terminal ...';
    termLayers=(document.layers)? true:false;
    termSubDivs=(navigator.userAgent.indexOf('Gecko')0);
    var s='';
    s+='TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1"n';
    s+='TRTD BGCOLOR="'+termFrameColor+'" COLSPAN="2"TABLE BORDER="0" CELLSPACING="0" CELLPADDING="2"TRTD  BGCOLOR="'+termBgColor+'"TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"n';
    var rstr='';
    for (var c=0; cconf_cols; c++) rstr+=' ';
    for (var r=0; rconf_rows; r++) {
        var id=((termLayers) || (termSubDivs))? '' : ' ID="term_'+r+'"';
        s+='TRTD NOWRAP HEIGHT="'+conf_rowheigt+'"'+id+' CLASS="term"'+rstr+'/TD/TRn';
    };
    s+='/TABLE/TD/TRn';
    s+='/TABLE/TD/TRn';

    s+='TRnTD VALIGN="middle" BGCOLOR="'+termPageColor+'"TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1"TRn';
    s+='TDA HREF="javasc'+'ript:termKbdShow()" onmouseover="termSetKbdButton(1); window.status='show/hide full graphic keyboard'; return true" onmouseout="termSetKbdButton(0); window.status=''; return true" onfocus="if(this.blur)this.blur()"IMG SRC="'+termImgPath+'kbd_show_lo.gif" NAME="term_kbd_show" WIDTH="73" HEIGHT="19" BORDER="0" HSPACE="5" ALT="show/hide keyboard"/A/TD/TR/TABLE/TDn';

    s+='TD ALIGN="right"TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1"TRn';
    s+='TDA HREF="javasc'+'ript:cursorKbdLeft()" onmouseover="termSetImg('left',1); window.status='left'; return true" onmouseout="termSetImg('left',0); window.status=''; return true" onfocus="if(this.blur)this.blur()" TITLE="cursor left" onmousedown="repeatSet('left',1)" onmouseup="repeatClear()"IMG SRC="'+termImgPath+'left_lo.gif" NAME="term_left" WIDTH="23" HEIGHT="23" ALT="cursor left" BORDER="0"/A/TDn';
    s+='TDA HREF="javasc'+'ript:cursorKbdRight()" onmouseover="termSetImg('right',1); window.status='right'; return true" onmouseout="termSetImg('right',0); window.status=''; return true" onfocus="if(this.blur)this.blur()" TITLE="cursor right" onmousedown="repeatSet('right',1)" onmouseup="repeatClear()"IMG SRC="'+termImgPath+'right_lo.gif" NAME="term_right" WIDTH="23" HEIGHT="23" ALT="cursor right" BORDER="0"/A/TDn';
    s+='TDA HREF="javasc'+'ript:termKbdBackspace()" onmouseover="termSetImg('delete',1); window.status='backspace'; return true" onmouseout="termSetImg('delete',0); window.status=''; return true" onfocus="if(this.blur)this.blur()" TITLE="backspace" onmousedown="repeatSet('backspace',1)" onmouseup="repeatClear()"IMG SRC="'+termImgPath+'delete_lo.gif" NAME="term_delete" WIDTH="23" HEIGHT="23" ALT="backspace" BORDER="0"/A/TDn';
    s+='TDA HREF="javasc'+'ript:termKbdEsc()" onmouseover="termSetImg('esc',1); window.status='esc'; return true" onmouseout="termSetImg('esc',0); window.status=''; return true" onfocus="if(this.blur)this.blur()" TITLE="esc"IMG SRC="'+termImgPath+'esc_lo.gif" NAME="term_esc" WIDTH="23" HEIGHT="23" ALT="esc" BORDER="0"/A/TDn';
    s+='/TR/TABLE/TD/TRn';
    s+='/TABLEn';
    if (termLayers) {
        for (var r=0; rconf_rows; r++) {
            s+='LAYER NAME="term_'+r+'" TOP="'+(3+r*conf_rowheigt)+'" LEFT="3" CLASS="term"/LAYERn'
        };
        termDocNS4=document.layers[termDiv].document;
        termStringStart='TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"TRTD NOWRAP HEIGHT="'+conf_rowheigt+'" CLASS="term"';
        termStringEnd='/TD/TR/TABLE';
    }
    else if (termSubDivs) {
        for (var r=0; rconf_rows; r++) {
            s+='DIV ID="term_'+r+'" STYLE="position:absolute; top:'+(3+r*conf_rowheigt)+'px; left: 3px;" CLASS="term"/DIVn'
        };
        termStringStart='TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"TRTD NOWRAP HEIGHT="'+conf_rowheigt+'" CLASS="term"';
        termStringEnd='/TD/TR/TABLE';
    };
    writeElement(termDiv,s);
    setDivXY(termDiv,conf_term_x,conf_term_y);
    setDivVisibility(termDiv,1);
    window.status=''
}

function termDisplay(r) {
    var s=termStringStart;
    var curStyle=0;
    for (var i=0; iconf_cols; i++) {
        var c=term[r][i];
        var cs=termStyle[r][i];
        if (cs!=curStyle) {
            if (curStyle) {
                for (var k=termStyles.length-1; k=0; k--) {
                    var st=termStyles[k];
                    if (curStyle&st) s+=termStyleClose[st];
                }
            };
            curStyle=cs;
            for (var k=0; ktermStyles.length; k++) {
                var st=termStyles[k];
                if (curStyle&st) s+=termStyleOpen[st];
            }
        };
        s+= (termSpecials[c])? termSpecials[c] : String.fromCharCode(c);
    };
    if (curStyle0) {
        for (var k=termStyles.length-1; k=0; k--) {
            var st=termStyles[k];
            if (curStyle&st) s+=termStyleClose[st];
        }
    };
    s+=termStringEnd;
    writeElement('term_'+r,s,termDocNS4)
}

function termGuiReady() {
    ready=true;
    if (termGuiElementReady(termDiv, self.document)) {
        for (var r=0; rconf_rows; r++) {
            if (termGuiElementReady('term_'+r,termDocNS4)==false) {
                ready=false;
                break
            }
        }
    }
    else ready=false;
    return ready
}


function cursorKbdLeft() {
    keyHandler({which:28})
}

function cursorKbdRight() {
    keyHandler({which:29})
}

function termKbdBackspace() {
    keyHandler({which:8})
}

function termKbdEsc() {
    keyHandler({which:27})
}

function termKbdClear() {
    if ((!cnslLock) && (!cnslRawMode)) cnslReset();
}

// UI-button repeat

function repeatSet(cmd,on) {
    if (repeatTimer) clearTimeout(repeatTimer);
    repeatTimer=setTimeout('repeatDo("'+cmd+'")',conf_repeat_delay1);
}

function repeatClear() {
    if (repeatTimer) clearTimeout(repeatTimer);
}

function repeatDo(cmd) {
    if (repeatTimer) clearTimeout(repeatTimer);
    if (cmd=='left') cursorKbdLeft()
    else if (cmd=='right') cursorKbdRight()
    else if (cmd=='backspace') termKbdBackspace();
    repeatTimer=setTimeout('repeatDo("'+cmd+'")',conf_repeat_delay2);
}


// basic dynamics

function writeElement(e,t,d) {
    if (document.layers) {
        var doc=(d)? d : self.document;
        doc.layers[e].document.open();
        doc.layers[e].document.write(t);
        doc.layers[e].document.close()
    }
    else if (document.getElementById) {
        var obj=document.getElementById(e);
        obj.innerHTML=t
    }
    else if (document.all) {
        document.all[e].innerHTML=t
    }
}

function setDivXY(d,x,y) {
    if (document.layers) {
        document.layers[d].moveTo(x,y)
    }
    else if (document.getElementById) {
        var obj=document.getElementById(d);
        obj.style.left=x+'px';
        obj.style.top=y+'px'
    }
    else if (document.all) {
        document.all[d].style.left=x+'px';
        document.all[d].style.top=y+'px'
    }
}

function setDivVisibility(d,v) {
    if (document.layers) {
        document.layers[d].visibility= (v)? 'show':'hide';
    }
    else if (document.getElementById) {
        var obj=document.getElementById(d);
        obj.style.visibility= (v)? 'visible':'hidden';
    }
    else if (document.all) {
        document.all[d].style.visibility= (v)? 'visible':'hidden';
    }
}

function termGuiElementReady(e,d) {
    if (document.layers) {
        var doc=(d)? d : self.document;
        return ((doc) && (doc.layers[e]))? true:false
    }
    else if (document.getElementById) {
        return (document.getElementById(e))? true:false
    }
    else if (document.all) {
        return (document.all[e])? true:false
    }
    else return false
}

//eof

来源:http://www.tulaoshi.com/n/20160219/1592573.html

延伸阅读
标签: 操作系统
随着微软的步步紧逼,包括早先的Windows黑屏计划、实施,逮捕番茄花园作者并判刑,种种迹象表明,中国用户免费使用盗版Windows的日子将不会太长久了,那么这个世界上有没有即免费又易用的操作系统呢?答案是有,那就是Ubuntu操作系统。 Ubuntu是一个流行的Linux操作系统,基于Debian发行版和GNOME桌面环境,和其他Linux发行版相比,Ubuntu...
标签: autocad教程
如果用户希望在AutoCAD中执行操作系统命令,则可调图老师用“shell”命令来访问操作系统,该命令的调用方式为: 命令行:shell(或sh) 调用该命令后,系统将提示用户输入操作系统命令: OS Command: 用户可在此提示下执行操作系统命令。也可以直接回车来弹出“AutoCAD Shell Active”窗口(图16-9)来进行操作,完成...
标签: 电脑入门
开源操作系统就是英文简称open source operating system。它是公开源代码的操作系统软件。可以遵循开源协议(GNU)进行使用、编译和再发布。在遵守GNU协议的前提下,任何人都可以免费使用,随意控制软件的运行方式。 介绍linux操作系统,这就是所谓的国际开源系统,而linux操作系统也是自由软件和开放源代码发展中典型的开源系统代表。在现代...
标签: windows 操作系统
Windows 操作系统的技巧现在网上很多,让人感觉不知道从何下手,下面的技巧,虽然不多,但是对你使用操作系统都有非常大的帮助,所以今天介绍给大家…… 加快开机与关机的速度: ①选“开始\运行”,键入Regedit,展开HKEY_CURRENT_USER\Control Panel\Desktop,将字符串值“HungAppTimeout”的数值更改为200,再将字符串值“WaitToKillA...
标签: 电脑入门
任务栏图标有键盘快捷方式 用户想要通过快捷键打开这些应用程序,只需按住Windows键,然后按键盘上与该图标对应的数目即可。例如,如果Internet Explorer是第一个图标,用户只需按住Windows-1,就可以打开IE浏览器。 用户可以将任务栏上的项目任意移动 也许用户可能觉得这个功能在Windows XP和Vista就已经存在了,但实际上这是Windows...

经验教程

462

收藏

41
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部