def setDeviceDelay(self, device, value): # REP_DELAY if self.getDeviceAttribute(device, 'enabled'): # print("[InputDevices] setDeviceDelay for device %s to %d ms" % (device, value)) event = pack('LLHHi', 0, 0, 0x14, 0x00, int(value)) fd = osopen("/dev/input/" + device, O_RDWR) oswrite(fd, event) osclose(fd)
def setDeviceRepeat(self, device, value): # REP_PERIOD if self.getDeviceAttribute(device, "enabled"): # print("[InputDevices] setDeviceRepeat for device %s to %d ms" % (device, value)) event = pack("LLHHi", 0, 0, 0x14, 0x01, int(value)) fd = osopen("/dev/input/%s" % device, O_RDWR) oswrite(fd, event) osclose(fd)
def __init__(self): self.Devices = {} self.currentDevice = "" devices = listdir("/dev/input/") for device in devices: if isdir("/dev/input/%s" % device): continue try: _buffer = "\0" * 512 self.fd = osopen("/dev/input/%s" % device, O_RDWR | O_NONBLOCK) self.name = ioctl(self.fd, self.EVIOCGNAME(256), _buffer) self.name = self.name[:self.name.find(b"\0")] self.name = ensure_str(self.name) if str(self.name).find("Keyboard") != -1: self.name = 'keyboard' osclose(self.fd) except (IOError, OSError) as err: print( "[InputDevice] Error: device='%s' getInputDevices <ERROR: ioctl(EVIOCGNAME): '%s'>" % (device, str(err))) self.name = None if self.name: self.Devices[device] = { 'name': self.name, 'type': self.getInputDeviceType(self.name), 'enabled': False, 'configuredName': None } # load default remote control "delay" and "repeat" values for ETxxxx ("QuickFix Scrollspeed Menues" proposed by Xtrend Support) if getBoxType().startswith('et'): self.setDeviceDefaults(device)
def __init__(self): self.devices = {} self.currentDevice = None for device in sorted(listdir("/dev/input/")): if isdir("/dev/input/%s" % device): continue try: buffer = b"\0" * 512 self.fd = osopen("/dev/input/%s" % device, O_RDWR | O_NONBLOCK) self.name = ioctl(self.fd, self.EVIOCGNAME(256), buffer) osclose(self.fd) self.name = str(self.name[:self.name.find(b"\0")]) except (IOError, OSError) as err: print("[InputDevice] Error: device='%s' getInputDevices <ERROR: ioctl(EVIOCGNAME): '%s'>" % (device, str(err))) self.name = None if self.name: devType = self.getInputDeviceType(self.name.lower()) print("[InputDevice] Found device '%s' with name '%s' of type '%s'." % (device, self.name, "Unknown" if devType is None else devType.capitalize())) # What was this for? # if self.name == "aml_keypad": # print("[InputDevice] ALERT: Old code flag for 'aml_keypad'.") # self.name = "dreambox advanced remote control (native)" # if self.name in BLACKLIST: # print("[InputDevice] ALERT: Old code flag for device in blacklist.") # continue self.devices[device] = { "name": self.name, "type": devType, "enabled": False, "configuredName": None }
def _get(items, store, pp, successes, failures): if not exists(tempDir): mkdir(tempDir) for filePath,objHash,size in items: pp.newItem(filePath, size) # Copy download to temp file first, and then to actual object location # This is to prevent interrupted downloads from causing bad objects to be placed # in the objects cache (tempHandle, tempTransferFile) = mkstemp(dir=tempDir) osclose(tempHandle) key = store.check('%s/%s'%(objHash[:2], objHash[2:])) try: transferred = store.get(key, tempTransferFile, size) except: transferred = False if key and transferred: pp.updateProgress(size, size) popen(['mv', tempTransferFile, filePath]).wait() successes.append((filePath, objHash, size)) else: pp.updateProgress(size, size, custom_item_string='ERROR') failures.append(filePath) cache.insert({h:(s,f) for f,h,s in successes}, inLru=True, progressMsg='Caching newly gotten items')
def setDeviceDelay(self, device, value): # REP_DELAY if self.getDeviceAttribute(device, "enabled"): # print("[InputDevice] setDeviceDelay DEBUG: Set device '%s' to %s ms." % (device, value)) event = pack("LLHHi", 0, 0, 0x14, 0x00, int(value)) fd = osopen("/dev/input/%s" % device, O_RDWR) oswrite(fd, event) osclose(fd)
def setDeviceDefaults(self, device): print("[InputDevice] setDeviceDefaults DEBUG: Device '%s'." % device) self.setDeviceAttribute(device, "configuredName", None) eventRepeat = pack("LLHHi", 0, 0, 0x14, 0x01, 100) eventDelay = pack("LLHHi", 0, 0, 0x14, 0x00, 700) fd = osopen("/dev/input/%s" % device, O_RDWR) oswrite(fd, eventRepeat) oswrite(fd, eventDelay) osclose(fd)
def fork(self): rfd, wfd = pipe() subpid = fork() if subpid == 0: # subprocess. del (self.rfds) osclose(rfd) self.wfclose() self.wfobj = fdopen(wfd, 'wt') return subpid osclose(wfd) self.rfds[subpid] = rfd return subpid
def fork(self): rfd, wfd = pipe() subpid = fork() if subpid == 0: # subprocess. del(self.rfds) osclose(rfd) self.wfclose() self.wfobj = fdopen(wfd, 'wt') return subpid osclose(wfd) self.rfds[subpid] = rfd return subpid
def __init__(self): self.devices = {} self.currentDevice = None for device in sorted(listdir("/dev/input/")): if isdir("/dev/input/%s" % device): continue try: _buffer = "\0" * 512 self.fd = osopen("/dev/input/%s" % device, O_RDWR | O_NONBLOCK) self.name = ioctl(self.fd, self.EVIOCGNAME(256), _buffer) self.name = self.name[:self.name.find(b"\0")] self.name = ensure_str(self.name) if str(self.name).find("Keyboard") != -1: self.name = 'keyboard' osclose(self.fd) except OSError as err: print( "[InputDevice] Error: device='%s' getInputDevices <ERROR: ioctl(EVIOCGNAME): '%s'>" % (device, str(err))) self.name = None if self.name: devType = self.getInputDeviceType(self.name.lower()) print( "[InputDevice] Found device '%s' with name '%s' of type '%s'." % (device, self.name, "Unknown" if devType is None else devType.capitalize())) # What was this for? # if self.name == "aml_keypad": # print("[InputDevice] ALERT: Old code flag for 'aml_keypad'.") # self.name = "dreambox advanced remote control (native)" # if self.name in BLACKLIST: # print("[InputDevice] ALERT: Old code flag for device in blacklist.") # continue self.devices[device] = { "name": self.name, "type": devType, "enabled": False, "configuredName": None } # load default remote control "delay" and "repeat" values for ETxxxx ("QuickFix Scrollspeed Menues" proposed by Xtrend Support) if getBoxType().startswith('et'): self.setDeviceDefaults(device)
def bpgdecode(self,filename): msg=None cmd=self.bpgpath self.frames_index=0 if len(self.frames): self.frames=[] if self.img: del self.img self.img=None if len(filename)>4 and filename[-4:].lower()=='.bpg': try: if not(isfile(filename) and access(filename,R_OK)): msg=_('Unable to open')+'\"%s\"!'%filename except: return False if not(msg): err=0 try: imbuffer='' if osflag: fifo=osopen(self.fifo,O_RDONLY|O_NONBLOCK) cmd+=' "'+realpath(filename)+'" '+self.fifo+\ ' >/dev/null 2>&1' f=Popen(cmd,shell=True,stdin=None,stdout=None,\ stderr=None) if fifo: while True: if f.poll()!=None: break; try: data=osread(fifo,16777216) except OSError as e: if e.errno==errno.EAGAIN or\ e.errno==errno.EWOULDBLOCK: data='' else: raise if len(data): imbuffer+=data osclose(fifo) else: si=STARTUPINFO() si.dwFlags|=1 si.wShowWindow=0 pname='\\\\.\\pipe\\'+basename(self.fifo) tpipe=win32pipe.CreateNamedPipe( pname, win32pipe.PIPE_ACCESS_DUPLEX, win32pipe.PIPE_TYPE_BYTE|win32pipe.PIPE_WAIT, 1,16777216,16777216,2000,None) cmd+=' "'+realpath(filename)+'" '+pname f=Popen(cmd,shell=False,stdin=None,stdout=None,\ stderr=None,bufsize=0,startupinfo=si) win32pipe.ConnectNamedPipe(tpipe,None) imbuffer='' if version_info[0]<3: imbuffer='' else: imbuffer=b'' if tpipe: while True: data=None try: data=win32file.ReadFile(tpipe,16777216) except: data=None if not(data): break if data[0]!=0: break if len(data[1]): imbuffer+=data[1] win32pipe.DisconnectNamedPipe(tpipe) f.wait() if len(imbuffer): x,=unpack("i",imbuffer[0:4]) y,=unpack("i",imbuffer[4:8]) n,=unpack("i",imbuffer[8:12]) d,=unpack("i",imbuffer[12:16]) if n==0 and d==1: try: self.img=Image.frombytes('RGBA',(x,y), imbuffer[16:]) except: err=1 else: self.scale=100.0 self.autoscale=self.scale self.bitmap_text=str(x)+'x'+str(y) self.imginfo='%.2f'%self.scale+'%@'+self.bitmap_text ishift=8 dr=n*1000/d while True: try: n,=unpack("i",imbuffer[ishift:ishift+4]) ishift+=4 d,=unpack("i",imbuffer[ishift:ishift+4]) ishift+=4 except: break try: img=Image.frombytes('RGBA',(x,y), imbuffer[ishift:]) except: break ishift+=(x*y*4) self.frames.append([self.bitmapfrompil(img),n*1000/d]) else: err=1 del imbuffer else: err=1 except: err=1 if err: msg=_('BPG decoding error!\n') else: msg=_('File')+' \"%s\" '%filename+_('is not a BPG-File!') if msg: wx.PostEvent(self,ShowEvent(SE_EVT_TYPE,-1,value=msg)) if self.img: del self.img self.img=None else: return True return False
def bpgdecode(self,filename): msg=None cmd='"'+self.bpgpath+'"' self.frames_index=0 if len(self.frames): self.frames=[] if self.img: del self.img self.img=None if len(filename)>4 and filename[-4:].lower()=='.bpg': try: if not(isfile(filename) and access(filename,R_OK)): msg=_('Unable to open')+'\"%s\"!'%filename except: return False if not(msg): err=0 try: if version_info[0]<3: imbuffer='' else: imbuffer=b'' t,tmp=mkstemp(suffix='.rgb',prefix='') close(t) cmd+=' "'+realpath(filename)+'" '+tmp+' >/dev/null 2>&1' f=Popen(cmd,shell=True,stdin=None,stdout=None,stderr=None) f.wait() fifo=osopen(tmp,O_RDONLY|O_NONBLOCK) if fifo: while True: try: data=osread(fifo,16777216) except OSError as e: if e.errno==errno.EAGAIN or\ e.errno==errno.EWOULDBLOCK: data='' continue else: raise if len(data): imbuffer+=data else: break osclose(fifo) if exists(tmp): try: remove(tmp) except: pass if len(imbuffer): x,=unpack("i",imbuffer[0:4]) y,=unpack("i",imbuffer[4:8]) n,=unpack("i",imbuffer[8:12]) d,=unpack("i",imbuffer[12:16]) if n==0 and d==1: try: self.img=Image.frombytes('RGBA',(x,y), imbuffer[16:]) except: err=1 else: self.scale=100.0 self.autoscale=self.scale self.bitmap_text=str(x)+'x'+str(y) self.imginfo='%.2f'%self.scale+'%@'+self.bitmap_text ishift=8 dr=n*1000/d while True: try: n,=unpack("i",imbuffer[ishift:ishift+4]) ishift+=4 d,=unpack("i",imbuffer[ishift:ishift+4]) ishift+=4 except: break try: img=Image.frombytes('RGBA',(x,y), imbuffer[ishift:]) except: break ishift+=(x*y*4) self.frames.append([self.bitmapfrompil(img),n*1000/d]) else: err=1 del imbuffer else: err=1 except: err=1 if err: msg=_('BPG decoding error!\n') else: msg=_('File')+' \"%s\" '%filename+_('is not a BPG-File!') if msg: wx.PostEvent(self,ShowEvent(SE_EVT_TYPE,-1,value=msg)) if self.img: del self.img self.img=None else: return True return False
def bpgdecode(self, filename): msg = None cmd = '"' + self.bpgpath + '"' self.frames_index = 0 if len(self.frames): self.frames = [] if self.img: del self.img self.img = None if len(filename) > 4 and filename[-4:].lower() == '.bpg': try: if not (isfile(filename) and access(filename, R_OK)): msg = _('Unable to open') + '\"%s\"!' % filename except: return False if not (msg): err = 0 try: if version_info[0] < 3: imbuffer = '' else: imbuffer = b'' t, tmp = mkstemp(suffix='.rgb', prefix='') close(t) cmd += ' "' + realpath( filename) + '" ' + tmp + ' >/dev/null 2>&1' f = Popen(cmd, shell=True, stdin=None, stdout=None, stderr=None) f.wait() fifo = osopen(tmp, O_RDONLY | O_NONBLOCK) if fifo: while True: try: data = osread(fifo, 16777216) except OSError as e: if e.errno==errno.EAGAIN or\ e.errno==errno.EWOULDBLOCK: data = '' continue else: raise if len(data): imbuffer += data else: break osclose(fifo) if exists(tmp): try: remove(tmp) except: pass if len(imbuffer): x, = unpack("i", imbuffer[0:4]) y, = unpack("i", imbuffer[4:8]) n, = unpack("i", imbuffer[8:12]) d, = unpack("i", imbuffer[12:16]) if n == 0 and d == 1: try: self.img = Image.frombytes( 'RGBA', (x, y), imbuffer[16:]) except: err = 1 else: self.scale = 100.0 self.autoscale = self.scale self.bitmap_text = str(x) + 'x' + str(y) self.imginfo = '%.2f' % self.scale + '%@' + self.bitmap_text ishift = 8 dr = n * 1000 / d while True: try: n, = unpack("i", imbuffer[ishift:ishift + 4]) ishift += 4 d, = unpack("i", imbuffer[ishift:ishift + 4]) ishift += 4 except: break try: img = Image.frombytes( 'RGBA', (x, y), imbuffer[ishift:]) except: break ishift += (x * y * 4) self.frames.append( [self.bitmapfrompil(img), n * 1000 / d]) else: err = 1 del imbuffer else: err = 1 except: err = 1 if err: msg = _('BPG decoding error!\n') else: msg = _('File') + ' \"%s\" ' % filename + _('is not a BPG-File!') if msg: wx.PostEvent(self, ShowEvent(SE_EVT_TYPE, -1, value=msg)) if self.img: del self.img self.img = None else: return True return False
def waitpid(self): subpid, status = waitpid(-1, WNOHANG) if subpid in self.rfds: osclose(self.rfds[subpid]) del (self.rfds[subpid]) return subpid, status
def bpgdecode(self,filename): msg=None cmd=self.bpgpath+' -o ' if self.img: del self.img self.img=None if len(filename)>4 and filename[-4:].lower()=='.bpg': try: if not(isfile(filename) and access(filename,R_OK)): msg=_('Unable to open')+'\"%s\"!'%filename except: return False if not(msg): err=0 try: imbuffer='' if osflag: fifo=osopen(self.fifo,O_RDONLY|O_NONBLOCK) cmd+=self.fifo+' "'+realpath(filename)+'"'+\ ' >/dev/null 2>&1' f=Popen(cmd,shell=True,stdin=None,stdout=None,\ stderr=None) if fifo: while True: if f.poll()!=None: break; try: data=osread(fifo,16777216) except OSError as e: if e.errno==errno.EAGAIN or\ e.errno==errno.EWOULDBLOCK: data='' else: raise if len(data): imbuffer+=data osclose(fifo) else: si=STARTUPINFO() si.dwFlags|=1 si.wShowWindow=0 pname='\\\\.\\pipe\\'+basename(self.fifo) tpipe=win32pipe.CreateNamedPipe( pname, win32pipe.PIPE_ACCESS_DUPLEX, win32pipe.PIPE_TYPE_BYTE|win32pipe.PIPE_WAIT, 1,16777216,16777216,2000,None) cmd+=pname+' "'+realpath(filename)+'"' f=Popen(cmd,shell=False,stdin=None,stdout=None,\ stderr=None,bufsize=0,startupinfo=si) win32pipe.ConnectNamedPipe(tpipe,None) imbuffer='' if tpipe: while True: data=None try: data=win32file.ReadFile(tpipe,16777216) except: data=None if not(data): break if data[0]!=0: break if len(data[1]): imbuffer+=data[1] win32pipe.DisconnectNamedPipe(tpipe) f.wait() if len(imbuffer): if imbuffer[0]=='a': mode='RGBA' else: mode='RGB' x,=unpack("i",imbuffer[1:5]) y,=unpack("i",imbuffer[5:9]) try: self.img=Image.fromstring(mode,(x,y),imbuffer[9:]) except: err=1 del imbuffer else: err=1 except: err=1 if err: msg=_('BPG decoding error!\n') else: msg=_('File')+' \"%s\" '%filename+_('is not a BPG-File!') if msg: print msg errmsgbox(msg) if self.img: del self.img self.img=None else: return True return False
def waitpid(self): subpid, status = waitpid(-1, WNOHANG) if subpid in self.rfds: osclose(self.rfds[subpid]) del(self.rfds[subpid]) return subpid, status