### 環境変数の設定 ###

if [ -z "$EDITOR" ]
then
    if [ ! -z "$(which emacs)" ]
    then 
        export EDITOR=emacs
    elif [ ! -z "$(which vim)" ]
    then 
        export EDITOR=vim
    elif [ ! -z "$(which vi)" ]
    then
        export EDITOR=vi
    elif [ ! -z "$(which nano)" ]
    then
        export EDITOR=nano
    fi
fi

if [ -z "$SHELL" ]
then
    if [ ! -z "`which zsh`" ]
    then
        export SHELL=zsh
    elif [ ! -z "`which bash`" ]
    then
        export SHELL=bash
    fi
fi

if [ -z "$PAGER" ]
then
    if [ ! -z "`which lv`" ]
    then
        export PAGER=lv
    elif [ ! -z "`which less`" ]
    then
        export PAGER=less
    elif [ ! -z "`which more`" ]
    then
        export PAGER=more
    fi
fi

### GNU screen 上で起動しているかチェック ###
if [ $(print $TERM|index screen) != -1 ]
then
    export IN_SCREEN=1
else
    export IN_SCREEN=0
fi

export MFILER3_DATADIR=$DATADIR         # /usr/local/share

export PROMPT="print 'mfiler3 version 1.1.1 (c)D. Minato 2008- ? for help'|chomp"

export OPTION_MOVE_PARENT=0              # 左右で親ディレクトリに上がるか
export OPTION_SCROLL_TYPE=FDClone        # スクロールタイプ
#export OPTION_SCROLL_TYPE=afu           # 端末の描写スピードを相当要求します

export VIEW_PERMISSION=0                 # パーミッションを表示するかどうか
export VIEW_NLINK=0                      # リンクを表示するかどうか
export VIEW_OWNER=0                      # オーナーを表示するかどうか
export VIEW_GROUP=0                      # グループを表示するかどうか
export VIEW_SIZE=0                       # サイズを表示するかどうか
export VIEW_MTIME=0                      # 修正時間を表示するかどうか
export VIEW_FOCUSBACK=0                  # ファイル名がはみ出るとき後ろにフォーカスすかどうか
export VIEW_PAGE=0                       # ページの描写方法
export VIEW_DIVIDE_EXTENSION=0           # 拡張子を別に表示するかどうか
export VIEW_OPTION=all

export VIEW_FILE_SIZE=Normal             # 修正時間の描写方法
#export VIEW_FILE_SIZE=Human
#export VIEW_FILE_SIZE=Plane

export OPTION_MENU_CYCLE=1               # メニューで上下キーでサイクルするか
export VIEW_ADD_STAR_EXE=1               # 実行ファイルに*をつけるかどうか

export TRASH_BOX_DIR="$HOME/mtrashbox/"   # ゴミ箱のディレクトリ

if [ ! $TRASH_BOX_DIR[-1] = / ]
then
    export TRASH_BOX_DIR=$TRASH_BOX_DIR/
fi

if [ ! -e $TRASH_BOX_DIR ]
then
    mkdir $TRASH_BOX_DIR
fi

export INFO_FNAME="$HOME/.mf3info"

# 256対応端末ならinit256してください
#init256

# fcolor 正規表現 red green blue
fcolor '\\.tgz$|\\.tar$|\\.gz$|\\.tar\\.bz2$' 0 3 0
fcolor '\\.c$|\\.cpp$|\\.cc$' 4 2 0
fcolor '\\.h$|\\.hpp$' 2 2 0
fcolor '\\.pl$|\\.rb$|\\.py$' 2 0 2
fcolor '\\.mp3$' 2 2 0
fcolor '\\.html$|\\.htm$' 2 4 0

keycommand 0 $key_up            '*'             '%Q%h cursor_move -1'
keycommand 0 $key_ctrl_p        '*'             '%Q%h cursor_move -1'
keycommand 0 $key_down          '*'             '%Q%h cursor_move +1'
keycommand 0 $key_ctrl_n        '*'             '%Q%h cursor_move +1'
keycommand 0 $key_ctrl_a        '*'             '%Q%h cursor_move 0'
keycommand 0 $key_ctrl_e        '*'             '%Q%h cursor_move 9999'

function cursor_left
{
    if [ $OPTION_MOVE_PARENT = 1 ] && [ $(row | chomp) = 0 ] && [ $(adir | chomp) = 0 ]
    then
        cd ..
    else
        if [ $VIEW_OPTION = all ]
        then
            activate 0
        else
            if [ $(row | chomp) != 0 ]
            then
                cursor_move -$(line_max | chomp)
            fi
        fi
    fi
}

keycommand 0 $key_left          '*'             '%Q%h cursor_left'
keycommand 0 $key_ctrl_b        '*'             '%Q%h cursor_left'

function cursor_right
{
    let n="$(row_max | chomp) - 1"
    if [ $OPTION_MOVE_PARENT = 1 ] && [ $(row | chomp) = $n  ] && [ $(adir | chomp) = 1 ]
    then
        cd ..
    else
        if [ $VIEW_OPTION = all ]
        then
            activate 1
        else
            if [ $(row | chomp) !=  $n ]
            then
                cursor_move +$(line_max | chomp)
            fi
        fi
    fi
}

keycommand 0 $key_right         '*'             '%Q%h cursor_right'
keycommand 0 $key_ctrl_f        '*'             '%Q%h cursor_right'

keycommand 0 $key_backspace     '*'             '%Q%h cd ..'
keycommand 0 $key_ctrl_h        '*'             '%Q%h cd ..'

function cursor_pageup
{
    if [ $OPTION_SCROLL_TYPE = FDClone ]
    then
        cursor_move -10
    else
        if [ $VIEW_OPTION = all ]
        then
            cursor_move -`expr $(line_max|chomp) - 2`
        else
            cursor_move -10
        fi
    fi
}

keycommand 0 $key_pageup        '*'             '%Q%h cursor_pageup'
keycommand 0 $key_ctrl_u        '*'             '%Q%h cursor_pageup'
keycommand 1 $key_v             '*'             '%Q%h cursor_pageup'

function cursor_pagedown
{
    if [ $OPTION_SCROLL_TYPE = FDClone ]
    then
        cursor_move +10
    else 
        if [ $VIEW_OPTION = all ]
        then
            cursor_move +`expr $(line_max|chomp) - 2`
        else
            cursor_move +10
        fi
    fi
}

keycommand 1 $key_left          '*'             '%Q%h cd -'
keycommand 1 $key_right         '*'             '%Q%h cd +'
keycommand 0 $key_meta_left     '*'             '%Q%h cd -'
keycommand 0 $key_meta_right    '*'             '%Q%h cd +'

keycommand 0 $key_pagedown      '*'             '%Q%h cursor_pagedown'
keycommand 0 $key_ctrl_d        '*'             '%Q%h cursor_pagedown'
keycommand 0 $key_ctrl_v        '*'             '%Q%h cursor_pagedown'


keycommand 0 $key_ctrl_l        '*'             '%Q%h mclear_immediately; reread'
keycommand 0 $key_backslash     '*'             '%Q%h cd /'
keycommand 0 $key_tilda         '*'             '%Q%h cd ~'
keycommand 0 $key_o             '*'             '%Q%h cd "`path -s|chomp`"'
keycommand 0 $key_O             '*'             '%Q%h cd -s "`path|chomp`"'
keycommand 0 $key_O             '*'             '%Q%h cd -s "`path|chomp`"'
keycommand 0 $key_space         '*'             '%Q%h set_toggle_mark -a $(cursor|chomp); cursor_move +1'

keycommand 0 $key_w             '*'             '%Q%h export ADIR=`path|chomp`; export SDIR=`path -s|chomp`; cd "$SDIR"; cd -s "$ADIR"'

export TAB_VIEW_OPTION_BEFORE=

function key_tab
{
    if [ $VIEW_OPTION = all ]
    then
        activate -s
    else
        export TAB_VIEW_OPTION_BEFORE=$VIEW_OPTION
        export VIEW_OPTION=all

        cd 1 `path 0|chomp`

        activate 1
    fi
}

function key_q
{
    if [ $VIEW_OPTION = all ]
    then
        if [ $(adir|chomp) = 1 ]
        then
            activate 0
        fi

        if [ "$TAB_VIEW_OPTION_BEFORE" = "" ]
        then
            export VIEW_OPTION=one_dir2
        else
            export VIEW_OPTION=$TAB_VIEW_OPTION_BEFORE
            export TAB_VIEW_OPTION_BEFORE=
        fi
    else
        exit
    fi
}

keycommand 0 $key_tab           '*'             '%Q%h key_tab'
keycommand 0 $key_q             '*'             '%Q%h key_q'
keycommand 0 $key_ctrl_c        '*'             '%Q%h exit'
keycommand 0 $key_Q             '*'             '%Q%h exit'

function editor
{
    export i=0
    while [ $i -lt $(job_num|chomp) ]
    do
        if [ "$(job_name $i|chomp)" = "%f" ]
        then
            let j="$i + 1"
            fg $j
            return
        fi

        let i="$i + 1"
    done

    $EDITOR $@
    reread -a
}

function pager
{
    export i=0
    while [ $i -lt $(job_num|chomp) ]
    do
        if [ "$(job_name $i|chomp)" = "%f" ]
        then
            let j="$i + 1"
            fg $j
            return
        fi

        let i="$i + 1"
    done

    $PAGER $@
    reread -a
}

if [ $IN_SCREEN = 0 ]
then
    keycommand 0 $key_v             '*'             '%q pager "%F"' '%f'
    keycommand 0 $key_e             '*'             '%q editor "%F"' '%f'
    keycommand 0 $key_h             '*'             '%Q%h cmdline "" 0' 'cmdline'
    keycommand 0 $key_colon         '*'             '%q $SHELL' '$SHELL'
    keycommand 0 $key_enter         .mark           '%Q%h cmdline \' %m\' 0'
    keycommand 0 $key_enter         '*'             '%Q%h cmdline \' %F\' 0'
    keycommand 0 $key_x             '*'             '%Q%h cmdline \' ./%f \' -1'
else
    keycommand 0 $key_v             '*'             '%Q%s $PAGER %F' '%f'
    keycommand 0 $key_e             '*'             '%Q%s $EDITOR %F' '%f'
    keycommand 0 $key_h             '*'             '%Q%h cmdline \'%s \' -1' 'cmdline'
    keycommand 0 $key_colon         '*'             '%Q%s $SHELL' '$SHELL'
    keycommand 0 $key_enter         .mark           '%Q%h cmdline \'%s %m\' 2'
    keycommand 0 $key_enter         '*'             '%Q%h cmdline \'%s %F\' 2'
    keycommand 0 $key_x             '*'             '%Q%h cmdline \'%s ./%f \' -1'
fi

keycommand 0 $key_f             '*'             '%Q%h isearch' 'isearch'
keycommand 0 $key_slash         '*'             '%Q%h isearch' 'isearch'
keycommand 0 $key_F             '*'             '%Q%h cmdline \'find . | perl -e \\\'while(<STDIN>) { print substr($_, 2); }\\\' | vd\' 7' 'find'
keycommand 0 $key_F             '.mark'         '%Q%h cmdline \'find %m | vd\' -1' 'find'
keycommand 0 $key_enter         .directory      '%Q%h cd %f'

function marking
{
    export i=0
    export max=$(file_num|chomp)
    while [ $i -lt $max ]
    do
        if [ `get_mark $1 $i|chomp` = 1 ]
        then
            print 1
            return
        fi

        let i="$i + 1"
    done

    print 0
}

function mcp_check
{
    if [ `marking $(adir)|chomp` = 1 ]
    then
        if [ $VIEW_OPTION = all ]
        then
            mcp $@
        else
            cmdline "%Q%h mcp "'%m'" %D" -1
        fi
    fi
}

keycommand 0 $key_c             '*'             '%Q mcp_check %m %D2'
keycommand 0 $key_C             '*'             '%Q%h if [ $VIEW_OPTION = all ]; then cmdline "cp -a "\'%m\'" \\\'%D2\\\'" -2; else cmdline "cp -a "\'%m\'" \\\'%D\\\'" -2; fi'

function mmv_check
{
    if [ `marking $(adir)|chomp` = 1 ]
    then
        if [ $VIEW_OPTION = all ]
        then
            mmv $@
        else
            cmdline "%Q%h mmv "'%m'" %D" -1
        fi
    fi
}

keycommand 0 $key_m             '*'             '%Q mmv_check %m %D2'
keycommand 0 $key_M             '*'             '%Q%h if [ $VIEW_OPTION = all ]; then cmdline "mv "\'%m\'" \\\'%D2\\\'" -2; else cmdline "mv "\'%m\'" \\\'%D\\\'" -2; fi'

function tar_compress
{
    export fname=$(basename %f)

    if [ $(marking|chomp) = 1 ]
    then
        if [ $VIEW_OPTION = all ]
        then
            cmdline "tar cvfz \'%D2.tgz\' "'%m' -9
        else
            cmdline "tar cvfz \'%D.tgz\' "'%m' -9
        fi
    else
        if [ $VIEW_OPTION = all ]
        then
            cmdline "tar cvfz \'%D2$fname.tgz\' "'%f' -9
        else
            cmdline "tar cvfz \'%D$fname.tgz\' "'%f' -9
        fi
    fi
}

function tar_compress2
{
    export fname=$(basename %f)

    if [ $(marking|chomp) = 1 ]
    then
        cmdline "tar cvfz \'%D.tgz\' "'%m' -9
    else
        cmdline "tar cvfz \'%D$fname.tgz\' "'%f' -9
    fi
}

keycommand 0 $key_p             '*'         '%Q%h tar_compress'
keycommand 0 $key_P             '*'         '%Q%h tar_compress2'

function tar_expand
{
    if [ $VIEW_OPTION = all ]
    then
        cmdline "tar xvfz %m -C \'%D2\'" -2
    else
        cmdline "tar xvfz %m -C \'%D\'" -2
    fi
}

function tar_expand2
{
    cmdline "tar xvfz %m -C \'%D\'" -2
}

keycommand 0 $key_u             '.tgz'         '%Q%h tar_expand'
keycommand 0 $key_U             '.tgz'         '%Q%h tar_expand2'


keycommand 0 $key_l               '*'             '%Q make_link'

function mmake
{
    make > ~/.mfiler3_tmp/mmake 2> ~/.mfiler3_tmp/mmake

    export SELECTOR_SCROLLTOP=0
    export SELECTOR_CURSOR=0

    while true
    do
        selector ~/.mfiler3_tmp/mmake $SELECTOR_SCROLLTOP $SELECTOR_CURSOR| read LINE

        if [ "$LINE" = "" ]
        then
            break
        else
            echo "$LINE" | perl -e 'while(<STDIN>) { if(/^(.+):([0-9]+):/) { print "$1\\n"; print $2; } }' | read FNAME LNUMBER
            
            $EDITOR +$LNUMBER "$FNAME"
        fi
    done
}

keycommand 0 $key_K       '*'     '%q mmake'

function mgrep
{
    grep $@ > ~/.mfiler3_tmp/mgrep

    export SELECTOR_SCROLLTOP=0
    export SELECTOR_CURSOR=0

    while true
    do
        selector ~/.mfiler3_tmp/mgrep $SELECTOR_SCROLLTOP $SELECTOR_CURSOR| read LINE

        if [ "$LINE" = "" ]
        then
            break
        else
            echo "$LINE" | perl -e 'while(<STDIN>) { if(/^(.+):(\\d+):/) { print $1, "\\n"; print $2; }}' | read FNAME LNUMBER

            $EDITOR +$LNUMBER "$FNAME"
        fi
    done
}

function megrep
{
    egrep $@ > ~/.mfiler3_tmp/mgrep

    export SELECTOR_SCROLLTOP=0
    export SELECTOR_CURSOR=0

    while true
    do
        selector ~/.mfiler3_tmp/mgrep $SELECTOR_SCROLLTOP $SELECTOR_CURSOR| read LINE

        if [ "$LINE" = "" ]
        then
            break
        else
            echo "$LINE" | perl -e 'while(<STDIN>) { if(/^(.+):(\\d+):/) { print $1, "\\n"; print $2; }}' | read FNAME LNUMBER

            $EDITOR +$LNUMBER "$FNAME"
        fi
    done
}

function key_g
{
    cmdline '%q mgrep -n \'\' %a' 13
}

function key_gR
{
    cmdline '%q mgrep -R -n \'\' %a' 16
}

function key_g_markR
{
    cmdline '%q mgrep -R -n \'\' %m' 16
}

keycommand 0 $key_g       '*'     '%Q%h key_g' 'mgrep'
keycommand 0 $key_g       '.mark' '%Q%h key_g_markR' 'mgrep'

function vgrep
{
    grep $@ | perl -e 'while(<STDIN>) { @s = split(":"); if($s[1] != 0) { print $s[0], "\\n"; }}' | vd
}

function vegrep
{
    grep $@ | perl -e 'while(<STDIN>) { @s = split(":"); if($s[1] != 0) { print $s[0], "\\n"; }}' | vd
}

keycommand 0 $key_G       '*'     '%Q%h cmdline "%Q vgrep -c --binary-files=without-match -R \\\'\\\' "\'%a\' -5'

function backup
{
    if [ -e $2 ]
    then
        msg "$2 exists. can't backup"
    else
        cp -Ra $@
        reread
    fi
}

keycommand 0 $key_b       '*'      '%Q%h cmdline \'%Q\'" backup %F %F.bak" -5'

function mark_clear
{
    export i=0
    while [ $i -lt $(file_num|chomp) ]
    do
        if [ $# = 1 ]
        then
            set_mark $1 $i 0
        else
            set_mark $i 0
        fi

        let i="$i + 1"
    done
}

function mark
{
    if [ $# = 0 ]
    then
        return
    fi

    #mark_clear

    if [ $(choice "toggle mark?" yes no) = 0 ]
    then
        export TOGGLE=1
    else
        export TOGGLE=0
    fi

    export GROUP=
    export USER=
    export PERM=

    export i=1
    while [ $i -le $# ]
    do
        if [ ${$i} = -u ]
        then
            let j="$i + 1"
            export USER=${$j}

            export k=$i
            let "#"="$# - 2"

            while [ $k -le $# ]
            do
                let j="$k + 2"
                export $k=${$j}

                let k="$k + 1"
            done
        elif [ ${$i} = -g ]
        then
            let j="$i + 1"
            export GROUP=${$j}

            export k=$i
            let "#"="$# - 2"

            while [ $k -le $# ]
            do
                let j="$k + 2"
                export $k=${$j}

                let k="$k + 1"
            done
        elif [ ${$i} = -p ]
        then
            let j="$i + 1"
            export PERM=${$j}

            export k=$i
            let "#"="$# - 2"

            while [ $k -le $# ]
            do
                let j="$k + 2"
                export $k=${$j}

                let k="$k + 1"
            done
        fi

        let i="$i + 1"
    done

    # 正規表現あり #
    if [ "$1[0]" = / ]
    then
        export i=2
        while [ $i -le $# ]
        do
            if [ "$USER" = "" ] || [ $(file_user $(file_index "${$i}"|chomp)|chomp) = "$USER" ]
            then
                if [ "$GROUP" = "" ] || [ $(file_group $(file_index "${$i}"|chomp)|chomp) = "$GROUP" ]
                then
                    if [ "$PERM" = "" ] || [ $(file_perm $(file_index "${$i}"|chomp)|chomp) = "$PERM" ]
                    then
                        if [ "${$i}" =~ "$1" ]
                        then
                            if [ $TOGGLE = 0 ]
                            then
                                set_mark "${$i}" 1
                            else
                                set_toggle_mark "${$i}"
                            fi
                        fi
                    fi
                fi
            fi
            
            let i="$i + 1"
        done

    # 正規表現なし #
    else
        export i=1
        while [ $i -le $# ]
        do
            if [ "$USER" = "" ] || [ $(file_user $(file_index "${$i}"|chomp)|chomp) = "$USER" ]
            then
                if [ "$GROUP" = "" ] || [ $(file_group $(file_index "${$i}"|chomp)|chomp) = "$GROUP" ]
                then
                    if [ "$PERM" = "" ] || [ $(file_perm $(file_index "${$i}"|chomp)|chomp) = "$PERM" ]
                    then
                        if [ $TOGGLE = 0 ]
                        then
                            set_mark "${$i}" 1
                        else
                            set_toggle_mark "${$i}"
                        fi
                        
                    fi
                fi
            fi
            
            let i="$i + 1"
        done
    fi
}

keycommand 0 $key_star       '*'     '%Q%h cmdline \'%Q%o mark \\\'//\\\' %a\' 12' 'mark'

keycommand 0 $key_plus       '*'     '%Q%h cmdline \'%Q%o set_mask \\\'\\\'\' -2' 'mask'

function toggle_dotfile
{
    if [ $(mask|chomp) != "" ]
    then
        export DOTDIR_MASK=0
        set_mask ''
    else
        export DOTDIR_MASK=1
        set_mask '^[^\\.].+'
    fi
}

keycommand 0 $key_dot        '*'     '%Q%h toggle_dotfile' 'dotmask'

function mark_all_files_and_directory
{
    export i=0
    export max=$(file_num|chomp)
    while [ $i -lt $max ]
    do
        if [ ! "$(file_name $i|chomp)" = ".." ]
        then
            set_toggle_mark $i
        fi
        let i="$i + 1"
    done
}

function mark_all_files
{
    export i=0
    export max=$(file_num|chomp)
    while [ $i -lt $max ]
    do
        if [ ! "$(file_name $i|chomp)" = ".." ] && [ ! -d "$(file_name $i|chomp)" ]
        then
            set_toggle_mark $i
        fi
        let i="$i + 1"
    done
}

keycommand 0 $key_home          '*'             '%o%Q mark_all_files_and_directory' 'mark all'

keycommand 0 $key_end           '*'             '%o%Q mark_all_files' 'mark all'

function new_file
{
    touch "$1"
    reread -a
    cursor_move "/$1"
}

keycommand 0 $key_n             '*'             '%Q%h cmdline \'%Q new_file ""\' -2'


function rename
{
    if [ -e "$2" ]
    then
        msg "$2 exists. cant't rename"
    else
        mv -f "$1" "$2"

        reread -a
        cursor_move "/$(basename $2)"
    fi
}

function key_r
{
    export n=$(length "%x")
    if [ $n = 0 ]
    then
        cmdline '%Q rename %F '"\'%F\'" -2
    else
        let m="$n + 3"
        cmdline '%Q rename %F '"\'%F\'" -$m
    fi
}

keycommand 0 $key_r             '*'             '%Q%h key_r'

function regex_rename
{
    export regex="$1"
    export result="$2"

    ### 確認 ###
    echo > ~/.mfiler3_tmp/regex_rename

    export i=3
    while [ $i -le $# ]
    do
        if [ "${$i}" =~ "$regex" ]
        then
            echo -e "${$i}\\n -> $(echo "$result")" >> ~/.mfiler3_tmp/regex_rename
        fi

        let i="$i + 1"
    done

    $PAGER ~/.mfiler3_tmp/regex_rename

    if [ $(choice "rename ok?" yes no) = 0 ]
    then
        export i=3
        while [ $i -le $# ]
        do
            if [ "${$i}" =~ "$regex" ]
            then
                rename "${$i}" "$(echo "$result")"
            fi

            let i="$i + 1"
        done
    fi
}

function key_R
{
    cmdline '%Q regex_rename \'//\' \'\' %m' 18
}

keycommand 0 $key_r             '.mark'          '%Q%h key_R'

function make_dir
{
    if [ ! -e "$1" ]
    then
        mkdir -p "$1"
        reread -a
        cursor_move "/$1"
    else
        msg "$1 exists. can't make directory"
    fi
}

keycommand 0 $key_k             '*'             '%Q%h cmdline \'%Q make_dir ""\' -2'

function trash_box
{
    if [ `marking $(adir)|chomp` = 1 ]
    then
        if [ "%D" = "$TRASH_BOX_DIR" ]
        then
            if [ $(choice "remove ok?" yes no) = 0 ]
            then
                mrm $@
            fi
        else
            if [ $(choice "trashbox ok?" yes no) = 0 ]
            then
                mmv -f $@ $TRASH_BOX_DIR
            fi
        fi
    fi
}

keycommand 0 $key_d             '*'             '%Q trash_box %m'

function mrm_check
{
    if [ `marking $(adir)|chomp` = 1 ]
    then
        if [ $(choice "remove ok?" yes no) = 0 ]
        then 
            mrm $@
        fi
    fi
}

function mln
{
    if [ `marking $(adir)|chomp` = 1 ]
    then
        export i=1
        while [ $i -le $# ]
        do
            ln -s %D${$i} %D2

            set_toggle_mark ${$i}
            cursor_move /${$i}
            redraw
            
            let i="$i + 1"
        done

        reread
    fi
}

keycommand 0 $key_l             '*'             '%Q mln %m'

keycommand 0 $key_D             '*'             '%Q mrm_check %m'

keycommand 0 $key_1             '*'             '%Q%h fg 1'
keycommand 0 $key_2             '*'             '%Q%h fg 2'
keycommand 0 $key_3             '*'             '%Q%h fg 3'
keycommand 0 $key_4             '*'             '%Q%h fg 4'
keycommand 0 $key_5             '*'             '%Q%h fg 5'
keycommand 0 $key_6             '*'             '%Q%h fg 6'
keycommand 0 $key_7             '*'             '%Q%h fg 7'
keycommand 0 $key_8             '*'             '%Q%h fg 8'
keycommand 0 $key_9             '*'             '%Q%h fg 9'

keycommand 1 $key_0             '*'             '%Q%h activate 0'
keycommand 1 $key_1             '*'             '%Q%h activate 1'
keycommand 1 $key_2             '*'             '%Q%h activate 2'
keycommand 1 $key_3             '*'             '%Q%h activate 3'
keycommand 1 $key_4             '*'             '%Q%h activate 4'
keycommand 1 $key_5             '*'             '%Q%h activate 5'
keycommand 1 $key_6             '*'             '%Q%h activate 6'
keycommand 1 $key_7             '*'             '%Q%h activate 7'
keycommand 1 $key_8             '*'             '%Q%h activate 8'
keycommand 1 $key_9             '*'             '%Q%h activate 9'

keycommand 0 $key_ctrl_t        '*'             '%Q%h new_dir %D'
keycommand 0 $key_ctrl_w        '*'             '%Q%h if [ $(dir_num|chomp) -gt 2 ]; then del_dir $(adir|chomp); activate 0; fi'

function run_file_manager
{
    if [ $(uname -s | index CYGWIN) != -1 ]
    then
        cygstart . &
    elif [ $(uname -s | index Darwin) != -1 ]
    then
        open . &
    else
        if [ $(ps axw | grep -v grep | index nautilus) != -1 ]
        then
            nautilus "$PWD" 2>/dev/null
        elif [ $(ps axw | grep -v grep | index kdeinit) != -1 ]
        then
            konqueror "$PWD" 2>/dev/null &
        elif [ $(ps axw | grep -v grep | index xfdesktop) != -1 ]
        then
            thunar "$PWD" 2>/dev/null
        fi
    fi
}


keycommand 0 $key_exclam            '*'             '%Q run_file_manager'

export VIEW_LIST_MODE=0

function toggle_list_mode
{
    if [ $VIEW_LIST_MODE = 0 ]
    then
        export VIEW_LIST_MODE=1

        export VIEW_LIST_MODE_PERMISSION=$VIEW_PERMISSION
        export VIEW_LIST_MODE_NLINK=$VIEW_NLINK
        export VIEW_LIST_MODE_OWNER=$VIEW_OWNER
        export VIEW_LIST_MODE_GROUP=$VIEW_GROUP
        export VIEW_LIST_MODE_SIZE=$VIEW_SIZE
        export VIEW_LIST_MODE_MTIME=$VIEW_MTIME
        export VIEW_LIST_MODE_OPTION=$VIEW_OPTION

        export VIEW_PERMISSION=1
        export VIEW_NLINK=1
        export VIEW_OWNER=1
        export VIEW_GROUP=1
        export VIEW_SIZE=1
        export VIEW_MTIME=1
        export VIEW_OPTION=one_dir
    else
        export VIEW_LIST_MODE=0

        export VIEW_PERMISSION=$VIEW_LIST_MODE_PERMISSION
        export VIEW_NLINK=$VIEW_LIST_MODE_NLINK
        export VIEW_OWNER=$VIEW_LIST_MODE_OWNER
        export VIEW_GROUP=$VIEW_LIST_MODE_GROUP
        export VIEW_SIZE=$VIEW_LIST_MODE_SIZE
        export VIEW_MTIME=$VIEW_LIST_MODE_MTIME
        export VIEW_OPTION=$VIEW_LIST_MODE_OPTION
    fi
}


export VIEW_NAMEONLY_MODE=0

function toggle_nameonly_mode
{
    if [ $VIEW_NAMEONLY_MODE = 0 ]
    then
        export VIEW_NAMEONLY_MODE=1

        export VIEW_NAMEONLY_MODE_PERMISSION=$VIEW_PERMISSION
        export VIEW_NAMEONLY_MODE_NLINK=$VIEW_NLINK
        export VIEW_NAMEONLY_MODE_OWNER=$VIEW_OWNER
        export VIEW_NAMEONLY_MODE_GROUP=$VIEW_GROUP
        export VIEW_NAMEONLY_MODE_SIZE=$VIEW_SIZE
        export VIEW_NAMEONLY_MODE_MTIME=$VIEW_MTIME
        export VIEW_NAMEONLY_MODE_OPTION=$VIEW_OPTION

        export VIEW_PERMISSION=0
        export VIEW_NLINK=0
        export VIEW_OWNER=0
        export VIEW_GROUP=0
        export VIEW_SIZE=0
        export VIEW_MTIME=0
        export VIEW_OPTION=one_dir
    else
        export VIEW_NAMEONLY_MODE=0

        export VIEW_PERMISSION=$VIEW_NAMEONLY_MODE_PERMISSION
        export VIEW_NLINK=$VIEW_NAMEONLY_MODE_NLINK
        export VIEW_OWNER=$VIEW_NAMEONLY_MODE_OWNER
        export VIEW_GROUP=$VIEW_NAMEONLY_MODE_GROUP
        export VIEW_SIZE=$VIEW_NAMEONLY_MODE_SIZE
        export VIEW_MTIME=$VIEW_NAMEONLY_MODE_MTIME
        export VIEW_OPTION=$VIEW_NAMEONLY_MODE_OPTION
    fi
}

export COLOR=0                           # カラー表示

function toggle_color
{
    if [ $COLOR = 0 ]
    then
        export COLOR=1
    else
        export COLOR=0
    fi

    if [ $COLOR = 1 ]
    then
        export COLOR_DIR=$ma_cyan
        export COLOR_EXE=$ma_red
        export COLOR_LINK=$ma_magenta
        export COLOR_MARK=$ma_yellow
    else
        export COLOR_DIR=$ma_bold
        export COLOR_EXE=$ma_bold
        export COLOR_LINK=0
        export COLOR_MARK=$ma_bold
    fi
}

%Q toggle_color

defmenu view '2dir (a)ll' $key_a '%Q export VIEW_OPTION=all' '1dir(1)' $key_1 '%Q export VIEW_OPTION=one_dir' '1dir(2)' $key_2 '%Q export VIEW_OPTION=one_dir2' '1dir(3)' $key_3 '%Q export VIEW_OPTION=one_dir3' '1dir(5)' $key_5 '%Q export VIEW_OPTION=one_dir5' 'toggle (s)ize' $key_s '%Q export VIEW_SIZE=`toggle $VIEW_SIZE|chomp`' 'toggle m(t)ime' $key_t '%Q export VIEW_MTIME=`toggle $VIEW_MTIME|chomp`' 'toggle (u)ser' $key_u '%Q export VIEW_OWNER=`toggle $VIEW_OWNER|chomp`' 'toggle (g)roup' $key_g '%Q export VIEW_GROUP=`toggle $VIEW_GROUP|chomp`' 'toggle nl(i)nk' $key_i '%Q export VIEW_NLINK=`toggle $VIEW_NLINK|chomp`' 'toggle (p)ermission' $key_p '%Q export VIEW_PERMISSION=`toggle $VIEW_PERMISSION|chomp`' 'toggle fname (d)vide extension' $key_d '%Q export VIEW_DIVIDE_EXTENSION=`toggle $VIEW_DIVIDE_EXTENSION|chomp`' 'toggle fname (f)ocus back' $key_f '%Q export VIEW_FOCUSBACK=`toggle $VIEW_FOCUSBACK|chomp`' 'toggle (l)ist mode' $key_l '%Q toggle_list_mode' 'toggle (n)ameonly mode' $key_n '%Q toggle_nameonly_mode' 'toggle (c)olor' $key_c '%Q toggle_color' 'toggle (P)age view way' $key_P '%Q export VIEW_PAGE=`toggle $VIEW_PAGE|chomp`' 'fil(e) size view way Normal' $key_e '%Q export VIEW_FILE_SIZE=Normal' 'fil(E) size view way Human' $key_E '%Q export VIEW_FILE_SIZE=Human' 'file (S)ize view way Plane' $key_P '%Q export VIEW_FILE_SIZE=Plane'

keycommand 0 $key_V             '*'             '%Q%h menu view'

defmenu sort '(n)ame' $key_n '%Q set_sort_kind name; reread -a' '(N)ame reverse' $key_N '%Q set_sort_kind name_rev; reread -a' '(e)xtension' $key_e '%Q set_sort_kind extension; reread' '(E)xtension reverse' $key_E '%Q set_sort_kind extension_rev; reread -a' '(s)ize' $key_s '%Q set_sort_kind size; reread -a' '(S)ize reverse' $key_S '%Q set_sort_kind size_rev; reread -a' '(t)ime' $key_t '%Q set_sort_kind time; reread -a' '(T)ime reverse' $key_T '%Q set_sort_kind time_rev; reread -a' '(u)ser' $key_u '%Q set_sort_kind user; reread -a' '(U)ser reverse' $key_U '%Q set_sort_kind user_rev; reread -a' '(g)roup' $key_g '%Q set_sort_kind group; reread -a' '(G)roup reverse' $key_G '%Q set_sort_kind group_rev; reread -a' '(p)ermission' $key_p '%Q set_sort_kind permission; reread -a' '(P)ermission reverse' $key_P '%Q set_sort_kind permission_rev; reread -a' '(r)andom' $key_r '%Q set_sort_kind random; reread -a' 'none (0)' $key_0 '%Q set_sort_kind none; reread -a' 'toggle (d)ir up' $key_d '%Q toggle_sort_dirup; reread -a' 'toggle (m)ark up' $key_m '%Q toggle_sort_markup; reread -a'

keycommand 0 $key_s             '*'             '%Q%h menu sort'

defmenu attribute 'ch(m)od (permission)' $key_m '%Q cmdline \'chmod  %m\' 6' 'ch(o)wn (owner)' $key_o '%Q cmdline \'chown  %m\' 6' 'ch(g)rp (group)' $key_g '%Q cmdline \'chgrp  %m\' 6' 'ch(M)od -R (permission recursive)' $key_M '%Q cmdline \'chmod -R  %m\' 9' 'ch(O)wn -R (owner recursive)' $key_O '%Q cmdline \'chown -R  %m\' 9' 'ch(G)rp -R (group recursive)' $key_G '%Q cmdline \'chgrp -R  %m\' 9' 'm(a)ttr (permission and date)' $key_a '%q mattr %m'

keycommand 0 $key_a             '*'             '%Q%h menu attribute'

function help
{
    $PAGER << EOS
UP, CTRL-P                        cursor up
DOWN, CTRL-N                      cursor down
LEFT, CTRL-B                      cursor left
RIGHT, CTRL-F                     cursor right
CTRL-A                            cursor top
CTRL-E                            cursor bottom
PAGEUP, CTRL-U, Meta-v            cursor up a lots
PAGEDOWN, CTRL-D, CTRL-V          cursor down a lots
BACKSPACE, CTRL-H                 move to parent direcotry
\\                                move to root directory
~                                 move to home directory
CTRL + I (tab)                    change 2 directory mode or cursor move other directory
ENTER                             run cursor file(insert directory)
CTRL_C                            quit
q                                 change 1 directory mode or quit mfiler3
Q                                 quit mfiler3
CTRL+L                            reread diskt and redraw the screen
SPACE                             mark file
[                                 mark range begin
]                                 mark range end
HOME                              mark all files without directory
END                               mark all files
*                                 regex, glob mark
+                                 mask
.                                 toggle dot file mask
c                                 copy mark file to other directory
C                                 cp
m                                 move mark file to other directory
M                                 mv
d                                 move mark file to $HOME/mtrashbox
D                                 delete mark file
e                                 edit file(run $EDITOR)
v                                 view file(run $PAGER)
r                                 rename
a                                 open attribute menu
n                                 make new file
k                                 make new direcotry
b                                 make backup of file under cursor
g                                 mgrep
G                                 vgrep(virtual directory with grep)
K                                 mmake
f,/                               incremental search
F                                 virtual directory with find
s                                 open sort menu
V                                 open view menu
o,O                               copy direcotry path
w                                 exchange two directories
j                                 jump menu
h                                 switch command line mode
x                                 excute
l                                 make symbolic link
L                                 make symbolic link2
p                                 compression
P                                 compression2
u                                 unpack
U                                 unpack2
:                                 run shell($SHELL)
!                                 run file manager
CTRL + T                          new directory
CTRL + W                          remove current directory
Meta+0-9                          activate directory
Meta + Left                       move to previous directory
Meta + Right                      move to forward directory
1-9                               forground job
@                                 open drag and drop menu
EOS
#.                                 toggle visible dot file
}

keycommand 0 $key_qmark         '*'             '%q help'

keycommand 0 $key_atmark        '*'             '%Q mdnd %m &'

###############################################################################
# ジャンプメニュー
###############################################################################
export JMENU_NUM=0

function jump_menu_add
{
    export JMENU_NAME$JMENU_NUM="$1"
    export JMENU_KEY$JMENU_NUM="$2"
    export JMENU_DIR$JMENU_NUM="$3"

    let JMENU_NUM="$JMENU_NUM + 1"
}

function jump_menu_del
{
    export i=$1
    while [ $i -lt $JMENU_NUM ]
    do
        let j="$i + 1"
        export JMENU_NAME$i="${JMENU_NAME$j}"
        export JMENU_KEY$i="${JMENU_KEY$j}"
        export JMENU_DIR$i="${JMENU_DIR$j}"
        let i="$i + 1"
    done

    let JMENU_NUM="$JMENU_NUM - 1"
}

function jump_menu_del_menu
{
    export command="%Q%hdefmenu jmenu_del"
    export i=0
    while [ $i -lt $JMENU_NUM ]
    do
        export cmd="%Q%hjump_menu_del $i"
        export command="$command \"${JMENU_NAME$i}\" ${JMENU_KEY$i} \"$cmd\""
        let i="$i + 1"
    done

    eval $command

    menu jmenu_del
}

function jump_menu_add_cmdline
{
    cmdline "%Q%hjump_menu_add \'%D\' "'$key_a'" \'%D\'"
}

function jump_menu
{
    export command='%Q%hdefmenu jmenu'
    export i=0
    while [ $i -lt $JMENU_NUM ]
    do
        export jump_cmd="%Q%h cd \\\"${JMENU_DIR$i}\\\""
        export command="$command \"${JMENU_NAME$i}\" ${JMENU_KEY$i} \"$jump_cmd\""
        let i="$i + 1"
    done

    export command="$command '----------------------' $key_A \"%h echo dummy\""
    export command="$command '(A)dd_current_dir' $key_A \"%Q%hjump_menu_add_cmdline\""
    export command="$command '(D)el dir' $key_D \"%Q%hjump_menu_del_menu\""

    eval $command

    menu jmenu
}

keycommand 0 $key_j             '*'             '%Q%h jump_menu'

###############################################################################
# マークレンジ
###############################################################################

function mark_range_start
{
    export MARK_RANGE_BEGIN=$(cursor|chomp)
}

function mark_range_end
{
    export i=$MARK_RANGE_BEGIN
    while [ $i -le $(cursor|chomp) ]
    do
        set_toggle_mark $i

        let i="$i + 1"
    done
}

keycommand 0 $key_lbrack '*'  '%Q%h mark_range_start'
keycommand 0 $key_rbrack '*'  '%Q%h%o mark_range_end'


##############################################################################
# フック
##############################################################################
# 終了時
function atexit_fun
{
    rm -f $INFO_FNAME

    print "view permission" >> $INFO_FNAME
    print $VIEW_PERMISSION >> $INFO_FNAME

    print "view nlink" >> $INFO_FNAME
    print $VIEW_NLINK >> $INFO_FNAME

    print "view owner" >> $INFO_FNAME
    print $VIEW_OWNER >> $INFO_FNAME

    print "view group" >> $INFO_FNAME
    print $VIEW_GROUP >> $INFO_FNAME

    print "view size" >> $INFO_FNAME
    print $VIEW_SIZE >> $INFO_FNAME

    print "view mtime" >> $INFO_FNAME
    print $VIEW_MTIME >> $INFO_FNAME

    print "view focusback" >> $INFO_FNAME
    print $VIEW_FOCUSBACK >> $INFO_FNAME

    print "view page" >> $INFO_FNAME
    print $VIEW_PAGE >> $INFO_FNAME

    print "view divide extension" >> $INFO_FNAME
    print $VIEW_DIVIDE_EXTENSION >> $INFO_FNAME

    print "view option" >> $INFO_FNAME
    print $VIEW_OPTION >> $INFO_FNAME

    print "view file size" >> $INFO_FNAME
    print $VIEW_FILE_SIZE >> $INFO_FNAME

    print "sort kind" >> $INFO_FNAME
    print $SORT_KIND >> $INFO_FNAME

    print "sort mark up" >> $INFO_FNAME
    print $SORT_MARK_UP >> $INFO_FNAME

    print "sort dir up" >> $INFO_FNAME
    print $SORT_DIR_UP >> $INFO_FNAME

    print "color" >> $INFO_FNAME
    print $COLOR >> $INFO_FNAME

    print "jump menu" >> $INFO_FNAME
    print $JMENU_NUM >> $INFO_FNAME

    export i=0
    while [ $i -lt $JMENU_NUM ]
    do
        print "${JMENU_NAME$i}" >> $INFO_FNAME
        print "${JMENU_KEY$i}" >> $INFO_FNAME
        print "${JMENU_DIR$i}" >> $INFO_FNAME

        let i="$i + 1"
    done
}

if [ -r "$INFO_FNAME" ]
then
    open "<INFO>" "$INFO_FNAME" 

    "<INFO>"
    "<INFO>"
    export VIEW_PERMISSION=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_NLINK=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_OWNER=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_GROUP=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_SIZE=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_MTIME=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_FOCUSBACK=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_PAGE=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_DIVIDE_EXTENSION=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_OPTION=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export VIEW_FILE_SIZE=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export SORT_KIND=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export SORT_MARK_UP=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export SORT_DIR_UP=$(print $_|chomp)

    "<INFO>"
    "<INFO>"
    export COLOR=$(print $_|chomp)

    if [ $COLOR = 1 ]
    then
        export COLOR_DIR=$ma_cyan
        export COLOR_EXE=$ma_red
        export COLOR_LINK=$ma_magenta
        export COLOR_MARK=$ma_yellow
    else
        export COLOR_DIR=$ma_bold
        export COLOR_EXE=$ma_bold
        export COLOR_LINK=0
        export COLOR_MARK=$ma_bold
    fi

    "<INFO>"
    "<INFO>"
    export JMENU_NUM=$(print $_|chomp)

    export i=0
    while [ $i -lt $JMENU_NUM ]
    do
        "<INFO>"
        export JMENU_NAME$i=$(print $_|chomp)

        "<INFO>"
        export JMENU_KEY$i=$(print $_|chomp)

        "<INFO>"
        export JMENU_DIR$i=$(print $_|chomp)

        let i="$i + 1"
    done

    close "<INFO>"
fi

##############################################################################
# キーマップ
##############################################################################
keymap   $key_up         27    91    65    -1       -1      -1  -1 -1 -1 -1
keymap   $key_up         27    79    65    -1        -1     -1  -1 -1 -1 -1
keymap   $key_down       27    91    66    -1       -1      -1  -1 -1 -1 -1
keymap   $key_down       27    79    66    -1        -1     -1  -1 -1 -1 -1
keymap   $key_right      27    91    67    -1       -1      -1  -1 -1 -1 -1
keymap   $key_right      27    79    67    -1        -1     -1  -1 -1 -1 -1
keymap   $key_left       27    91    68    -1       -1      -1  -1 -1 -1 -1
keymap   $key_left       27    79    68    -1        -1     -1  -1 -1 -1 -1
keymap   $key_insert     27    91    50    126      -1      -1  -1 -1 -1 -1
keymap   $key_delete     27    91    51    126      -1      -1  -1 -1 -1 -1
keymap   $key_backspace  127   -1    -1    -1       -1      -1  -1 -1 -1 -1
keymap   $key_home       27    79    72    -1       -1      -1  -1 -1 -1 -1
keymap   $key_home       27    91    72    -1       -1      -1  -1 -1 -1 -1
keymap   $key_home       27    91    55    126      -1      -1  -1 -1 -1 -1
keymap   $key_home       27    91    0     -1       -1      -1  -1 -1 -1 -1
keymap   $key_home       27    91    49    126       -1     -1  -1 -1 -1 -1
keymap   $key_end        27    79    70    -1       -1      -1  -1 -1 -1 -1
keymap   $key_end        27    91    70    -1       -1      -1  -1 -1 -1 -1
keymap   $key_end        27    91    56    126      -1      -1  -1 -1 -1 -1
keymap   $key_end        27    91    101   -1       -1      -1  -1 -1 -1 -1
keymap   $key_end        27    91    52    126      -1      -1  -1 -1 -1 -1
keymap   $key_pageup     27    91    53    126      -1      -1  -1 -1 -1 -1
keymap   $key_pageup     27    91    73    -1       -1      -1  -1 -1 -1 -1
keymap   $key_pagedown   27    91    54    126      -1      -1  -1 -1 -1 -1
keymap   $key_pagedown   27    91    71    -1       -1      -1  -1 -1 -1 -1
keymap   $key_f1         27    91    49    49       126     -1  -1 -1 -1 -1
keymap   $key_f1         27    79    80    -1       -1      -1  -1 -1 -1 -1
keymap   $key_f1         27    91    91    65       -1      -1  -1 -1 -1 -1
keymap   $key_f2         27    91    49    50       126     -1  -1 -1 -1 -1
keymap   $key_f2         27    79    81    -1       -1      -1  -1 -1 -1 -1
keymap   $key_f2         27    91    91    66       -1      -1  -1 -1 -1 -1
keymap   $key_f3         27    91    49    51       126     -1  -1 -1 -1 -1
keymap   $key_f3         27    79    82    -1       -1      -1  -1 -1 -1 -1
keymap   $key_f3         27    91    91    67       -1      -1  -1 -1 -1 -1
keymap   $key_f4         27    91    49    52       126     -1  -1 -1 -1 -1
keymap   $key_f4         27    79    83    -1       -1      -1  -1 -1 -1 -1
keymap   $key_f4         27    91    91    68       -1      -1  -1 -1 -1 -1
keymap   $key_f5         27    91    49    53       126     -1  -1 -1 -1 -1
keymap   $key_f5         27    91    91    69       -1      -1  -1 -1 -1 -1
keymap   $key_f6         27    91    49    55       126     -1  -1 -1 -1 -1
keymap   $key_f7         27    91    49    56       126     -1  -1 -1 -1 -1
keymap   $key_f8         27    91    49    57       126     -1  -1 -1 -1 -1
keymap   $key_f9         27    91    50    48       126     -1  -1 -1 -1 -1
keymap   $key_f10        27    91    50    49       126     -1  -1 -1 -1 -1
keymap   $key_f11        27    91    50    51       126     -1  -1 -1 -1 -1
keymap   $key_f12        27    91    50    52       126     -1  -1 -1 -1 -1
keymap   $key_meta_left  27    91    51     68       -1     -1  -1 -1 -1 -1 # gnome-terminal
keymap   $key_meta_left  27    91    49     59       51     68  -1 -1 -1 -1 # xterm
keymap   $key_meta_left  27    91    49     59       57     68  -1 -1 -1 -1 # mlterm
keymap   $key_meta_left  27    79    49     59       51     68  -1 -1 -1 -1 # screen
keymap   $key_meta_right 27    91    51     67       -1     -1  -1 -1 -1 -1 # gnome-terminal
keymap   $key_meta_right 27    91    49     59       51     67  -1 -1 -1 -1 # xterm
keymap   $key_meta_right 27    91    49     59       57     67  -1 -1 -1 -1 # mlterm
keymap   $key_meta_right 27    79    49     59       51     67  -1 -1 -1 -1 # screen
keymap   $key_meta_up    27    91    51     65       -1     -1  -1 -1 -1 -1 # gnome-terminal
keymap   $key_meta_up    27    91    49     59       51     65  -1 -1 -1 -1 # xterm
keymap   $key_meta_up    27    91    49     59       57     65  -1 -1 -1 -1 # mlterm
keymap   $key_meta_up    27    79    49     59       51     65  -1 -1 -1 -1 # screen
keymap   $key_meta_down  27    91    51     66       -1     -1  -1 -1 -1 -1 # gnome-terminal
keymap   $key_meta_down  27    91    49     59       51     66  -1 -1 -1 -1 # xterm
keymap   $key_meta_down  27    91    49     59       57     66  -1 -1 -1 -1 # mlterm
keymap   $key_meta_down  27    79    49     59       51     66  -1 -1 -1 -1 # screen


