bind() {
    if [ $# -eq 3 ]; then
        $CREATE "/keys/mode/$1/$2" "$3"
    else
        echo "error: $0: bind takes exactly three arguments" >&2
        echo "usage: bind <mode> <keycombo> <command>" >&2
    fi
}

#---------------------------------------------------------------------

# set box style for shortcut sequences:
$WRITE /keys/box/style/text-align "$SELECTED_TEXT_ALIGN"
$WRITE /keys/box/style/text-font "$SELECTED_TEXT_FONT"
$WRITE /keys/box/style/text-size "$SELECTED_TEXT_SIZE"
$WRITE /keys/box/style/text-color "$SELECTED_FG_COLOR"
$WRITE /keys/box/style/bg-color "$SELECTED_BG_COLOR"
$WRITE /keys/box/style/border-color "$SELECTED_BORDER_COLOR"

$REMOVE /keys/mode 2>/dev/null

# set key bindings of the bare mode:
bind bare "$MODKEY+Escape" "wmira knorm"

# set key bindings of the move mode:
bind move Escape "wmira knorm"
bind move "$MODKEY+ctrl+r" "wmira kresize"
bind move "$NORTHKEY" "wmira fresize -0,-30,-0,-0"
bind move "$SOUTHKEY" "wmira fresize +0,+30,+0,+0"
bind move "$WESTKEY" "wmira fresize -40,-0,-0,-0"
bind move "$EASTKEY" "wmira fresize +40,+0,+0,+0"
bind move "shift+$NORTHKEY" "wmira fresize -0,north,-0,-0"
bind move "shift+$SOUTHKEY" "wmira fresize '+0,south-$BAR_HEIGHT,+0,+0'"
bind move "shift+$WESTKEY" "wmira fresize west,-0,-0,-0"
bind move "shift+$EASTKEY" "wmira fresize east,+0,+0,+0"

# set key bindings of the resize mode:
bind resize Escape "wmira knorm"
bind resize "$MODKEY+ctrl+m" "wmira kmove"
bind resize "$NORTHKEY" "wmira fresize +0,+0,+0,-30"
bind resize "$SOUTHKEY" "wmira fresize +0,+0,+0,+30"
bind resize "$WESTKEY" "wmira fresize +0,+0,-40,+0"
bind resize "$EASTKEY" "wmira fresize +0,+0,+40,+0"

# set key bindings of the normal mode:
bind normal "$MODKEY+ctrl+b" "wmira kbare"
bind normal "$MODKEY+ctrl+m" "wmira kmove"
bind normal "$MODKEY+ctrl+r" "wmira kresize"
bind normal "$MODKEY+ctrl+a" "wmira actions"
bind normal "$MODKEY+ctrl+p" "wmira programs"
bind normal "$MODKEY+ctrl+c" "wmira close"
bind normal "$MODKEY+ctrl+q/y" "wmira quit"
bind normal "$MODKEY+t" "wmira term"
bind normal "$MODKEY+d" "wmira detach"
bind normal "$MODKEY+a" "wmira attach"
bind normal "$MODKEY+shift+a" "wmira icons"
bind normal "$MODKEY+shift+space" "wmira ftoggle"
bind normal "$MODKEY+Return" "wmira zoom"
bind normal "$MODKEY+ctrl+y" "wmira pnew"
bind normal "$MODKEY+u" "wmira lock 0"
bind normal "$MODKEY+shift+u" "wmira lock 1"
bind normal "$MODKEY+m" "wmira max"
bind normal "$MODKEY+shift+t" "wmira ltiled"
bind normal "$MODKEY+shift+g" "wmira lgrid"
bind normal "$MODKEY+shift+v" "wmira lvsplit"
bind normal "$MODKEY+shift+f" "wmira lfloat"
bind normal "$MODKEY+shift+m" "wmira lmax"
# navigation:
bind normal "$MODKEY+$WESTKEY" "wmira pprev"
bind normal "$MODKEY+$EASTKEY" "wmira pnext"
bind normal "$MODKEY+Tab" "wmira fnext" # legacy
bind normal "$MODKEY+$SOUTHKEY" "wmira fnext"
bind normal "$MODKEY+$NORTHKEY" "wmira fprev"
bind normal "$MODKEY+shift+Tab" "wmira cnext"
bind normal "$MODKEY+shift+$SOUTHKEY" "wmira cnext"
bind normal "$MODKEY+shift+$NORTHKEY" "wmira cprev"
bind normal "$MODKEY+space" "wmira ptoggle"
for i in 1 2 3 4 5 6 7 8 9; do
    bind normal "$MODKEY+shift+$i" "wmira p $i"
done
bind normal "$MODKEY+0" "wmira p 10"
bind normal "$MODKEY+shift+p" "wmira pager"

# activate normal mode:
wmira knorm
