mirror of
https://github.com/mpv-player/mpv
synced 2024-12-29 18:42:09 +00:00
7fd3eb0f74
As part of merging subtitle-in-terminal changes make update_subtitles() only clear existing subtitles if called with the reset argument, and not try to set new ones. Later calls should set the needed new subtitles, and this change avoids some problems with trying to set subtitles when mp_property_sub() in command.c gets called from initialization code before full initialization.
93 lines
3.3 KiB
C
93 lines
3.3 KiB
C
/*
|
|
* This file is part of MPlayer.
|
|
*
|
|
* MPlayer is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* MPlayer is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
#include "config.h"
|
|
|
|
// only to get keycode definitions from HIToolbox/Events.h
|
|
#include <Carbon/Carbon.h>
|
|
#include "osx_common.h"
|
|
#include "old_vo_defines.h"
|
|
#include "video_out.h"
|
|
#include "osdep/keycodes.h"
|
|
#include "input/input.h"
|
|
|
|
static const struct keymap keymap[] = {
|
|
// special keys
|
|
{0x34, KEY_ENTER}, // Enter key on some iBooks?
|
|
{kVK_Return, KEY_ENTER},
|
|
{kVK_Escape, KEY_ESC},
|
|
{kVK_Delete, KEY_BACKSPACE}, {kVK_Option, KEY_BACKSPACE}, {kVK_Control, KEY_BACKSPACE}, {kVK_Shift, KEY_BACKSPACE},
|
|
{kVK_Tab, KEY_TAB},
|
|
|
|
// cursor keys
|
|
{kVK_UpArrow, KEY_UP}, {kVK_DownArrow, KEY_DOWN}, {kVK_LeftArrow, KEY_LEFT}, {kVK_RightArrow, KEY_RIGHT},
|
|
|
|
// navigation block
|
|
{kVK_Help, KEY_INSERT}, {kVK_ForwardDelete, KEY_DELETE}, {kVK_Home, KEY_HOME},
|
|
{kVK_End, KEY_END}, {kVK_PageUp, KEY_PAGE_UP}, {kVK_PageDown, KEY_PAGE_DOWN},
|
|
|
|
// F-keys
|
|
{kVK_F1, KEY_F + 1}, {kVK_F2, KEY_F + 2}, {kVK_F3, KEY_F + 3}, {kVK_F4, KEY_F + 4},
|
|
{kVK_F5, KEY_F + 5}, {kVK_F6, KEY_F + 6}, {kVK_F7, KEY_F + 7}, {kVK_F8, KEY_F + 8},
|
|
{kVK_F9, KEY_F + 9}, {kVK_F10, KEY_F + 10}, {kVK_F11, KEY_F + 11}, {kVK_F12, KEY_F + 12},
|
|
|
|
// numpad
|
|
{kVK_ANSI_KeypadPlus, '+'}, {kVK_ANSI_KeypadMinus, '-'}, {kVK_ANSI_KeypadMultiply, '*'},
|
|
{kVK_ANSI_KeypadDivide, '/'}, {kVK_ANSI_KeypadEnter, KEY_KPENTER}, {kVK_ANSI_KeypadDecimal, KEY_KPDEC},
|
|
{kVK_ANSI_Keypad0, KEY_KP0}, {kVK_ANSI_Keypad1, KEY_KP1}, {kVK_ANSI_Keypad2, KEY_KP2}, {kVK_ANSI_Keypad3, KEY_KP3},
|
|
{kVK_ANSI_Keypad4, KEY_KP4}, {kVK_ANSI_Keypad5, KEY_KP5}, {kVK_ANSI_Keypad6, KEY_KP6}, {kVK_ANSI_Keypad7, KEY_KP7},
|
|
{kVK_ANSI_Keypad8, KEY_KP8}, {kVK_ANSI_Keypad9, KEY_KP9},
|
|
|
|
{0, 0}
|
|
};
|
|
|
|
int convert_key(unsigned key, unsigned charcode)
|
|
{
|
|
int mpkey = lookup_keymap_table(keymap, key);
|
|
if (mpkey)
|
|
return mpkey;
|
|
return charcode;
|
|
}
|
|
|
|
static int our_aspect_change;
|
|
static float old_movie_aspect;
|
|
|
|
/**
|
|
* Sends MPlayer a command to change aspect to the requested value.
|
|
* @param new_aspect desired new aspect, < 0 means restore original.
|
|
*/
|
|
void change_movie_aspect(float new_aspect)
|
|
{
|
|
char cmd_str[64];
|
|
if (new_aspect < 0)
|
|
new_aspect = old_movie_aspect;
|
|
our_aspect_change = 1;
|
|
snprintf(cmd_str, sizeof(cmd_str), "switch_ratio %f", new_aspect);
|
|
mp_input_queue_cmd(global_vo->input_ctx, mp_input_parse_cmd(cmd_str));
|
|
}
|
|
|
|
/**
|
|
* Call in config to save the original movie aspect.
|
|
* This will ignore config calls caused by change_movie_aspect.
|
|
*/
|
|
void config_movie_aspect(float config_aspect)
|
|
{
|
|
if (!our_aspect_change)
|
|
old_movie_aspect = config_aspect;
|
|
our_aspect_change = 0;
|
|
}
|