From 78533d2eac89aedb3b8983449cbfb5a13a66842b Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Mon, 23 Sep 2019 18:04:18 +0800 Subject: [PATCH] Move video keybinding from python to elisp side. --- app/videoplayer/buffer.py | 26 ++++++++++++++------------ docs/KEYBINDING.md | 2 +- eaf.el | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/app/videoplayer/buffer.py b/app/videoplayer/buffer.py index 7004191..ecadb6c 100644 --- a/app/videoplayer/buffer.py +++ b/app/videoplayer/buffer.py @@ -50,6 +50,20 @@ class AppBuffer(Buffer): position = int(session_data) self.buffer_widget.media_player.setPosition(position) + def toggle_play(self): + if self.buffer_widget.media_player.state() == QMediaPlayer.PlayingState: + self.buffer_widget.media_player.pause() + self.buffer_widget.video_need_replay = False + else: + self.buffer_widget.media_player.play() + self.buffer_widget.video_need_replay = True + + def play_backward(self): + self.buffer_widget.seek_backward() + + def play_forward(self): + self.buffer_widget.seek_forward() + class VideoPlayerWidget(QWidget): def __init__(self, parent=None): @@ -91,15 +105,3 @@ class VideoPlayerWidget(QWidget): video_position = self.media_player.position() self.media_player.setPosition(max(video_position - self.video_seek_durcation, 0)) - def keyPressEvent(self, event): - if event.key() == Qt.Key_Space: - if self.media_player.state() == QMediaPlayer.PlayingState: - self.media_player.pause() - self.video_need_replay = False - else: - self.media_player.play() - self.video_need_replay = True - elif event.key() == Qt.Key_H: - self.seek_backward() - elif event.key() == Qt.Key_L: - self.seek_forward() diff --git a/docs/KEYBINDING.md b/docs/KEYBINDING.md index b201466..745be0a 100644 --- a/docs/KEYBINDING.md +++ b/docs/KEYBINDING.md @@ -36,7 +36,7 @@ | [ | Remember position | | ] | Remember jump | -### Vide Player +### Video Player | Video Player Key | Event | | :-----: | :---- | diff --git a/eaf.el b/eaf.el index 8dbdff1..dc2d591 100644 --- a/eaf.el +++ b/eaf.el @@ -182,6 +182,15 @@ by `dired-find-alternate-file'. Otherwise they will be opened normally with `dir :type 'cons :group 'eaf) +(defcustom eaf-videoplayer-keybinding + '(("SPC" . "toggle_play") + ("h" . "play_backward") + ("l" . "play_forward") + ) + "The keybinding of video player." + :type 'cons + :group 'eaf) + (defun eaf-call (method &rest args) (apply 'dbus-call-method :session ; use the session (not system) bus @@ -397,6 +406,11 @@ We need calcuate render allocation to make sure no black border around render co (if function-name-value (eaf-call "execute_function" buffer-id (cdr function-name-value)) (eaf-call "send_key" buffer-id key-desc)))) + ((equal buffer-app-name "videoplayer") + (let ((function-name-value (assoc key-desc eaf-videoplayer-keybinding))) + (if function-name-value + (eaf-call "execute_function" buffer-id (cdr function-name-value)) + (eaf-call "send_key" buffer-id key-desc)))) (t (eaf-call "send_key" buffer-id key-desc)))) ((string-match "^[CMSs]-.*" key-desc)