Example #1
0
 def keyboard_key_pressed(self, key, modifiers):
     if type(key) == int:
         if 0x1001250 <= key <= 0x1001262:
             name = characters.DEAD[key]
         elif 0x41 <= key <= 0x5a or 0x61 <= key <= 0x7a:
             name = chr(key)
         else:
             name = QKeySequence(key).toString()
         try:
             name.encode('utf-8')
         except UnicodeEncodeError:
             return
     else:
         name = key
     k = []
     if self.ui.ignoreModifiersCheck.isChecked():
         modifiers = 0x0
     if modifiers & Qt.KeypadModifier:
         name = 'KP_' + name
     if self.ui.composeCheck.isChecked():
         k.append('Multi_key')
     if self.ui.ctrlCheck.isChecked() or (modifiers & Qt.ControlModifier):
         k.append('Ctrl')
     if self.ui.shiftCheck.isChecked() or (modifiers & Qt.ShiftModifier):
         k.append('Shift')
     if self.ui.altCheck.isChecked() or (modifiers & Qt.AltModifier):
         k.append('Alt')
     if self.ui.superCheck.isChecked() or (modifiers & Qt.MetaModifier):
         k.append('Super')
     if self.ui.altGrCheck.isChecked():
         k.append('ISO_Level3_Shift')
     if name in characters.CHARACTERS:
         name = characters.CHARACTERS[name]
     if len(name) == 1:
         name = name.lower()
     k.append(name)
     key_str = '+'.join(k)
     self.ui.lastKeyTitleLabel.setText('Last key sent:')
     self.ui.lastKeyLabel.setText(key_str)
     display = str(self.ui.displayField.text())
     cmd = 'DISPLAY=' + shlex.quote(display) + ' '
     if self.lock_keys['Num'] and \
             ((key_str[-1] in digits and key_str[:-1].endswith('KP_')) \
             or key_str.endswith('KP_Separator')):
         cmd += 'xdotool key Num_Lock ' + shlex.quote(key_str) + ' Num_Lock'
     else:
         cmd += 'xdotool key ' + shlex.quote(key_str)
     self.connection.run(cmd)