def c_main(stdscr: curses._CursesWindow) -> int: curses.mousemask(-1) curses.mouseinterval(0) pressed = False x, y = 0, 0 stdscr.addstr('hello hello world') while True: stdscr.erase() stdscr.addstr('click anywhere!') if pressed: for y in range(y - 1, y + 2): stdscr.addstr(y, x - 1, 'XXX') c = stdscr.get_wch() if c == 'q': return 0 elif c == curses.KEY_MOUSE: _, x, y, _, bstate = curses.getmouse() if bstate & curses.BUTTON1_PRESSED: pressed = True elif bstate & curses.BUTTON1_RELEASED: pressed = False else: raise AssertionError(c)
def setup_mouse(self): # Mouse support curses.mouseinterval(10) if self.app.config["editor"]["use_mouse"]: curses.mousemask(-1) # All events else: curses.mousemask(0) # All events
def _main(): # __main_ """Program main function.""" try: window = curses.initscr() # Window object window.clear() # Erase and repaint on update availmask, oldmask = \ curses.mousemask(curses.BUTTON1_PRESSED | curses.BUTTON1_RELEASED) # Record mouse evnts curses.mouseinterval(1) # Max ms click interval curses.start_color() # To use colors curses.use_default_colors() # Default term colors eg transparency curses.meta(1) # 8b characters curses.noecho() # No auto echo keys to window curses.cbreak() # Don't wait for <Enter> window.keypad(1) # Use special char values window.nodelay(1) # Nonblocking getch/getstr window.timeout(0) # Nonblocking gets, 0 in ms window.border() # Or box on edges window.leaveok(0) # Virtual screen cursor after update curses.curs_set(0) # Invisible curser window.scrollok(0) # Cursor moves off page don't scroll window.bkgd(' ', 0) # Set background char and attr example(window) finally: window.move(0, 0) curses.nocbreak() window.keypad(0) curses.echo() curses.endwin()
def initialize(self): if Window.INSTANCE is not None: raise RuntimeError('Window already present.') Window.INSTANCE = self def init_color(): for a in range(-1, 15): for b in range(-1, 15): if a != -1 or b != -1: _curses.init_pair(self._color(a, b), a, b) self._window = _curses.initscr() self._window.keypad(True) self._window.timeout(1000) _curses.noecho() _curses.cbreak() _curses.mouseinterval(1) _curses.mousemask(0 | _curses.BUTTON1_PRESSED | _curses.BUTTON1_RELEASED) _curses.curs_set(0) try: _curses.start_color() _curses.use_default_colors() init_color() except _curses.error: pass
def initcurse(self): # Check the terminal type. If we fail, then assume that the # terminal has no capabilities. try: curses.setupterm() except: return #self.colors = cursescolors() self.cols = curses.tigetnum('cols') self.lines = curses.tigetnum('lines') self.wfilelines = self.lines-3 self.w = curses.initscr() # fenetre hauteur largeur y x self.wheader = curses.newwin( 1, self.cols, 0, 0) self.wfile = curses.newwin(self.wfilelines, self.cols, 1, 0) self.wfooter = curses.newwin( 1, self.cols, self.lines-2, 0) self.wcmd = curses.newwin( 1, self.cols, self.lines-1, 0) curses.noecho() curses.cbreak() curses.nonl() # permet d'activer la touche enter (code 13) curses.curs_set(0) curses.mousemask(0) curses.mouseinterval(0) self.w.keypad(1) self.w.nodelay(0) self.w.timeout(self.timeout) try: self.initcolors_1() except: self.initcolors_2()
def enable(cls, flag): if flag: attr = curses.BUTTON1_CLICKED | curses.BUTTON1_DOUBLE_CLICKED curses.mousemask(attr) curses.mouseinterval(200) else: curses.mousemask(0)
def init(self): self.window = curses.initscr() self.initted = True self.ymax, self.xmax = self.window.getmaxyx() terminfo = curses.longname() assert '256' in terminfo # your env TERM must be xterm-256color! assert curses.has_colors() curses.start_color() curses.use_default_colors() ctr = 1 for fg in CLRS: for bg in CLRS: if ctr <= curses.COLORS-1 and fg != bg: curses.init_pair(ctr, CLRS[fg], CLRS[bg]) pairs[(fg,bg)] = curses.color_pair(ctr) ctr += 1 curses.meta(1) curses.noecho() curses.cbreak() curses.curs_set(0) curses.delay_output(0) curses.mouseinterval(150) availmask,_ = curses.mousemask(curses.ALL_MOUSE_EVENTS) assert availmask != 0 # mouse must be available! self.window.leaveok(1) self.window.scrollok(0) self.window.keypad(1) if NONBLOCKING: self.window.nodelay(1) self.window.timeout(NONBLOCKING_TIMEOUT) else: self.window.nodelay(0) self.window.timeout(-1) self.window.refresh()
def main(window): curses.mousemask(curses.ALL_MOUSE_EVENTS) curses.mouseinterval(0) while True: char = window.getch() if char == curses.KEY_MOUSE: window.addstr(repr(curses.getmouse()) + SEPARATOR) else: window.addstr(str(char) + SEPARATOR)
def wrapped(scr): curses.use_default_colors() curses.mousemask(curses.ALL_MOUSE_EVENTS) curses.mouseinterval(0) curses.curs_set(2) # solid block cursor scr.idlok(True) curses.def_prog_mode() i = HexInterface(scr) i.set_file(hf) i.main_loop()
def setupcolors(stdscr, f, *args): curses.raw() # get control keys instead of signals curses.meta(1) # allow "8-bit chars" curses.mousemask(-1) # even more than curses.ALL_MOUSE_EVENTS curses.mouseinterval(0) # very snappy but does not allow for [multi]click curses.mouseEvents = {} for k in dir(curses): if k.startswith('BUTTON') or k == 'REPORT_MOUSE_POSITION': curses.mouseEvents[getattr(curses, k)] = k return f(stdscr, *args)
def setCurses(self): self.scr.refresh() curses.start_color() curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK) curses.init_pair(3, curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(6, curses.COLOR_BLUE, curses.COLOR_BLACK) curses.init_pair(2, curses.COLOR_CYAN, curses.COLOR_BLACK) curses.init_pair(4, curses.COLOR_YELLOW, curses.COLOR_BLACK) curses.init_pair(5, curses.COLOR_MAGENTA, curses.COLOR_BLACK) curses.init_pair(7, curses.COLOR_RED, curses.COLOR_BLACK) curses.mousemask(-1) curses.mouseinterval(0) curses.curs_set(0)
def c_main(stdscr: curses._CursesWindow) -> int: curses.mousemask(-1) curses.mouseinterval(0) stdscr.addstr('hello hello world') while True: c = stdscr.get_wch() if c == 'q': return 0 elif c == curses.KEY_MOUSE: stdscr.addstr(1, 0, 'mouse event') else: raise AssertionError(c)
def CuInit(screen): #screen = curses.initscr() #curses.noecho() curses.curs_set(0) screen.keypad(1) curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) curses.mouseinterval(0) GLBL['maxY'], GLBL['maxX'] = screen.getmaxyx() #printf("\033[?1003h\n"); // Makes the terminal report mouse movement events #print('\033[?1000h') #print('\033[?1001h') #print('\033[?1002h') print('\033[?1003h')
def _setup_mouse(signal): if signal['value']: curses.mousemask(MOUSEMASK) curses.mouseinterval(0) ## this line solves this problem: ## If an action, following a mouse click, includes the ## suspension and re-initializion of the ui (e.g. running a ## file by clicking on its preview) and the next key is another ## mouse click, the bstate of this mouse event will be invalid. ## (atm, invalid bstates are recognized as scroll-down) curses.ungetmouse(0,0,0,0,0) else: curses.mousemask(0)
def _setup_mouse(signal): if signal['value']: curses.mousemask(MOUSEMASK) curses.mouseinterval(0) ## this line solves this problem: ## If a mouse click triggers an action that disables curses and ## starts curses again, (e.g. running a ## file by clicking on its ## preview) and the next key is another mouse click, the bstate of this ## mouse event will be invalid. (atm, invalid bstates are recognized ## as scroll-down, so this avoids an errorneous scroll-down action) curses.ungetmouse(0, 0, 0, 0, 0) else: curses.mousemask(0)
def _setup_mouse(signal): if signal['value']: curses.mousemask(MOUSEMASK) curses.mouseinterval(0) # This line solves this problem: # If a mouse click triggers an action that disables curses and # starts curses again, (e.g. running a ## file by clicking on its # preview) and the next key is another mouse click, the bstate of this # mouse event will be invalid. (atm, invalid bstates are recognized # as scroll-down, so this avoids an errorneous scroll-down action) curses.ungetmouse(0, 0, 0, 0, 0) else: curses.mousemask(0)
def __init__(self, cursesScreen): self.debugMouseEvent = (0, 0, 0, 0, 0) self.exiting = False self.cursesScreen = cursesScreen self.ch = 0 curses.mousemask(-1) curses.mouseinterval(0) # Enable mouse tracking in xterm. sys.stdout.write('\033[?1002;h') #sys.stdout.write('\033[?1005;h') curses.meta(1) # Access ^c before shell does. curses.raw() # Enable Bracketed Paste Mode. sys.stdout.write('\033[?2004;h') # Push the escape codes out to the terminal. (Whether this is needed seems # to vary by platform). sys.stdout.flush() try: curses.start_color() if not curses.has_colors(): userMessage("This terminal does not support color.") self.quitNow() else: curses.use_default_colors() except curses.error as e: app.log.error(e) app.log.startup(u"curses.COLORS", curses.COLORS) if 0: assert curses.COLORS == 256 assert curses.can_change_color() == 1 assert curses.has_colors() == 1 app.log.detail("color_content:") for i in range(0, curses.COLORS): app.log.detail("color", i, ": ", curses.color_content(i)) for i in range(16, curses.COLORS): curses.init_color(i, 500, 500, i * 787 % 1000) app.log.detail("color_content, after:") for i in range(0, curses.COLORS): app.log.detail("color", i, ": ", curses.color_content(i)) if 1: #rows, cols = self.cursesScreen.getmaxyx() cursesWindow = self.cursesScreen cursesWindow.leaveok(1) # Don't update cursor position. cursesWindow.scrollok(0) cursesWindow.timeout(10) cursesWindow.keypad(1) app.window.mainCursesWindow = cursesWindow self.zOrder = []
def __init__(self, cursesScreen): self.clicks = 0 self.debugMouseEvent = (0, 0, 0, 0, 0) self.exiting = False self.modalUi = None self.modeStack = [] self.priorClick = 0 self.savedMouseButton1Down = False self.savedMouseWindow = None self.savedMouseX = -1 self.savedMouseY = -1 self.cursesScreen = cursesScreen self.ch = 0 curses.mousemask(-1) curses.mouseinterval(0) # Enable mouse tracking in xterm. sys.stdout.write('\033[?1002;h\n') #sys.stdout.write('\033[?1005;h\n') curses.meta(1) # Access ^c before shell does. curses.raw() # Enable Bracketed Paste Mode. sys.stdout.write('\033[?2004;h\n') #curses.start_color() curses.use_default_colors() if 0: assert (curses.COLORS == 256) assert (curses.can_change_color() == 1) assert (curses.has_colors() == 1) app.log.detail("color_content:") for i in range(0, curses.COLORS): app.log.detail("color", i, ": ", curses.color_content(i)) for i in range(16, curses.COLORS): curses.init_color(i, 500, 500, i * 787 % 1000) app.log.detail("color_content, after:") for i in range(0, curses.COLORS): app.log.detail("color", i, ": ", curses.color_content(i)) self.setUpPalette() if 1: #rows, cols = self.cursesScreen.getmaxyx() cursesWindow = self.cursesScreen cursesWindow.leaveok(1) # Don't update cursor position. cursesWindow.scrollok(0) cursesWindow.timeout(10) cursesWindow.keypad(1) self.top, self.left = cursesWindow.getyx() self.rows, self.cols = cursesWindow.getmaxyx() app.window.mainCursesWindow = cursesWindow self.zOrder = []
def __CuInit__(screen): locale.setlocale(locale.LC_ALL, "") # curses.curs_set(False) # curses.curs_set(1) CuHelper.disableCursor() screen.keypad(1) curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) curses.mouseinterval(0) CuHelper.GLBL['screen'] = screen CuHelper.GLBL['maxY'], CuHelper.GLBL['maxX'] = screen.getmaxyx() CuTCore.cuDebug("SCREEN: W:" + str(CuHelper.GLBL['maxX']) + " H:" + str(CuHelper.GLBL['maxY'])) CuWrapper.initWrapper() CuWrapper.__CuInit__()
def curses_main(win): config = default_config() curses.curs_set(False) curses.start_color() curses.use_default_colors() config["style"] = config_implement_colors(config["style"]) set_scene(UI0(config).render) curses.cbreak() curses.mousemask(-1) curses.mouseinterval(0) while True: with im.Frame(win): UI_RENDERER() if im.Key("q"): break while not (im.want_refresh or im.gather_input(win)): pass
def read(self, prompt = '>>>'): if (self.tcs.conf.mouseScroll == True): curses.mousemask(curses.BUTTON_SHIFT | curses.BUTTON_CTRL | curses.BUTTON_ALT | curses.BUTTON4_PRESSED | curses.BUTTON4_RELEASED) curses.mouseinterval(5) self.addBindkey(curses.KEY_MOUSE, self.__mouse_event, []) self.prompt = prompt self.winReadLine.addstr(prompt) self.message = '' found = 0 fxy = self.winReadLine.getyx() self.xy = [fxy[0], len(prompt)] self.lprompt = len(self.prompt) while 1: ch = self.winReadLine.getch() for key, f, args in self.bindkeys: if (key == ch): f(self, args) found = 1 break if (found == 1): found = 0 continue if (ch == 10): if (self.tcs.currentBuddy != 'ns-sys'): self.tcs.sendToLogin(self.tcs.currentBuddy, self.message) self.tcs.buddysWindow[self.tcs.currentBuddy].send(self.message) self.tcs.buddysWindow[self.tcs.currentBuddy].refresh() self.xy[1] = self.lprompt - 1 self.winReadLine.move(self.xy[0], self.xy[1]+1) #self.winReadLine.addstr(self.prompt) self.winReadLine.clrtoeol() self.message = '' elif (ch <= 255 and ch >= 0): if (self.xy[1] - self.lprompt != len(self.message)): self.message = self.message[:self.xy[1]-self.lprompt] + chr(ch) + self.message[self.xy[1]-self.lprompt:] else: self.message += chr(ch) else: continue self.winReadLine.insch(ch) self.xy[1] += 1 self.winReadLine.move(self.xy[0], self.xy[1])
def setup(self): self.timeout = None self.player.defaults['default'] = 0 curses.curs_set(False) curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) curses.mouseinterval(0) curses.use_default_colors() curses.init_pair(1, curses.COLOR_BLUE, -1) curses.init_pair(2, curses.COLOR_CYAN, -1) curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_WHITE) curses.init_pair(4, curses.COLOR_YELLOW, -1) self.windows.add('help', 3, 0, self.windows.max.y-6, self.windows.max.x-1) self.handlers.help = HelpHandler(self.windows.help, self.player, self.windows) self.windows.add('state', 0, 0, 3, self.windows.max.x) self.handlers.state = StateHandler(self.windows.state, self.player) self.windows.add('progress', self.windows.max.y-3, 0) self.handlers.progress = ProgressHandler(self.windows.progress, self.player) exts = [ 'avi', 'wmv', 'mkv', 'mpg', ] self.windows.add('browser', 3, 0, self.windows.max.y-6, self.windows.max.x-1) self.handlers.browser = BrowserHandler(self.windows.browser, self.player, exts) self.windows.apply('keypad', 1) # turn keypad on for all windows self.active = self.handlers.browser active = cycle([self.handlers.help, self.handlers.browser]) signal.signal(signal.SIGWINCH, lambda *args : self.handle('resize')) self.windows.root.keymap.add( Bind(None, ['KEY_RESIZE'], lambda : self.handle('resize')), Bind(None, ['KEY_MOUSE'], self.mouse), Bind('Close Aesop.', ['q'], self.quit), Bind('Toggle pause.', ['p'], self.player.pause), Bind('Stop play.', ['x'], self.player.stop), Bind('Seek forward 10 seconds', ['KEY_RIGHT', 's'], self.handlers.progress.seek, 10), Bind('Seek backward 10 seconds', ['KEY_LEFT', 'h'], self.handlers.progress.seek, -10), Bind('Cycle between help, browser and playlist windows.', ['\t'], self.set_active, lambda : next(active)), )
def __init__(self, win, paths, prefs): wwind.app =wcall.app= self self.win = win # root window, needed for resizing self.prefs = prefs # preferences self.maxh, self.maxw = self.win.getmaxyx() self.stdscr = curses.initscr() curses.cbreak() curses.raw() wwind.cursor_hide() curses.ACS_BTEE += CURSES_OFFSET curses.ACS_CKBOARD += CURSES_OFFSET curses.ACS_DARROW += CURSES_OFFSET curses.ACS_HLINE += CURSES_OFFSET curses.ACS_LLCORNER += CURSES_OFFSET curses.ACS_LRCORNER += CURSES_OFFSET curses.ACS_LTEE += CURSES_OFFSET curses.ACS_DIAMOND += CURSES_OFFSET curses.ACS_RTEE += CURSES_OFFSET curses.ACS_TTEE += CURSES_OFFSET curses.ACS_UARROW += CURSES_OFFSET curses.ACS_ULCORNER += CURSES_OFFSET curses.ACS_URCORNER += CURSES_OFFSET curses.ACS_VLINE += CURSES_OFFSET if self.prefs.options['mouse_support']: curses.mousemask(curses.ALL_MOUSE_EVENTS) curses.mouseinterval(0) color.set_colors(self) self.statusbar= wwind.StatusBar(self.maxw,self.maxh,color.STATUS_BAR) self.tabbar = wwind.Bar(self.maxw, 1, color.NOCLR) if self.prefs.options['num_panes'] == 1: lmode, rmode = PANE_MODE_FULL, PANE_MODE_HIDDEN else: lmode, rmode = PANE_MODE_LEFT, PANE_MODE_RIGHT self.lpane = Pane(paths[0], lmode, self) self.rpane = Pane(paths[1], rmode , self) self.act_pane, self.noact_pane = self.lpane, self.rpane self.click_tm = time.time() self.cmdruning = False
def setup(self): self.timeout = None self.player.defaults["default"] = 0 curses.curs_set(False) curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) curses.mouseinterval(0) curses.use_default_colors() curses.init_pair(1, curses.COLOR_BLUE, -1) curses.init_pair(2, curses.COLOR_CYAN, -1) curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_WHITE) curses.init_pair(4, curses.COLOR_YELLOW, -1) self.windows.add("help", 3, 0, self.windows.max.y - 6, self.windows.max.x - 1) self.handlers.help = HelpHandler(self.windows.help, self.player, self.windows) self.windows.add("state", 0, 0, 3, self.windows.max.x) self.handlers.state = StateHandler(self.windows.state, self.player) self.windows.add("progress", self.windows.max.y - 3, 0) self.handlers.progress = ProgressHandler(self.windows.progress, self.player) exts = ["avi", "wmv", "mkv", "mpg"] self.windows.add("browser", 3, 0, self.windows.max.y - 6, self.windows.max.x - 1) self.handlers.browser = BrowserHandler(self.windows.browser, self.player, exts) self.windows.apply("keypad", 1) # turn keypad on for all windows self.active = self.handlers.browser active = cycle([self.handlers.help, self.handlers.browser]) self.windows.root.keymap.add( Bind(None, ["KEY_RESIZE"], self.resize), Bind(None, ["KEY_MOUSE"], self.mouse), Bind("Close Aesop.", ["q"], self.quit), Bind("Toggle pause.", ["p"], self.player.pause), Bind("Stop play.", ["x"], self.player.stop), Bind("Seek forward 10 seconds", ["KEY_RIGHT", "s"], self.handlers.progress.seek, 10), Bind("Seek backward 10 seconds", ["KEY_LEFT", "h"], self.handlers.progress.seek, -10), Bind("Cycle between help, browser and playlist windows.", ["\t"], self.set_active, lambda: next(active)), )
def init(self): if os.path.exists('terminal') == False: subprocess.call(['mkdir', 'terminal']) if os.path.exists('terminal/.alias') == True: try: file = open('terminal/.alias', 'rb') self.alias_tuples = pickle.load(file) file.close() except: print "read alias record failed" if os.path.exists('terminal/.cmd_history') == True: try: file = open('terminal/.cmd_history', 'rb') self.cmd_history = pickle.load(file) file.close() except: print "read command history failed" #initialize UI try: self.stdscr = curses.initscr() curses.noecho() curses.cbreak() curses.mousemask(-1) curses.mouseinterval(0) curses.start_color() curses.use_default_colors() curses.init_pair(0, curses.COLOR_BLACK, -1) curses.init_pair(1, curses.COLOR_RED, -1) curses.init_pair(2, curses.COLOR_GREEN, -1) curses.init_pair(3, curses.COLOR_YELLOW, -1) curses.init_pair(4, curses.COLOR_BLUE, -1) curses.init_pair(5, curses.COLOR_MAGENTA, -1) curses.init_pair(6, curses.COLOR_CYAN, -1) curses.init_pair(7, curses.COLOR_WHITE, -1) self.curseslock = threading.Lock() self.window_redraw() return "success" except: return "UI failed"
def main(self, stdscr): self.stdscr = stdscr; self.scrollPosMax = int(-1) self.scrollPos = int(0); self.maxScroll = 100 self.height, self.width = stdscr.getmaxyx() stdscr.clear() stdscr.refresh() curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_YELLOW) curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLUE) curses.init_pair(3, curses.COLOR_CYAN, curses.COLOR_BLACK) curses.init_pair(4, curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(5, curses.COLOR_YELLOW, curses.COLOR_BLACK) curses.init_pair(6, curses.COLOR_MAGENTA, curses.COLOR_BLACK) curses.init_pair(7, curses.COLOR_RED, curses.COLOR_BLACK) curses.init_pair(8, curses.COLOR_BLUE, curses.COLOR_BLACK) global yellowBG, blueBG, cyanText, greenText, yellowText, magentaText, redText, blueText yellowBG = curses.color_pair(1) blueBG = curses.color_pair(2) cyanText = curses.color_pair(3) greenText = curses.color_pair(4) yellowText = curses.color_pair(5) magentaText = curses.color_pair(6) redText = curses.color_pair(7) blueText = curses.color_pair(8) curses.mouseinterval(0) curses.mousemask(curses.BUTTON4_PRESSED | curses.BUTTON2_PRESSED) self.scroll = curses.newpad(self.maxScroll, self.width) self.scroll.scrollok(True) self.scroll.idlok(True) self.scroll.keypad(True) self.topLine = stdscr.subwin(1, self.width, 0, 0) self.infoLine = stdscr.subwin(1, self.width, self.height - 2, 0) self.inputLine = stdscr.subwin(1, self.width, self.height - 1, 0) self.event.set() self.getInput()
def init_screen(): screen = curses.initscr() # Window object screen.clear() # Erase and repaint on update availmask, oldmask = curses.mousemask( curses.BUTTON1_PRESSED | curses.BUTTON1_RELEASED | \ curses.BUTTON1_DOUBLE_CLICKED) # Record mouse evnts curses.mouseinterval(0) # Max ms click interval curses.start_color() # To use colors curses.use_default_colors() # Default term colors eg transparency curses.init_pair(COLOR_RED, curses.COLOR_RED, -1) curses.init_pair(COLOR_BLUE, curses.COLOR_BLUE, -1) curses.meta(1) # 8b characters curses.noecho() # No auto echo keys to window curses.cbreak() # Don't wait for <Enter> screen.keypad(1) # Use special char values screen.nodelay(1) # Nonblocking getch/getstr screen.timeout(1) # Nonblocking gets, 0 in ms screen.leaveok(0) # Virtual screen cursor after update curses.curs_set(0) # Invisible curser screen.scrollok(0) # Cursor moves off page don't scroll return screen
def newwindow(scr): win = MainWindow(scr) win.rl.addBindkey(curses.KEY_RESIZE, winresize, [win]) win.rl.addBindkey(9, changeBuddy, [win, 1]) win.rl.addBindkey(curses.KEY_DOWN, changeBuddy, [win, 1]) win.rl.addBindkey(curses.KEY_UP, changeBuddy, [win, 0]) win.buddysWindow['ns-sys'].top() win.refreshWindow() win.start() try: win.rl.read() except KeyboardInterrupt: if (win.conf.mouseScroll == True): curses.mouseinterval(200) curses.endwin() except tcs.TcapsoulException as e: if (win.conf.mouseScroll == True): curses.mouseinterval(200) curses.endwin() print '\n\n\nVous avez fait quelque chose de mal : "%s"' % e.message except: if (win.conf.mouseScroll == True): curses.mouseinterval(200) curses.endwin() print "\033[31m !!!!!! OOOOOoops TCAPSOUL a plante !!!!!!\033[37m" #res = raw_input('Voulez vous voir pourquoi? (o/n)') #if (res[0:1] == 'o'): traceback.print_exc(file=sys.stdout) print '-----------------------TCAPSOUL BETA 1-----------------------------' print "Bye bye - n'oubliez pas d'enculer a sec branda_f si vous le voyez!" return (0)
def __init__(self, cursesScreen): self.debugMouseEvent = (0, 0, 0, 0, 0) self.exiting = False self.modalUi = None self.modeStack = [] self.priorClick = 0 self.savedMouseWindow = None self.savedMouseX = -1 self.savedMouseY = -1 self.stdscr = cursesScreen self.ch = 0 curses.mousemask(-1) curses.mouseinterval(0) # Enable mouse tracking in xterm. print '\033[?1002;h' #print '\033[?1005;h' curses.meta(1) # Access ^c before shell does. curses.raw() #curses.start_color() curses.use_default_colors() if 0: assert (curses.COLORS == 256) assert (curses.can_change_color() == 1) assert (curses.has_colors() == 1) app.log.detail("color_content:") for i in range(0, curses.COLORS): app.log.detail("color", i, ": ", curses.color_content(i)) for i in range(16, curses.COLORS): curses.init_color(i, 500, 500, i * 787 % 1000) app.log.detail("color_content, after:") for i in range(0, curses.COLORS): app.log.detail("color", i, ": ", curses.color_content(i)) self.showPalette = 0 self.shiftPalette() self.zOrder = []
#
async def start_ui(window, loop): # Clear screen window.clear() window.refresh() curses.noecho() # Don't require enter to be pressed for inputs curses.cbreak() # Needed to enable mouse curses.mousemask(1) window.keypad(1) curses.mouseinterval(0) # Connect to the AppleTV atv, device = await connect_to_atv(window, loop) col_1, col_2, row_1, row_2 = draw_ui(window, atv, device) while True: try: c = window.getch() if c == curses.KEY_MOUSE: _, x, y, _, _ = curses.getmouse() # Get mouse position left = x < col_1 right = x > col_2 up = y < row_1 down = y > row_2 center = not up and not down middle = not left and not right # Click areas. if left and center: await atv.remote_control.left() elif right and center: await atv.remote_control.right() elif up and middle: await atv.remote_control.up() elif down and middle: await atv.remote_control.down() elif center and middle: await atv.remote_control.select() elif left and up: await atv.remote_control.menu() elif right and up: await atv.remote_control.home() elif left and down: await atv.remote_control.suspend() break elif right and down: await atv.remote_control.play_pause() elif c == ord('w'): await atv.remote_control.wakeup() elif c == ord('s'): await atv.remote_control.suspend() break elif c == ord('r'): col_1, col_2, row_1, row_2 = draw_ui(window, atv, device) elif c == ord('h'): await atv.remote_control.left() elif c == ord('j'): await atv.remote_control.down() elif c == ord('k'): await atv.remote_control.up() elif c == ord('l'): await atv.remote_control.right() elif c == ord('u'): await atv.remote_control.top_menu() elif c == ord('i'): await atv.remote_control.menu() elif c == ord('o'): await atv.remote_control.select() elif c == ord('p'): await atv.remote_control.play_pause() elif c == ord('z'): await atv.remote_control.volume_down() elif c == ord('x'): await atv.remote_control.volume_up() elif c == ord('q'): break # Exit the while loop except Exception as err: window.addstr(row_1 + 9, col_1 + 1, '{}'.format(err)) # Unhide cursor curses.curs_set(1) window.refresh() # Close connection to device result = atv.close() if result is not None: await result
.3.113........221.3. """ if use_unicode: symbols = ["0", "1", "2", "3", "4", " "] spins = ["◴ ", "◵ ", "◶ ", "◷ "] else: symbols = [" 0", " 1", " 2", " 3", " 4", " "] spins = ["|", "\\", "-", "/"] try: screen = curses.initscr() screen.keypad(1) curses.curs_set(0) curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) curses.mouseinterval(0) print("\033[?1002h\n") curses.flushinp() curses.noecho() screen.clear() curses.start_color() curses.use_default_colors() curses.init_pair(1, curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLUE) curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_CYAN) curses.init_pair(4, curses.COLOR_YELLOW, curses.COLOR_MAGENTA) screen.bkgd(" ", curses.color_pair(1)) BUTTON_SCROLLUP = 0x0001_0000 BUTTON_SCROLLDOWN = 0x0020_0000
def module_funcs(stdscr): "Test module-level functions" for func in [curses.baudrate, curses.beep, curses.can_change_color, curses.cbreak, curses.def_prog_mode, curses.doupdate, curses.filter, curses.flash, curses.flushinp, curses.has_colors, curses.has_ic, curses.has_il, curses.isendwin, curses.killchar, curses.longname, curses.nocbreak, curses.noecho, curses.nonl, curses.noqiflush, curses.noraw, curses.reset_prog_mode, curses.termattrs, curses.termname, curses.erasechar, curses.getsyx]: func() # Functions that actually need arguments if curses.tigetstr("cnorm"): curses.curs_set(1) curses.delay_output(1) curses.echo() ; curses.echo(1) f = tempfile.TemporaryFile() stdscr.putwin(f) f.seek(0) curses.getwin(f) f.close() curses.halfdelay(1) curses.intrflush(1) curses.meta(1) curses.napms(100) curses.newpad(50,50) win = curses.newwin(5,5) win = curses.newwin(5,5, 1,1) curses.nl() ; curses.nl(1) curses.putp('abc') curses.qiflush() curses.raw() ; curses.raw(1) curses.setsyx(5,5) curses.tigetflag('hc') curses.tigetnum('co') curses.tigetstr('cr') curses.tparm('cr') curses.typeahead(sys.__stdin__.fileno()) curses.unctrl('a') curses.ungetch('a') curses.use_env(1) # Functions only available on a few platforms if curses.has_colors(): curses.start_color() curses.init_pair(2, 1,1) curses.color_content(1) curses.color_pair(2) curses.pair_content(curses.COLOR_PAIRS - 1) curses.pair_number(0) if hasattr(curses, 'use_default_colors'): curses.use_default_colors() if hasattr(curses, 'keyname'): curses.keyname(13) if hasattr(curses, 'has_key'): curses.has_key(13) if hasattr(curses, 'getmouse'): (availmask, oldmask) = curses.mousemask(curses.BUTTON1_PRESSED) # availmask indicates that mouse stuff not available. if availmask != 0: curses.mouseinterval(10) # just verify these don't cause errors m = curses.getmouse() curses.ungetmouse(*m)
def play(stdscr): ''' main game ''' os.system('xset r rate 1') killer = GracefulKiller() k = 0 score = 0 # curses.halfdelay(1) curses.mousemask(True) curses.mouseinterval(5) curses.curs_set(0) # Clear and refresh the screen for a blank canvas stdscr.nodelay(1) # curses.halfdelay(3) stdscr.clear() stdscr.refresh() # Start colors in curses curses.start_color() curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK) curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK) curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_BLACK) curses.init_pair(4, curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(5, curses.COLOR_YELLOW, curses.COLOR_BLACK) curses.init_pair(6, curses.COLOR_CYAN, curses.COLOR_BLACK) curses.init_pair(7, curses.COLOR_MAGENTA, curses.COLOR_BLACK) # this is the background color I guess curses.init_pair(8, curses.COLOR_BLACK, curses.COLOR_BLACK) # color dict global COLOURS inv_colors = {v: k for k, v in COLOURS.items()} # Initialization stdscr.clear() height, width = stdscr.getmaxyx() shots = [] invaders = [] animations = [] invader_shots = [] ship = Ship(path=SHIP_PATH, y=height - 4, speed=1, rof=0.5) w = curses.newwin(ship.Shape()[0], ship.Shape()[1] + 1, ship.y, ship.x) p = curses.panel.new_panel(w) for i in range(ship.Shape()[0]): w.addstr(i, 0, ship.lines[i], curses.color_pair(COLOURS[ship.color])) # Spawn invaders invaders = [] n_rows = 4 for row_i in range(n_rows): bottom = bool(row_i == n_rows - 1) y_row = 4 * row_i + 2 row = [] for col, x_inv in enumerate(range(0, width - 50, 7)): # invaders.append(Invader(path=INVADER_PATH, x=50, y=5, speed=1, uprate=1)) row.append( Invader(path=INVADER_PATH, x=x_inv, y=y_row, speed=1, uprate=0.1, rof=1, bottom=bottom, color=inv_colors[(col) % 7 + 1])) invaders.append(row) for row in invaders: for inv in row: for i in range(inv.Shape()[0]): inv.win.addstr(i, 0, inv.lines[i], curses.color_pair(COLOURS[inv.color])) # Loop where k is the last character pressed while k != ord('q'): if killer.kill_now: # if user ctrl+c then reset keyboard rate and leave os.system('xset r rate 500') break if k == curses.KEY_DOWN: pass elif k == curses.KEY_UP: pass elif k == curses.KEY_RIGHT and ship.Moveable(): if ship.x + ship.Shape()[1] + ship.speed < width: ship.MoveRight() if animations: for a in animations: a.panel.move( a.y, ship.x + ship.Shape()[1] // 2 - a.Shape()[1] // 2) elif k == curses.KEY_LEFT and ship.Moveable(): if ship.x - ship.speed >= 0: ship.MoveLeft() if animations: for a in animations: a.panel.move( a.y, ship.x + ship.Shape()[1] // 2 - a.Shape()[1] // 2) # Declaration of strings statusbarstr = "Press 'q' to exit | Score : {} | Lifes : {}".format( score, ship.life) # Render status bar stdscr.attron(curses.color_pair(3)) stdscr.addstr(height - 1, 0, statusbarstr) stdscr.addstr(height - 1, len(statusbarstr), " " * (width - len(statusbarstr) - 1)) stdscr.attroff(curses.color_pair(3)) # Shooting logic if k == curses.KEY_MOUSE and ship.Shootable(): ship.last_shot = time.time() # _, mx, my, _, _ = curses.getmouse() # if bstate == curses.BUTTON1_PRESSED: playsound(ship.shoot_sound) temp_proj = Projectile(ship.x + ship.Shape()[1] // 2, ship.y, direction='up', speed=1, uprate=0.2, path=PROJECTILE_PATH) temp_proj.x = ship.x + \ ship.Shape()[1] // 2 - temp_proj.Shape()[1] // 2 temp_proj.y = ship.y - temp_proj.Shape()[0] temp_proj.Draw() shots.append(temp_proj) animations.append(Animation(ship.x + 2, ship.y - 2, path=SHOT_PATH)) shots = Shot_mvt(shots, height, zorder='top') invader_shots = Shot_mvt(invader_shots, height, zorder='bottom') for a in animations: if a.end: a.win.erase() a.panel.hide() animations.remove(a) else: if a.Drawable(): a.Draw() a.panel.bottom() for i in range(a.Shape()[0]): a.win.addstr(i, 0, a.draw[i], curses.color_pair(COLOURS[a.color])) # Invader movement logic # for row in invaders: # take the most left or right invader k = -1 while True not in [i.alive for i in invaders[k] ]: # find row with at least one invader alive k = k - 1 row = invaders[k] if row[0].direction == 'right': inv = row[-1] if row[0].direction == 'left': inv = row[0] i_x, i_y = inv.Move(fake=True) # get the coords of next step if inv.Moveable(): # if above the 10 if i_x <= 0 or i_x + \ inv.Shape()[1] >= width: # left & right side detection if i_x <= 0: for row in invaders: RowApply(row, lambda x: x.ChangeDirection('right')) elif i_x + inv.Shape()[1] >= width: for row in invaders: RowApply(row, lambda x: x.ChangeDirection('left')) if i_y < height - 10: for row in invaders: RowApply(row, lambda x: x.MoveDown()) # update rate for row in invaders: RowApply(row, lambda x: x.ChangeRate(0.05)) stdscr.addstr(0, 0, str(inv.uprate)) playsound(HIT_SOUND) else: # otherwise just move for row in invaders: RowApply(row, lambda x: x.Move()) for row in invaders: # draw on new position for inv in row: inv.panel.move(inv.y, inv.x) # invader shooting if inv.bottom and inv.Moveable() and inv.alive and inv.Shoot(): temp_proj = Projectile(0, 0, direction='down', speed=1, uprate=0.2, path=PROJECTIL_INV_PATH, color=inv.color) temp_proj.x = inv.x + \ inv.Shape()[1] // 2 - temp_proj.Shape()[1] // 2 temp_proj.y = inv.y + temp_proj.Shape()[0] temp_proj.Draw() invader_shots.append(temp_proj) stdscr.addstr(10, 10, str(len(invader_shots))) # collision detection # improvement: checking collision on dead invaders: done ! for row_i, row in enumerate(invaders): row_alive_invaders = [i for i in row if i.alive] if row_alive_invaders: collided = collision_detect(shots, row_alive_invaders) for element in collided: if not element[1].alive: continue playsound(BOOM_SOUND) element[1].win.erase() element[1].panel.hide() element[1].alive = False score += 10 # this finds the new bottom invader if element[1].bottom: column = row.index(element[1]) for j, _ in enumerate(invaders): if invaders[j][column].alive: bottom_row = j invaders[bottom_row][column].bottom = True if column == 0: stdscr.addstr(5, 0, str(bottom_row)) element[0].win.erase() element[0].panel.hide() shots.remove(element[0]) else: invaders.remove(row) #Ship collision logic collided = collision_detect(invader_shots, [ship]) for element in collided: element[1].life -= 1 #here is trigger for death sequence element[0].win.erase() element[0].panel.hide() invader_shots.remove(element[0]) p.move(ship.y, ship.x) curses.panel.update_panels() # Refresh the screen stdscr.refresh() # get next input k = stdscr.getch() return 'start'