Hid: initial commit
This commit is contained in:
		
							
								
								
									
										67
									
								
								hidinput.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								hidinput.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					from flask import Response
 | 
				
			||||||
 | 
					from flask import Flask
 | 
				
			||||||
 | 
					from flask import render_template
 | 
				
			||||||
 | 
					import threading
 | 
				
			||||||
 | 
					import argparse
 | 
				
			||||||
 | 
					import datetime
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					lock = threading.Lock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# initialize a flask object
 | 
				
			||||||
 | 
					app = Flask(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NULL = chr(0)
 | 
				
			||||||
 | 
					hiddev = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def init():
 | 
				
			||||||
 | 
					    hiddev=open('/dev/hidg0', 'rb+')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def hidwrite(data):
 | 
				
			||||||
 | 
					    if hiddev is None:
 | 
				
			||||||
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    hiddev.write(data.encode())
 | 
				
			||||||
 | 
					    hiddev.flush()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def send_key(hidkey, shift, alt, ctlr, superkey):
 | 
				
			||||||
 | 
					    # TODO handle mod keys
 | 
				
			||||||
 | 
					    hidwrite(NULL*2+chr(hidkey)+NULL*5)
 | 
				
			||||||
 | 
					    hidwrite(NULL*8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_hid_by_scancode(scancode):
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route("/")
 | 
				
			||||||
 | 
					def index():
 | 
				
			||||||
 | 
						return render_template("hid.html")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.route("/hid/keyboard", methods=["POST"])
 | 
				
			||||||
 | 
					def keypress():
 | 
				
			||||||
 | 
						return Response("Stisknuto ", mimetype = "text/plain")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# check to see if this is the main thread of execution
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
						# construct the argument parser and parse command line arguments
 | 
				
			||||||
 | 
						ap = argparse.ArgumentParser()
 | 
				
			||||||
 | 
						ap.add_argument("-i", "--ip", type=str, required=True,
 | 
				
			||||||
 | 
						        help="ip address of the device")
 | 
				
			||||||
 | 
						ap.add_argument("-o", "--port", type=int, required=True,
 | 
				
			||||||
 | 
							help="ephemeral port number of the server (1024 to 65535)")
 | 
				
			||||||
 | 
						ap.add_argument("-f", "--frame-count", type=int, default=32,
 | 
				
			||||||
 | 
							help="# of frames used to construct the background model")
 | 
				
			||||||
 | 
						args = vars(ap.parse_args())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        app.run(host=args["ip"], port=args["port"], debug=True,
 | 
				
			||||||
 | 
							threaded=True, use_reloader=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Clean up
 | 
				
			||||||
 | 
					        if hiddev is not None:
 | 
				
			||||||
 | 
					            print("Closing hid")
 | 
				
			||||||
 | 
					            hiddev.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								templates/hid.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								templates/hid.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<html>
 | 
				
			||||||
 | 
						<body>
 | 
				
			||||||
 | 
							HID input service, POST data to /keyboard or /mouse
 | 
				
			||||||
 | 
						</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user