Index: trunk/platform/g7/kbd.c
===================================================================
--- trunk/platform/g7/kbd.c	(revision 515)
+++ trunk/platform/g7/kbd.c	(revision 547)
@@ -21,4 +21,5 @@
 static int remote_key, remote_count;
 static int shoot_counter=0;
+static int new_jogdial=0, old_jogdial=0;
 #define DELAY_TIMEOUT 10000
 #define KEYS_MASK0 (0xC0000000)
@@ -223,4 +224,6 @@
 void my_kbd_read_keys()
 {
+    static int handle_taskTouchW = 0, isRunning_taskTouchW = 1;
+
     kbd_prev_state[0] = kbd_new_state[0];
     kbd_prev_state[1] = kbd_new_state[1];
@@ -228,4 +231,6 @@
 
     _platformsub_kbd_fetch_data(kbd_new_state);
+
+    if (handle_taskTouchW == 0) { handle_taskTouchW = _taskNameToId("tJogDial"); }
 
     if (kbd_process() == 0){
@@ -235,4 +240,5 @@
 	physw_status[2] = kbd_new_state[2];
         physw_status[1] |= alt_mode_key_mask;
+        if (!isRunning_taskTouchW) { _taskResume(handle_taskTouchW); isRunning_taskTouchW = 1; }
     } else {
 	// override keys
@@ -245,4 +251,10 @@
 	physw_status[2] = (kbd_new_state[2] & (~KEYS_MASK2)) |
 			  (kbd_mod_state[2] & KEYS_MASK2);
+
+	if (isRunning_taskTouchW && !state_kbd_script_run)
+		{ _taskSuspend(handle_taskTouchW); isRunning_taskTouchW = 0; get_jogdial_direction(); }
+	else if (!isRunning_taskTouchW && state_kbd_script_run)
+		{ _taskResume(handle_taskTouchW); isRunning_taskTouchW = 1; }
+
     }
 
@@ -265,5 +277,4 @@
     _kbd_pwr_off();
     
-
 }
 
@@ -395,4 +406,18 @@
     }
 }
+
+
+int Get_JogDial(void){
+ return (*(int*)0xC0240304)>>16;
+}
+
+long get_jogdial_direction(void) { 
+ old_jogdial=new_jogdial;
+ new_jogdial=Get_JogDial();
+ if (old_jogdial<new_jogdial) return JOGDIAL_LEFT; 
+ else if (old_jogdial>new_jogdial) return JOGDIAL_RIGHT;
+ else return 0;
+}
+
 
 long kbd_use_zoom_as_mf() {/*  Íåçà÷åì, â G7 åñòü êîëåñî äëÿ ýòîãî
