function _asusctl() {
    local line
    
    _arguments -C \
        {-h,--help}'[print help message]' \
        {-v,--version}'[print version number]' \
        {-k,--kbd-bright}':[Set keyboard brightness (off, low, med, high)]' \
        {-p,--pwr-profile}':[Set power profile (silent, normal, boost)]' \
        {-c,--chg-limit}':[Set charging limit (20-100)]' \
        ': :((led-mode\:"Set the keyboard lighting from built-in modes" profile\:"Create and configure profiles" graphics\:"Set the graphics mode"))' \
        '*::arg:->args'
    case $line[1] in
        led-mode)
            _arguments ': :((static\:"set a single static colour"
                       breathe\:"pulse between one or two colours"
                       strobe\:"strobe through all colours"
                       rainbow\:"rainbow cycling in one of four directions"
                       star\:"rain pattern mimicking raindrops"
                       rain\:"rain pattern of three preset colours"
                       highlight\:"pressed keys are highlighted to fade"
                       laser\:"pressed keys generate horizontal laser"
                       ripple\:"pressed keys ripple outwards like a splash"
                       pulse\:"set a rapid pulse"
                       comet\:"set a vertical line zooming from left"
                       flash\:"set a wide vertical line zooming from left"
                       multi-static\:"4-zone multi-colour"))' \
                       {-h,--help}'[print help message]' \
                       '-c:[set the RGB value e.g, ff00ff]' \
                       '-s:[set the speed (low, med, high)]'
            ;;
        profile)
            _arguments {-h,--help}'[print help message]' \
                       {-c,--create}"[create the profile if it doesn't exist]" \
                       {-t,--turbo}':[enable or disable cpu turbo]' \
                       {-m,--min-percentage}':[set min cpu scaling (intel)]' \
                       {-M,--max-percentage}':[set max cpu scaling (intel)]' \
                       {-p,--preset}':[<silent, normal, boost>]' \
                       {-C,--curve}':[set fan curve]'

            ;;
        graphics)
            _arguments {-h,--help}'[print help message]' \
                       {-m,--mode}':[Set graphics mode (nvidia, hybrid, compute, integrated)]' \
                       {-g,--get}'[Get the current mode]' \
                       {-p,--pow}'[Get the current power status]' \
                       {-f,--force}'[Do not ask for confirmation]'
            ;;
    esac
}
compdef _asusctl asusctl
