int mon_getchar(void) { int ret; BLOCKING_MONLOCK(); ret = _getchar(); BLOCKING_MONUNLOCK(); return(ret); }
static char *_gets(int fd, char *buf, int len) { int ch, i = 0; while (i < len) { if ((ch = _getchar(fd)) == EOF && i == 0) return NULL; if (ch == '\n' || ch == '\r') break; buf[i++] = ch; } buf[i] = 0; return buf; }
/** * Menu principal do programa, no qual o usuário pode escolher a operação a ser realizada * @param db: ponteiro para database * @return: 0 caso o usuário deseja sair do programa 1 caso contrário */ int menu_principal(database_t *db){ char opcao; titulo("_"); //Opções do menu #ifdef MENU_IU printf("1. Inserir usuário\n"); printf("2. Remover usuário\n"); printf("3. Pesquisar usuário\n"); printf("4. Buscar gostos musicais semelhantes\n"); printf("5. Buscar usuários mais jovens\n"); printf("6. Buscar gêneros mais populares\n"); printf("7. Buscar usuários por idade e gênero\n"); printf("8. Fechar o programa\n"); #endif // MENU_IU //opcao recebe a escolha do usuário opcao = _getchar(); //Vai para a operação desejada switch(opcao){ case '1': menu_1(db); return 1; case '2': menu_2(db); return 1; case '3': menu_3(db); return 1; case '4': menu_4(db); return 1; case '5': menu_5(db); return 1; case '6': menu_6(db); return 1; case '7': menu_7(db); return 1; case '8': //Ao retornar 0, sai do while na main return 0; default: //Se o caracter for inválido, volta ao menu principal return 1; } }
static char *_gets(char *buf, int len) { int ch, i = 0; while (i < len) { if ((ch = _getchar()) == EOF && i == 0) return NULL; #if 0 if (ch >= ' ') _putchar(ch); else { _putchar('^'); _putchar(ch + '@'); } #endif if ((ch == 'C' & 037) || (ch == 'Z' & 037)) return NULL; if (ch == '\n' || ch == '\r') break; buf[i++] = ch; } buf[i] = 0; return buf; }
/** * Get a key * @param ed * @return */ int getkey(editor_t *ed) { int ch; int shift; int ctrl; ch = _getchar(ed); if (ch < 0) return ch; switch (ch) { case 0x08: return KEY_BACKSPACE; case 0x09: get_modifier_keys(&shift, &ctrl); if (shift) return KEY_SHIFT_TAB; if (ctrl) return KEY_CTRL_TAB; return KEY_TAB; case 0x0D: return KEY_ENTER; case 0x0A: return KEY_ENTER; case 0x1B: ch = _getchar(ed); switch (ch) { case 0x1B: return KEY_ESC; case 0x4F: ch = _getchar(ed); switch (ch) { case 0x46: return KEY_END; case 0x48: return KEY_HOME; case 0x50: return KEY_F1; case 0x52: return KEY_F3; case 0x54: return KEY_F5; default: return KEY_UNKNOWN; } break; case 0x5B: get_modifier_keys(&shift, &ctrl); ch = _getchar(ed); if (ch == 0x31) { ch = _getchar(ed); switch (ch) { case 0x3B: ch = _getchar(ed); if (ch == 0x32) shift = 1; if (ch == 0x35) ctrl = 1; if (ch == 0x36) shift = ctrl = 1; ch = _getchar(ed); break; case 0x35: return _getchar(ed) == 0x7E ? KEY_F5 : KEY_UNKNOWN; case 0x7E: if (shift && ctrl) return KEY_SHIFT_CTRL_HOME; if (shift) return KEY_SHIFT_HOME; if (ctrl) return KEY_CTRL_HOME; return KEY_HOME; default: return KEY_UNKNOWN; } } switch (ch) { case 0x31: if (_getchar(ed) != 0x7E) return KEY_UNKNOWN; if (shift && ctrl) return KEY_SHIFT_CTRL_HOME; if (shift) return KEY_SHIFT_HOME; if (ctrl) return KEY_CTRL_HOME; return KEY_HOME; case 0x32: return _getchar(ed) == 0x7E ? KEY_INS: KEY_UNKNOWN; case 0x33: return _getchar(ed) == 0x7E ? KEY_DEL: KEY_UNKNOWN; case 0x34: if (_getchar(ed) != 0x7E) return KEY_UNKNOWN; if (shift && ctrl) return KEY_SHIFT_CTRL_END; if (shift) return KEY_SHIFT_END; if (ctrl) return KEY_CTRL_END; return KEY_END; case 0x35: if (_getchar(ed) != 0x7E) return KEY_UNKNOWN; if (shift) return KEY_SHIFT_PGUP; return KEY_PGUP; case 0x36: if (_getchar(ed) != 0x7E) return KEY_UNKNOWN; if (shift) return KEY_SHIFT_PGDN; return KEY_PGDN; case 0x41: if (shift && ctrl) return KEY_SHIFT_CTRL_UP; if (shift) return KEY_SHIFT_UP; if (ctrl) return KEY_CTRL_UP; return KEY_UP; case 0x42: if (shift && ctrl) return KEY_SHIFT_CTRL_DOWN; if (shift) return KEY_SHIFT_DOWN; if (ctrl) return KEY_CTRL_DOWN; return KEY_DOWN; case 0x43: if (shift && ctrl) return KEY_SHIFT_CTRL_RIGHT; if (shift) return KEY_SHIFT_RIGHT; if (ctrl) return KEY_CTRL_RIGHT; return KEY_RIGHT; case 0x44: if (shift && ctrl) return KEY_SHIFT_CTRL_LEFT; if (shift) return KEY_SHIFT_LEFT; if (ctrl) return KEY_CTRL_LEFT; return KEY_LEFT; case 0x46: if (shift && ctrl) return KEY_SHIFT_CTRL_END; if (shift) return KEY_SHIFT_END; if (ctrl) return KEY_CTRL_END; return KEY_END; case 0x48: if (shift && ctrl) return KEY_SHIFT_CTRL_HOME; if (shift) return KEY_SHIFT_HOME; if (ctrl) return KEY_CTRL_HOME; return KEY_HOME; case 0x5A: return KEY_SHIFT_TAB; case 0x5B: ch = _getchar(ed); switch (ch) { case 0x41: return KEY_F1; case 0x43: return KEY_F3; case 0x45: return KEY_F5; } return KEY_UNKNOWN; default: return KEY_UNKNOWN; } break; default: return KEY_UNKNOWN; } break; case 0x00: case 0xE0: ch = _getchar(ed); switch (ch) { case 0x0F: return KEY_SHIFT_TAB; case 0x3B: return KEY_F1; case 0x3D: return KEY_F3; case 0x3F: return KEY_F5; case 0x47: return KEY_HOME; case 0x48: return KEY_UP; case 0x49: return KEY_PGUP; case 0x4B: return KEY_LEFT; case 0x4D: return KEY_RIGHT; case 0x4F: return KEY_END; case 0x50: return KEY_DOWN; case 0x51: return KEY_PGDN; case 0x52: return KEY_INS; case 0x53: return KEY_DEL; case 0x73: return KEY_CTRL_LEFT; case 0x74: return KEY_CTRL_RIGHT; case 0x75: return KEY_CTRL_END; case 0x77: return KEY_CTRL_HOME; case 0x8D: return KEY_CTRL_UP; case 0x91: return KEY_CTRL_DOWN; case 0x94: return KEY_CTRL_TAB; case 0xB8: return KEY_SHIFT_UP; case 0xB7: return KEY_SHIFT_HOME; case 0xBF: return KEY_SHIFT_END; case 0xB9: return KEY_SHIFT_PGUP; case 0xBB: return KEY_SHIFT_LEFT; case 0xBD: return KEY_SHIFT_RIGHT; case 0xC0: return KEY_SHIFT_DOWN; case 0xC1: return KEY_SHIFT_PGDN; case 0xDB: return KEY_SHIFT_CTRL_LEFT; case 0xDD: return KEY_SHIFT_CTRL_RIGHT; case 0xD8: return KEY_SHIFT_CTRL_UP; case 0xE0: return KEY_SHIFT_CTRL_DOWN; case 0xD7: return KEY_SHIFT_CTRL_HOME; case 0xDF: return KEY_SHIFT_CTRL_END; default: return KEY_UNKNOWN; } break; case 0x7F: return KEY_BACKSPACE; default: return ch; } }
int ask(editor_t *ed) { int ch = _getchar(ed); return ch == 'y' || ch == 'Y'; }
_CODE_ACCESS int getchar(void) { return(_getchar()); }
void loop() { static int8_t value=0; uint8_t n; // blink LED for(n=0; n<3; n++) { ledOn(); delay(200); ledOff(); delay(200); } uint8_t row,col; // display row an colun test initDisplay(); for(row=0; row<5; row++) { for(col=0; col<7; col++) { setRow(row); setCol(col); delay(100); } } // show hello _putchar('H'); showMatrix(200); _putchar('E'); showMatrix(200); _putchar('L'); showMatrix(400); _putchar('O'); showMatrix(200); //**************** key display example *************************** do { n=_getchar(); value=getKey(); _putchar(n); showLeds(value); } while(n!='i'); //**************** key sound display example *************************** tone(CH2_SPEAKERPIN, frequencyTable[0],50); do { n=_getchar(); value=getKey(); tone(CH2_SPEAKERPIN, frequencyTable[value],50); delay(50); _putchar(n); showLeds(value); } while(n!='i'); // key code test do { n=scanKey(); //initDisplay(); //setCol(0); //setRowPattern(n); if(n<0x10) hex1(n); else _putchar('n'); showLeds(n); showMatrix(100); //delay(1000); } while(n!=HASHKEY); }
int console_getchar(void) { return _getchar(&charConsole); }
int zigbee_getchar(void) { return _getchar(&charZigbee); }