//Place this file in /Home and change
//anything you want.

U0 TimeIns()
{
        CDate cdt;
        cdt = Now;
        "$IV,1$----%D %T----$IV,0$\n", cdt, cdt;
}

Bool MyPutKey(I64 ch, I64 sc)
{//ch=ASCII; sc=scan_code

        //See Char for definition of scan codes.
        //See Key Allocations .
        //See Keyboard Devices.

        //You can customize keys.  This routine
        //is called before the main editor
        //key handler DocPutKey().
        //You can intercept any key.

        //Return TRUE if you completely
        //handled the key.
        I64 i;
        U8 *st1, *st2;

        if (sc & SCF_ALT && !(sc & SCF_CTRL))
        {
                switch (ch)
        {
                        case 0:
                                switch (sc.u8[0])
                                {
                                        case SC_F1:
                                                if (sc & SCF_SHIFT)
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /LTPURPLE");
                                                        else
                                                                "$LTPURPLE$";
                                                }
                                                else
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /PURPLE");
                                                        else
                                                                "$PURPLE$";
                                                }
                                                return TRUE;

                                        case SC_F2:
                                                if (sc & SCF_SHIFT)
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /LTRED");
                                                        else
                                                                "$LTRED$";
                                                }
                                                else
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /RED");
                                                        else
                                                                "$RED$";
                                                }
                                                return TRUE;

                                        case SC_F3:
                                                if (sc & SCF_SHIFT)
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /LTGREEN");
                                                        else
                                                                "$LTGREEN$";
                                                }
                                                else
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /GREEN");
                                                        else
                                                                "$GREEN$";
                                                }
                                                return TRUE;

                                        case SC_F4:
                                                if (sc & SCF_SHIFT)
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /Default Color");
                                                        else
                                                                "$FG$";
                                                }
                                                else
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Dol /BLUE");
                                                        else
                                                                "$BLUE$";
                                                }
                                                return TRUE;

                                        case SC_F7:
                                                if (!(sc & SCF_SHIFT))
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Cmd /TimeIns");
                                                        else
                                                                TimeIns;
                                                }
                                                return TRUE;

                                        case SC_DELETE:
                                                if (sc & SCF_SHIFT)
                                                {
                                                        if (sc & SCF_KEY_DESC)
                                                                KeyDescSet("Cmd /Soft Reboot");
                                                        else
                                                                BootRAM;
                                                }
                                                return TRUE;
                                }
                                break;
                        case 'a':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Cmd /AutoComplete On");
                                else
                                        AutoComplete(ON);
                                return TRUE;

                        case 'A':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Cmd /AutoComplete Off");
                                else
                                        AutoComplete;
                                return TRUE;

                        case 'h':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Cmd /WinTileHorz");
                                else
                                        WinTileHorz;
                                return TRUE;

                        case 'm':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Cmd /WinMax");
                                else
                                {
                                        WinBorder;
                                        WinMax;
                                }
                                return TRUE;

                        case 'v':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Cmd /WinTileVert");
                                else
                                        WinTileVert;
                                return TRUE;

                        case 'l':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Edit/Put Link to Cur Pos on Clip");
                                else
                                {
                                        ClipDel;
                                        st1 = FileNameAbs(BIBLE_FILENAME);
                                        st2 = FileNameAbs(DocPut->filename.name);
                                        if (!StrCompare(st1, st2))
                                        {
                                                Free(st1);
                                                st1 = BibleLine2Verse(DocPut->cur_entry->y + 1, ',');
                                                DocPrint(sys_clip_doc, "$LK,\"BF:%s\"$", st1);
                                        }
                                        else
                                                DocPrint(sys_clip_doc, "$LK,\"FL:%s,%d\"$", st2, DocPut->cur_entry->y + 1);
                                        Free(st1);
                                        Free(st2);
                                }
                                return TRUE;

                        case 'L':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Edit/Place Anchor, Put Link to Clip");
                                else
                                {
                                        i = RandU32;
                                        ClipDel;
                                        DocPrint(sys_clip_doc, "$LK,\"<TODO>\",A=\"FA:%s,ANC%d\"$", DocPut->filename.name, i);
                                        "$AN,\"<TODO>\",A=\"ANC%d\"$", i;
                                }
                                return TRUE;

                                //Ins your own ALT-key plug-ins

                        case '1':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Dol /pi");
                                else
                                        'pi';
                                return TRUE;

                        case '2':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Dol /theta");
                                else
                                        'theta';
                                return TRUE;

                        case '3':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Dol /phi");
                                else
                                        'phi';
                                return TRUE;

                        case '4':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Dol /omega");
                                else
                                        'omega';
                                return TRUE;

                        case '9':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Dol /Indent 5");
                                else
                                        "$ID,5$";
                                return TRUE;

                        case '0':
                                if (sc & SCF_KEY_DESC)
                                        KeyDescSet("Dol /Unindent 5");
                                else
                                        "$ID,-5$";
                                return TRUE;
                }
        }
        return FALSE;
}

Bool MyPutS(U8 *)
{
        return FALSE;
}

KeyDevAdd(&MyPutKey, &MyPutS, 0x20000000, TRUE);