J'essaie d'obtenir le comportement des clients IM typiques qui utilisent retour code> pour envoyer un texte et
shift + retourner code> pour insérer une cheviche. Existe-t-il un moyen de réaliser cela avec un effort minimal en Python, par exemple. readline et
Raw_Input code>? p>
4 Réponses :
Je doute que vous puissiez faire cela simplement en utilisant le module Vous pouvez le faire avec Pyhook cependant et si le La touche readline code> car il ne capturera pas les touches individuelles enfoncées et plutôt à traiter simplement les réponses du caractère de votre pilote d'entrée. P>
Shift code> est enfoncée avec la touche
Entrée code> pour injecter une nouvelle ligne dans votre
readline code> flux. p>
Merci, mais j'aimerais gérer la compatibilité de la plate-forme avec * Nix!
Je pense que avec un effort minimal em> Vous pouvez utiliser Urwid bibliothèque pour python . Malheureusement, cela ne satisfait pas à votre condition d'utiliser readline / Raw_Input. P>
Mise à jour: em> S'il vous plaît voir aussi Cette réponse < / a> pour une autre solution. P>
OK, j'ai entendu dire que cela peut être accompli aussi avec le Vous pouvez comme ceci: p> readline code>, d'une manière.
Importer readline code> et définir la configuration de votre clé souhaitée (décalage + Entrée) à une macro qui met un caractère spécial à la fin de la ligne et la nouvelle ligne. Ensuite, vous pouvez appeler
brut_input code> dans une boucle. P>
import readline
# I am using Ctrl+K to insert line break
# (dont know what symbol is for shift+enter)
readline.parse_and_bind('C-k: "#\n"')
text = []
line = "#"
while line and line[-1]=='#':
line = raw_input("> ")
if line.endswith("#"):
text.append(line[:-1])
else:
text.append(line)
# all lines are in "text" list variable
print "\n".join(text)
import readline # I am using Ctrl+x to insert line break # (dont know the symbols and bindings for meta-key or shift-key, # let alone 4 shift+enter) def startup_hook(): readline.insert_text('» ') # \033[32m»\033[0m def prmpt(): try: readline.parse_and_bind('tab: complete') readline.parse_and_bind('set editing-mode vi') readline.parse_and_bind('C-x: "\x16\n"') # \x16 is C-v which writes readline.set_startup_hook(startup_hook) # the \n without returning except Exception as e: # thus no need 4 appending print (e) # '#' 2 write multilines return # simply use ctrl-x or other some other bind while True: # instead of shift + enter try: line = raw_input() print '%s' % line except EOFError: print 'EOF signaled, exiting...' break # It can probably be improved more to use meta+key or maybe even shift enter # Anyways sry 4 any errors I probably may have made.. first time answering
Vous recherchez une réponse en fonction de la plate-forme ou une réponse indépendante?
Plate-forme indépendante Si possible, mais * Nix Compatible doit faire en tant que application cible de toute façon les utilisateurs de la ligne de commande.