📄 hotkeys.c
字号:
playlist_Play( p_playlist ); } } else if( i_action == ACTIONID_AUDIODEVICE_CYCLE ) { vlc_value_t val, list, list2; int i_count, i; aout_instance_t *p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); var_Get( p_aout, "audio-device", &val ); var_Change( p_aout, "audio-device", VLC_VAR_GETCHOICES, &list, &list2 ); i_count = list.p_list->i_count; /* Not enough device to switch between */ if( i_count <= 1 ) continue; for( i = 0; i < i_count; i++ ) { if( val.i_int == list.p_list->p_values[i].i_int ) { break; } } if( i == i_count ) { msg_Warn( p_aout, "invalid current audio device, selecting 0" ); var_Set( p_aout, "audio-device", list.p_list->p_values[0] ); i = 0; } else if( i == i_count -1 ) { var_Set( p_aout, "audio-device", list.p_list->p_values[0] ); i = 0; } else { var_Set( p_aout, "audio-device", list.p_list->p_values[i+1] ); i++; } vout_OSDMessage( p_intf, DEFAULT_CHAN, _("Audio Device: %s"), list2.p_list->p_values[i].psz_string); vlc_object_release( p_aout ); } /* Input options */ else if( p_input ) { bool b_seekable = var_GetBool( p_input, "seekable" ); int i_interval =0; if( i_action == ACTIONID_PAUSE ) { var_Get( p_input, "state", &val ); if( val.i_int != PAUSE_S ) { ClearChannels( p_intf, p_vout ); vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN, OSD_PAUSE_ICON ); val.i_int = PAUSE_S; var_Set( p_input, "state", val ); } } else if( i_action == ACTIONID_JUMP_BACKWARD_EXTRASHORT && b_seekable ) {#define SET_TIME( a, b ) \ i_interval = config_GetInt( p_input, a "-jump-size" ); \ if( i_interval > 0 ) { \ val.i_time = (mtime_t)(i_interval * b) * 1000000L; \ var_Set( p_input, "time-offset", val ); \ DisplayPosition( p_intf, p_vout, p_input ); \ } SET_TIME( "extrashort", -1 ); } else if( i_action == ACTIONID_JUMP_FORWARD_EXTRASHORT && b_seekable ) { SET_TIME( "extrashort", 1 ); } else if( i_action == ACTIONID_JUMP_BACKWARD_SHORT && b_seekable ) { SET_TIME( "short", -1 ); } else if( i_action == ACTIONID_JUMP_FORWARD_SHORT && b_seekable ) { SET_TIME( "short", 1 ); } else if( i_action == ACTIONID_JUMP_BACKWARD_MEDIUM && b_seekable ) { SET_TIME( "medium", -1 ); } else if( i_action == ACTIONID_JUMP_FORWARD_MEDIUM && b_seekable ) { SET_TIME( "medium", 1 ); } else if( i_action == ACTIONID_JUMP_BACKWARD_LONG && b_seekable ) { SET_TIME( "long", -1 ); } else if( i_action == ACTIONID_JUMP_FORWARD_LONG && b_seekable ) { SET_TIME( "long", 1 );#undef SET_TIME } else if( i_action == ACTIONID_AUDIO_TRACK ) { vlc_value_t val, list, list2; int i_count, i; var_Get( p_input, "audio-es", &val ); var_Change( p_input, "audio-es", VLC_VAR_GETCHOICES, &list, &list2 ); i_count = list.p_list->i_count; if( i_count <= 1 ) { continue; } for( i = 0; i < i_count; i++ ) { if( val.i_int == list.p_list->p_values[i].i_int ) { break; } } /* value of audio-es was not in choices list */ if( i == i_count ) { msg_Warn( p_input, "invalid current audio track, selecting 0" ); var_Set( p_input, "audio-es", list.p_list->p_values[0] ); i = 0; } else if( i == i_count - 1 ) { var_Set( p_input, "audio-es", list.p_list->p_values[1] ); i = 1; } else { var_Set( p_input, "audio-es", list.p_list->p_values[i+1] ); i++; } vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Audio track: %s"), list2.p_list->p_values[i].psz_string ); } else if( i_action == ACTIONID_SUBTITLE_TRACK ) { vlc_value_t val, list, list2; int i_count, i; var_Get( p_input, "spu-es", &val ); var_Change( p_input, "spu-es", VLC_VAR_GETCHOICES, &list, &list2 ); i_count = list.p_list->i_count; if( i_count <= 1 ) { vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Subtitle track: %s"), _("N/A") ); continue; } for( i = 0; i < i_count; i++ ) { if( val.i_int == list.p_list->p_values[i].i_int ) { break; } } /* value of spu-es was not in choices list */ if( i == i_count ) { msg_Warn( p_input, "invalid current subtitle track, selecting 0" ); var_Set( p_input, "spu-es", list.p_list->p_values[0] ); i = 0; } else if( i == i_count - 1 ) { var_Set( p_input, "spu-es", list.p_list->p_values[0] ); i = 0; } else { var_Set( p_input, "spu-es", list.p_list->p_values[i+1] ); i = i + 1; } vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Subtitle track: %s"), list2.p_list->p_values[i].psz_string ); } else if( i_action == ACTIONID_ASPECT_RATIO && p_vout ) { vlc_value_t val={0}, val_list, text_list; var_Get( p_vout, "aspect-ratio", &val ); if( var_Change( p_vout, "aspect-ratio", VLC_VAR_GETLIST, &val_list, &text_list ) >= 0 ) { int i; for( i = 0; i < val_list.p_list->i_count; i++ ) { if( !strcmp( val_list.p_list->p_values[i].psz_string, val.psz_string ) ) { i++; break; } } if( i == val_list.p_list->i_count ) i = 0; var_SetString( p_vout, "aspect-ratio", val_list.p_list->p_values[i].psz_string ); vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Aspect ratio: %s"), text_list.p_list->p_values[i].psz_string ); var_Change( p_vout, "aspect-ratio", VLC_VAR_FREELIST, &val_list, &text_list ); } free( val.psz_string ); } else if( i_action == ACTIONID_CROP && p_vout ) { vlc_value_t val={0}, val_list, text_list; var_Get( p_vout, "crop", &val ); if( var_Change( p_vout, "crop", VLC_VAR_GETLIST, &val_list, &text_list ) >= 0 ) { int i; for( i = 0; i < val_list.p_list->i_count; i++ ) { if( !strcmp( val_list.p_list->p_values[i].psz_string, val.psz_string ) ) { i++; break; } } if( i == val_list.p_list->i_count ) i = 0; var_SetString( p_vout, "crop", val_list.p_list->p_values[i].psz_string ); vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Crop: %s"), text_list.p_list->p_values[i].psz_string ); var_Change( p_vout, "crop", VLC_VAR_FREELIST, &val_list, &text_list ); } free( val.psz_string ); } else if( i_action == ACTIONID_DEINTERLACE && p_vout ) { vlc_value_t val={0}, val_list, text_list; var_Get( p_vout, "deinterlace", &val ); if( var_Change( p_vout, "deinterlace", VLC_VAR_GETLIST, &val_list, &text_list ) >= 0 ) { int i; for( i = 0; i < val_list.p_list->i_count; i++ ) { if( !strcmp( val_list.p_list->p_values[i].psz_string, val.psz_string ) ) { i++; break; } } if( i == val_list.p_list->i_count ) i = 0; var_SetString( p_vout, "deinterlace", val_list.p_list->p_values[i].psz_string ); vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Deinterlace mode: %s"), text_list.p_list->p_values[i].psz_string ); var_Change( p_vout, "deinterlace", VLC_VAR_FREELIST, &val_list, &text_list ); } free( val.psz_string ); } else if( ( i_action == ACTIONID_ZOOM || i_action == ACTIONID_UNZOOM ) && p_vout ) { vlc_value_t val={0}, val_list, text_list; var_Get( p_vout, "zoom", &val ); if( var_Change( p_vout, "zoom", VLC_VAR_GETLIST, &val_list, &text_list ) >= 0 ) { int i; for( i = 0; i < val_list.p_list->i_count; i++ ) { if( val_list.p_list->p_values[i].f_float == val.f_float ) { if( i_action == ACTIONID_ZOOM ) i++; else /* ACTIONID_UNZOOM */ i--; break; } } if( i == val_list.p_list->i_count ) i = 0; if( i == -1 ) i = val_list.p_list->i_count-1; var_SetFloat( p_vout, "zoom", val_list.p_list->p_values[i].f_float ); vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Zoom mode: %s"), text_list.p_list->p_values[i].var.psz_name ); var_Change( p_vout, "zoom", VLC_VAR_FREELIST, &val_list, &text_list ); } } else if( i_action == ACTIONID_CROP_TOP && p_vout ) var_IncInteger( p_vout, "crop-top" ); else if( i_action == ACTIONID_UNCROP_TOP && p_vout ) var_DecInteger( p_vout, "crop-top" ); else if( i_action == ACTIONID_CROP_BOTTOM && p_vout ) var_IncInteger( p_vout, "crop-bottom" ); else if( i_action == ACTIONID_UNCROP_BOTTOM && p_vout ) var_DecInteger( p_vout, "crop-bottom" ); else if( i_action == ACTIONID_CROP_LEFT && p_vout ) var_IncInteger( p_vout, "crop-left" ); else if( i_action == ACTIONID_UNCROP_LEFT && p_vout ) var_DecInteger( p_vout, "crop-left" ); else if( i_action == ACTIONID_CROP_RIGHT && p_vout ) var_IncInteger( p_vout, "crop-right" ); else if( i_action == ACTIONID_UNCROP_RIGHT && p_vout ) var_DecInteger( p_vout, "crop-right" ); else if( i_action == ACTIONID_NEXT ) { vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Next") ); playlist_Next( p_playlist ); } else if( i_action == ACTIONID_PREV ) { vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Previous") ); playlist_Prev( p_playlist ); } else if( i_action == ACTIONID_STOP ) { playlist_Stop( p_playlist ); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -