From ed77b757a06e755ec37fe2ccc3928616715895b4 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 27 May 2000 16:10:47 +0200 Subject: [PATCH] Reduced number of remote control keys --- BUGS | 2 +- INSTALL | 22 +++++++----------- MANUAL | 62 +++++++++++++++++++++++++++++++++++---------------- TODO | 7 ++---- config.c | 18 +++++---------- config.h | 12 ++-------- keys-pc.conf | Bin 425 -> 283 bytes menu.c | 36 +++++++++++++++++------------- osd.h | 3 ++- vdr.c | 11 +++++---- 10 files changed, 89 insertions(+), 84 deletions(-) diff --git a/BUGS b/BUGS index 66755f9f..6497b6b2 100644 --- a/BUGS +++ b/BUGS @@ -1,7 +1,7 @@ Video Disk Recorder - Known Bugs -------------------------------- -* Sometimes picture and sound drift apart. +* Sometimes the picture "jumps" as if a frame is skipped. Presumably this is a problem in the card driver or firmware? * When the on-screen display is activated during recording, diff --git a/INSTALL b/INSTALL index 7ef3bc9a..bc619d7c 100644 --- a/INSTALL +++ b/INSTALL @@ -12,7 +12,7 @@ about that driver). For example, if the DVB driver was extracted into the directory /home/kls/vdr/DVB, then this package should be extracted into /home/kls/vdr/VDR. -This program requires the card driver version 0.04 or higher +This program requires the card driver version 0.05 or higher to work properly. After extracting the package, change into the VDR directory @@ -73,7 +73,9 @@ key after the other so that it can learn the various key codes. You will at least need to provide an "Up" and a "Down" key, so that you can switch channels. The rest of the key definitions is optional, but the more keys you define, the more you will be able to navigate through the menus and -control recording/replaying. +control recording/replaying. The program uses only a very small number +of keys which have multiple meanings in the various modes (see MANUAL +for a detailed description). If the program has been built with "DEBUG_REMOTE=1", it will use the key configuration file 'keys-pc.conf', so that you won't loose data when switching between normal and debug mode. @@ -81,19 +83,11 @@ when switching between normal and debug mode. The default PC key assignments are: Up, Down, Left, Right Crsr keys in numeric block - Menu '5' in numeric block - Ok Enter - Back Backspace - 0..9 '0'..'9' in top row + Menu 'Home' in numeric block + Ok '5' in numeric block + Back 'End' in numeric block Red, Green, Yellow, Blue 'F1'..'F4' - Record 'r' - Pause 'p' - Stop 's' - Begin 'B' - SearchForward 'f' - SearchBack 'b' - SkipForward 'PgDn' in numeric block - SkipBack 'PgUp' in numeric block + 0..9 '0'..'9' in top row If you prefer different key assignments, simply delete the file 'keys-pc.conf' and restart 'vdr' to get into learning mode. diff --git a/MANUAL b/MANUAL index 40ec5f94..cea39466 100644 --- a/MANUAL +++ b/MANUAL @@ -1,6 +1,28 @@ Video Disk Recorder User's Manual --------------------------------- +* Remote Control Keys + + The following remote control keys are used to control the VDR + operation. To keep the number of different keys as small as + possible, several keys have different meanings in the various + modes: + + Key Normal Main Channels Timer Edit/New Recordings Replay + + Up Ch up Crsr up Crsr up Crsr up Crsr up Crsr up Begin + Down Ch down Crsr down Crsr down Crsr down Crsr down Crsr down Pause + Left - - - Disable Decrement - Search back + Right - - - Enable Increment - Search forward + Ok Ch display Select Switch Edit Accept Play Progress disp. + Menu Menu on Menu off Menu off Menu off Menu off Menu off Menu on + Back - Menu off Main menu Main menu Discard Main menu - + Red - Record Edit Edit - Play - + Green - - New New - - Skip -60s + Yellow - - Delete Delete - Delete Skip +60s + Blue - - Mark Mark - - Stop + 0..9 Ch select - - - Numeric inp. - - + * Navigating through the On Screen Menus The "Main" menu can be called up with the "Menu" key of your remote @@ -22,10 +44,10 @@ Video Disk Recorder User's Manual keys. "Ok" then confirms the changes. The "Red", "Green", "Yellow" and "Blue" buttons have special meanings - in the various menus and are listed at the bottom of the on-screen-display. + in various menus and are listed at the bottom of the on-screen-display. At any point in the menu system, pressing the "Menu" key again will - immediately leave the menu system. + immediately leave the menu system (discarding any pending changes). * Selecting a Channel @@ -48,9 +70,9 @@ Video Disk Recorder User's Manual * Instant Recording - You can start recording the current channel by pressing the "Record" - button. This will create a timer event named "@channelname" that starts - at the current time and records for two hours. + You can start recording the current channel by pressing the "Red" button + in the Main menu. This will create a timer event named "@channelname" that + starts at the current time and records for two hours. If you want to modify the recording time you need to edit the timer. Stop instant recording by pressing the "Menu" button and selecting "Stop Recording", or by disabling the timer. @@ -61,25 +83,27 @@ Video Disk Recorder User's Manual list with the "Up" and "Down" button and press "Ok" (or the "Red" button) to start playback. Playback can be stopped via the Main menu by selecting "Stop replaying", - or by pressing the "Stop" button outside the menu. + or by pressing the "Blue" button outside the menu. * Replay Control The following keys have the listed meaning in Replay mode: - - "Begin" Positions to beginning of the recording and starts playback - from there. - - "Pause" Halts playback at the current position. Press again to continue - playback. - - "Stop" Stops playback and stores the current position, so that - playback can be resumed later at that point. - - "Search" Runs playback forward or backward at a higher speed. Press - again to resume normal speed. - - "Skip" Skips about 60 seconds forward or backward. - - "Ok" Brings up the replay progress display, which shows the date, - time and title of the recording, a progress bar and the - current and total time of the recording. - Press "Ok" again to turn off the progress display. + - Up Positions to beginning of the recording and starts playback + from there. + - Down Halts playback at the current position. Press again to continue + playback. + - Blue Stops playback and stores the current position, so that + playback can be resumed later at that point. + - Left + Right Runs playback forward or backward at a higher speed. Press + again to resume normal speed. + - Green + Yellow Skips about 60 seconds back or forward. + - Ok Brings up the replay progress display, which shows the date, + time and title of the recording, a progress bar and the + current and total time of the recording. + Press "Ok" again to turn off the progress display. * Programming the Timer diff --git a/TODO b/TODO index 8f5d2f3d..64b31b23 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,8 @@ TODO list for the Video Disk Recorder project --------------------------------------------- -* Make it work with two DVB-S PCI cards to allow simultaneous - recording of one programme, while replaying another programme - (or maybe the same one, but time delayed). - Maybe we can do this with only a single card, if the card - driver/firmware allows simultaneuos record/playback? +* Implement simultaneous record/replay with a single DVB card once + the card driver/firmware allows this. * Implement "on-disk editing" to allow "cutting out" of certain scenes in order to archive them (or, reversely, cut out commercial breaks). diff --git a/config.c b/config.c index 16e34ccb..7e02c916 100644 --- a/config.c +++ b/config.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.c 1.6 2000/05/01 16:29:31 kls Exp $ + * $Id: config.c 1.7 2000/05/27 14:44:15 kls Exp $ */ #include "config.h" @@ -23,6 +23,10 @@ tKey keyTable[] = { // "Up" and "Down" must be the first two keys! { kBack, "Back", 0 }, { kLeft, "Left", 0 }, { kRight, "Right", 0 }, + { kRed, "Red", 0 }, + { kGreen, "Green", 0 }, + { kYellow, "Yellow", 0 }, + { kBlue, "Blue", 0 }, { k0, "0", 0 }, { k1, "1", 0 }, { k2, "2", 0 }, @@ -33,18 +37,6 @@ tKey keyTable[] = { // "Up" and "Down" must be the first two keys! { k7, "7", 0 }, { k8, "8", 0 }, { k9, "9", 0 }, - { kRed, "Red", 0 }, - { kGreen, "Green", 0 }, - { kYellow, "Yellow", 0 }, - { kBlue, "Blue", 0 }, - { kRecord, "Record", 0 }, - { kPause, "Pause", 0 }, - { kStop, "Stop", 0 }, - { kBegin, "Begin", 0 }, - { kSearchForward, "SearchForward", 0 }, - { kSearchBack, "SearchBack", 0 }, - { kSkipForward, "SkipForward", 0 }, - { kSkipBack, "SkipBack", 0 }, { kNone, "", 0 }, }; diff --git a/config.h b/config.h index a66a2579..1e22b888 100644 --- a/config.h +++ b/config.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.5 2000/05/01 10:45:17 kls Exp $ + * $Id: config.h 1.6 2000/05/27 14:43:46 kls Exp $ */ #ifndef __CONFIG_H @@ -27,19 +27,11 @@ enum eKeys { // "Up" and "Down" must be the first two keys! kBack, kLeft, kRight, - k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, kRed, kGreen, kYellow, kBlue, - kRecord, - kPause, - kStop, - kBegin, - kSearchForward, - kSearchBack, - kSkipForward, - kSkipBack, + k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, kNone }; diff --git a/keys-pc.conf b/keys-pc.conf index 744609d5c09e0c95ec545e912d01d81de7cd64ab..cb0192be3fcc6e296bcd6efd69c099dfd7fdf664 100644 GIT binary patch delta 70 zcmZ3}5)a>@5>KTCew(D3R5 zo2H4}_bZwneja~6DKglF@h(c^i|<2HPUCo+nP`Wis*_UW@yX|>xH6pD%XN_!lw5|O z1QoQPh7mN#1T$Dc3n%E{1wGb+Yvh7CPTb5wQI11oUe4Lzm%A>E(k@VR1B=>D&N{?o zCa>{b4Si~pCzQ{Saw2a~@TEHq)$ diff --git a/menu.c b/menu.c index b6e3adfc..1adac94d 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.14 2000/05/06 15:43:57 kls Exp $ + * $Id: menu.c 1.15 2000/05/27 16:10:47 kls Exp $ */ #include "menu.h" @@ -1009,6 +1009,7 @@ cMenuMain::cMenuMain(bool Replaying) Add(new cOsdItem(buffer, osStopRecord)); delete buffer; } + SetHelp("Record"); Display(); lastActivity = time(NULL); } @@ -1028,8 +1029,13 @@ eOSState cMenuMain::ProcessKey(eKeys Key) return osEnd; } } - default: if (Key == kMenu) - state = osEnd; + default: switch (Key) { + case kMenu: state = osEnd; break; + case kRed: if (!HasSubMenu()) + state = osRecord; + break; + default: break; + } } if (Key != kNone) lastActivity = time(NULL); @@ -1202,18 +1208,18 @@ eOSState cReplayControl::ProcessKey(eKeys Key) if (visible) shown = dvbApi->ShowProgress(!shown) || shown; switch (Key) { - case kBegin: dvbApi->Skip(-INT_MAX); break; - case kPause: dvbApi->PauseReplay(); break; - case kStop: Hide(); - dvbApi->StopReplay(); - return osEnd; - case kSearchBack: dvbApi->FastRewind(); break; - case kSearchForward: dvbApi->FastForward(); break; - case kSkipBack: dvbApi->Skip(-60); break; - case kSkipForward: dvbApi->Skip(60); break; - case kMenu: Hide(); return osMenu; // allow direct switching to menu - case kOk: visible ? Hide() : Show(); break; - default: return osUnknown; + case kUp: dvbApi->Skip(-INT_MAX); break; + case kDown: dvbApi->PauseReplay(); break; + case kBlue: Hide(); + dvbApi->StopReplay(); + return osEnd; + case kLeft: dvbApi->FastRewind(); break; + case kRight: dvbApi->FastForward(); break; + case kGreen: dvbApi->Skip(-60); break; + case kYellow: dvbApi->Skip(60); break; + case kMenu: Hide(); return osMenu; // allow direct switching to menu + case kOk: visible ? Hide() : Show(); break; + default: return osUnknown; } return osContinue; } diff --git a/osd.h b/osd.h index 6362b0a7..1d4f4cf0 100644 --- a/osd.h +++ b/osd.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.h 1.8 2000/05/01 15:16:00 kls Exp $ + * $Id: osd.h 1.9 2000/05/27 15:35:41 kls Exp $ */ #ifndef __OSD_H @@ -22,6 +22,7 @@ enum eOSState { osUnknown, osChannels, osTimer, osRecordings, + osRecord, osReplay, osStopRecord, osStopReplay, diff --git a/vdr.c b/vdr.c index 45d9dddb..bcda4711 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/people/kls/vdr * - * $Id: vdr.c 1.18 2000/05/06 15:24:01 kls Exp $ + * $Id: vdr.c 1.19 2000/05/27 15:38:35 kls Exp $ */ #include @@ -107,6 +107,10 @@ int main(int argc, char *argv[]) case osMenu: DELETENULL(Menu); Menu = new cMenuMain(ReplayControl); break; + case osRecord: DELETENULL(Menu); + if (!cRecordControls::Start()) + Interface.Error("No free DVB device to record!"); + break; case osReplay: DELETENULL(Menu); DELETENULL(ReplayControl); ReplayControl = new cReplayControl; @@ -142,11 +146,6 @@ int main(int argc, char *argv[]) channel->Switch(); } break; - // Instant Recording: - case kRecord: DELETENULL(Menu); - if (!cRecordControls::Start()) - Interface.Error("No free DVB device to record!"); - break; // Menu Control: case kMenu: Menu = new cMenuMain(ReplayControl); break; // Viewing Control: