//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 'g':
                if (sc & SCF_KEY_DESC)
                    KeyDescSet("Cmd /WinTileGrid");
                else
                    WinTileGrid;
                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);