+int Record::x10tv_process_code(int code)
+{
+#ifdef HAVE_X10TV
+ switch( code ) {
+ case X10_A: // toggle metering audio
+ set_audio_metering(metering_audio ? 0 : 1);
+ break;
+ case X10_B: break;
+ case X10_POWER: break;
+ case X10_TV: break;
+ case X10_DVD: break;
+ case X10_WWW: break;
+ case X10_BOOK: break;
+ case X10_EDIT: break;
+ case X10_VOLUP: {
+ set_play_gain(play_gain * 1.125);
+ break; }
+ case X10_VOLDN: {
+ set_play_gain(play_gain * 0.875);
+ break; }
+ case X10_MUTE: // toggle mute audio
+ if( !monitor_audio ) {
+ set_mute_gain(1);
+ set_play_gain(play_gain);
+ }
+ set_audio_monitoring(monitor_audio ? 0 : 1);
+ break;
+ case X10_CH_UP:
+ channel_up();
+ break;
+ case X10_CH_DN:
+ channel_down();
+ break;
+ case X10_0: {
+ X10TVRecordHandler *x10tv_remote = (X10TVRecordHandler *)
+ mwindow->gui->remote_control->handler;
+ X10TV *x10tv = !x10tv_remote ? 0 : x10tv_remote->x10tv;
+ if( x10tv->last_code == X10_0 ) {
+ clear_keybfr();
+ break;
+ } } // fall thru
+ case X10_1: case X10_2: case X10_3: case X10_4:
+ case X10_5: case X10_6: case X10_7: case X10_8:
+ case X10_9: {
+ int ch = code - X10_0 + '0';
+ add_key(ch);
+ break; }
+ case X10_MENU: // add decimal point
+ add_key('.');
+ break;
+ case X10_SETUP: // change channel
+ set_channel_name(keybfr);
+ clear_keybfr();
+ break;
+ case X10_C:
+ display_channel_schedule();
+ break;
+ case X10_UP: break;
+ case X10_D:
+ display_channel_info();
+ break;
+ case X10_PROPS: break;
+ case X10_LT: break;
+ case X10_OK: break;
+ case X10_RT: break;
+ case X10_SCRN: {
+ RecordMonitorCanvas *canvas = record_monitor->window->canvas;
+ int on = canvas->get_fullscreen() ? 0 : 1;
+ canvas->Canvas::set_fullscreen(on, 0);
+ break; }
+ case X10_E: break;
+ case X10_DN: break;
+ case X10_F: break;
+ case X10_REW: break;
+ case X10_PLAY: break;
+ case X10_FWD: break;
+ case X10_REC: break;
+ case X10_STOP: break;
+ case X10_PAUSE: break;
+
+ default:
+ printf("x10tv record: unknown code: %04x\n", code);
+ break;
+ }
+#endif
+ return 0;
+}
+