add shortcut directive, implement first/pre/next/last keyboard navigation