| 
					
				 | 
			
			
				@@ -94,7 +94,8 @@ ctkConsolePrivate::ctkConsolePrivate(ctkConsole& object) : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   InteractivePosition(documentEnd()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   MultilineStatement(false), Ps1("$ "), Ps2("> "), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   EditorHints(ctkConsole::AutomaticIndentation | ctkConsole::RemoveTrailingSpaces), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ScrollbarAtBottom(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ScrollbarAtBottom(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CompleterShortcuts(QList<QKeySequence>() << Qt::Key_Tab) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -402,7 +403,7 @@ void ctkConsolePrivate::keyPressEvent(QKeyEvent* e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (e->key() == Qt::Key_Tab) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (this->CompleterShortcuts.contains(e->key() + e->modifiers())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     e->accept(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->updateCompleter(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -953,6 +954,26 @@ void ctkConsole::setScrollBarPolicy(const Qt::ScrollBarPolicy& newScrollBarPolic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //----------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CTK_GET_CPP(ctkConsole, QList<QKeySequence>, completerShortcuts, CompleterShortcuts); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//----------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void ctkConsole::setCompleterShortcuts(const QList<QKeySequence>& keys) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Q_D(ctkConsole); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  d->CompleterShortcuts = keys; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//----------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void ctkConsole::addCompleterShortcut(const QKeySequence& key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Q_D(ctkConsole); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!d->CompleterShortcuts.contains(key)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    d->CompleterShortcuts.append(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//----------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void ctkConsole::exec(const QString& command) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Q_D(ctkConsole); 
			 |