class KeyboardHandler():

    def __init__(self):
        logger.debug("Keyboard deteccter created.")
        self.hm = HookManager()
        self.hm.KeyDown = self.key_down
        self.hm_thread = None
        self.input_record_list = []
        self.hot_key_list = [24, 38, 52, 10, 11, 12]      # QAZ123
        self.hot_key_list2 = [24, 38, 52, 87, 88, 89]  # QAZ123 with 123 in side keyboard
        self.sp = SoundPlayer()

    def set_style(self, style):
        self.sp.set_style(style)

    def set_volume(self, volume):
        self.sp.set_volume(volume)

    def set_pitch(self, pitch):
        self.sp.set_pitch(pitch)

    def get_player_infor(self):
        return self.sp.get_infor()

    def key_down(self, event):
        self.sp.play(event.ScanCode)
        self.check_show_window(event.ScanCode)
        # logger.debug(str(event))

    # check input if satisfy the hotkey
    def check_show_window(self, key_code):
        if self.input_record_list and key_code == self.input_record_list[-1]:
            return
        input_record_length = len(self.input_record_list)
        next_key_code = self.hot_key_list[input_record_length]
        next_key_code2 = self.hot_key_list2[input_record_length]
        if key_code == next_key_code or key_code == next_key_code2:
            self.input_record_list.append(key_code)
            if input_record_length == 5:
                show_GUI()
                self.input_record_list = []
        else:
            # clear the record if not satisfy
            self.input_record_list = []

    def start_detecting(self):
        self.hm_thread = threading.Thread(target=self.hm.start, args=())
        self.hm_thread.start()

    # kill all threads
    def stop_detecting(self):
        self.hm_thread._Thread__stop()
        self.hm.cancel()
Esempio n. 2
0
class KeyboardHandler():
    def __init__(self):
        logger.debug("Keyboard deteccter created.")
        self.hm = HookManager()
        self.hm.KeyDown = self.key_down
        self.hm_thread = None
        self.input_record_list = []
        self.hot_key_list = [24, 38, 52, 10, 11, 12]  # QAZ123
        self.hot_key_list2 = [24, 38, 52, 87, 88,
                              89]  # QAZ123 with 123 in side keyboard
        self.sp = SoundPlayer()

    def set_style(self, style):
        self.sp.set_style(style)

    def set_volume(self, volume):
        self.sp.set_volume(volume)

    def set_pitch(self, pitch):
        self.sp.set_pitch(pitch)

    def get_player_infor(self):
        return self.sp.get_infor()

    def key_down(self, event):
        self.sp.play(event.ScanCode)
        self.check_show_window(event.ScanCode)
        # logger.debug(str(event))

    # check input if satisfy the hotkey
    def check_show_window(self, key_code):
        if self.input_record_list and key_code == self.input_record_list[-1]:
            return
        input_record_length = len(self.input_record_list)
        next_key_code = self.hot_key_list[input_record_length]
        next_key_code2 = self.hot_key_list2[input_record_length]
        if key_code == next_key_code or key_code == next_key_code2:
            self.input_record_list.append(key_code)
            if input_record_length == 5:
                show_GUI()
                self.input_record_list = []
        else:
            # clear the record if not satisfy
            self.input_record_list = []

    def start_detecting(self):
        self.hm_thread = threading.Thread(target=self.hm.start, args=())
        self.hm_thread.start()

    # kill all threads
    def stop_detecting(self):
        self.hm_thread._Thread__stop()
        self.hm.cancel()
Esempio n. 3
0
class ThreadedKeyBind(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        self.new_hook = HookManager()
        self.new_hook.KeyDown = self.OnKeyPress
        self.new_hook.HookKeyboard()
        self.new_hook.start()
        # self.new_hook.cancel()

    def OnKeyPress(self, event):
        """
        function called when any key is pressed
        """
        global prev_Key, key_binding

        if event.Key == key_binding[1] and prev_Key == key_binding[0]:
            if utils.active == 1:
                utils.active = 0
            elif utils.active == 0:
                utils.active = 1
            prev_Key = None

        elif event.Key == 'c' and prev_Key == 'Control_L':
            self.text = xerox.paste(xsel=True)
            utils.clips.append(self.text)
            # pickle clips data
            with open(os.path.join(os.path.dirname(__file__), 'clips_data'),
                      "wb") as f:
                pickle.dump(utils.clips, f, protocol=2)

            print("You just copied: {}".format(self.text))

        elif event.Key == 'z' and prev_Key == 'Control_L':
            print("can")
            self.new_hook.cancel()

        else:
            prev_Key = event.Key

        return True
class Keyboard(object):
	__hook = None
	def __init__(self):
		pass
	
	def getKeys(self):
		pass
	
	def getKeysData(self,socketClient, size):
		def sendKey(event):
			data = json.dumps({'type': 6, 'code': 1 ,'status' : 'OK', 'keyboard': str(event)})
			try:
				socketClient.sendall(data)
			except:
				return
		
		self.__hook = HookManager()
		self.__hook.HookKeyboard()
		self.__hook.KeyDown = sendKey
		self.__hook.start()
		time.sleep(size)
		self.__hook.cancel()
Esempio n. 5
0
class TestPyxHook(TestBase):
    """
        Tests the pyxhook library for Linux.
    """
    def setUp(self):
        pass

    def tearDown(self):
        pass

    # Key generator.
    def generator(self, s, key=None):
        for i in range(len(s)):
            if key is not None:
                yield key
            if s[i] in specialKeysyms.keys():
                yield specialKeysyms[s[i]]
            else:
                yield s[i]

    def reportevent(self, event):
        # It's not case sensitive.
        ek = string.lower(event.Key)
        ngn = string.lower(next(self.gn))
        # We don't care about underscores.
        ngn = string.replace(ngn, "_", "")
        print ek, ngn
        self.assertEqual(ek, ngn)

    def base_test(self):
        self.hm = HookManager()
        self.hm.HookKeyboard()
        self.hm.HookMouse()
        self.hm.KeyDown = self.reportevent
        self.hm.MouseAllButtonsDown = self.reportevent
        self.hm.MouseAllButtonsUp = self.reportevent
        self.hm.start()
        d = Display()

    def test_numbers(self):
        numbers = '0123456789'
        self.gn = self.generator(numbers)
        self.base_test()
        emulateWritingString(d, numbers, 0.075)  # 75ms
        self.hm.cancel()

    def test_lowercase(self):
        lc = u'abcdefghijklmnopqrstuvwxyz'
        self.gn = self.generator(lc)
        self.base_test()
        emulateWritingString(d, lc, 0.075)  # 75ms
        self.hm.cancel()

    def test_uppercase(self):
        uc = u'abcdefghijklmnopqrstuvwxyz'
        self.gn = self.generator(uc, 'shift_l')
        self.base_test()
        emulateWritingString(d, string.upper(uc), 0.075)  # 75ms
        self.hm.cancel()

    def test_simple_symbols(self):
        uc = u"º'¡\t\n<+ç"  # \r
        self.gn = self.generator(uc)
        self.base_test()
        emulateWritingString(d, uc, 0.075)  # 75ms
        self.hm.cancel()

    def test_simple_combos_symbols(self):
        keys = ['shift_l', 'shift_r', 'alt_l']
        for key in keys:
            ss = u"2"
            self.gn = self.generator(ss, key)
            self.base_test()
            emulateWritingString(d, ss, 0.075, key)  # 75ms
            self.hm.cancel()
Esempio n. 6
0
class TestPyxHook(TestBase):
    """
        Tests the pyxhook library for Linux.
    """

    def setUp(self):
        pass

    def tearDown(self):
        pass

    # Key generator.
    def generator(self, s, key=None):
        for i in range(len(s)):
            if key is not None:
                yield key
            if s[i] in specialKeysyms.keys():
                yield specialKeysyms[s[i]]
            else:
                yield s[i]

    def reportevent(self, event):
        # It's not case sensitive.
        ek = string.lower(event.Key)
        ngn = string.lower(next(self.gn))
        # We don't care about underscores.
        ngn = string.replace(ngn, "_", "")
        print ek, ngn
        self.assertEqual(ek, ngn)

    def base_test(self):
        self.hm = HookManager()
        self.hm.HookKeyboard()
        self.hm.HookMouse()
        self.hm.KeyDown = self.reportevent
        self.hm.MouseAllButtonsDown = self.reportevent
        self.hm.MouseAllButtonsUp = self.reportevent
        self.hm.start()
        d = Display()

    def test_numbers(self):
        numbers = '0123456789'
        self.gn = self.generator(numbers)
        self.base_test()
        emulateWritingString(d, numbers, 0.075)  # 75ms
        self.hm.cancel()

    def test_lowercase(self):
        lc = u'abcdefghijklmnopqrstuvwxyz'
        self.gn = self.generator(lc)
        self.base_test()
        emulateWritingString(d, lc, 0.075)  # 75ms
        self.hm.cancel()

    def test_uppercase(self):
        uc = u'abcdefghijklmnopqrstuvwxyz'
        self.gn = self.generator(uc, 'shift_l')
        self.base_test()
        emulateWritingString(d, string.upper(uc), 0.075)  # 75ms
        self.hm.cancel()

    def test_simple_symbols(self):
        uc = u"º'¡\t\n<+ç"  # \r
        self.gn = self.generator(uc)
        self.base_test()
        emulateWritingString(d, uc, 0.075)  # 75ms
        self.hm.cancel()

    def test_simple_combos_symbols(self):
        keys = ['shift_l', 'shift_r', 'alt_l']
        for key in keys:
            ss = u"2"
            self.gn = self.generator(ss, key)
            self.base_test()
            emulateWritingString(d, ss, 0.075, key)  # 75ms
            self.hm.cancel()