console: improvements

This commit is contained in:
Matheus
2022-10-15 17:36:42 -03:00
parent 6b112a528c
commit 90d762b079
2 changed files with 25 additions and 5 deletions
+5
View File
@@ -11,6 +11,11 @@ typedef unsigned int tcflag_t;
#define ECHO 0000010 #define ECHO 0000010
#define ICANON 0000002 #define ICANON 0000002
#define VMIN 6 #define VMIN 6
#define INLCR 0000100
#define IGNCR 0000200
#define ICRNL 0000400
#define OCRNL 0000010
typedef struct{ typedef struct{
tcflag_t c_iflag; tcflag_t c_iflag;
+17 -2
View File
@@ -65,11 +65,25 @@ __attribute__((noreturn)) static void console_thread(){
char* strbufptr; char* strbufptr;
size_t strbuflen; size_t strbuflen;
char thingy[2];
if(packet.ascii){ if(packet.ascii){
if(packet.ascii == '\n'){
if(IGNCR & tty.c_iflag)
continue;
if((ICRNL & tty.c_iflag) == 0)
packet.ascii = '\r';
}
strbufptr = &packet.ascii; strbufptr = &packet.ascii;
strbuflen = 1; strbuflen = 1;
if(packet.flags & (KBPACKET_FLAGS_LEFTCTRL | KBPACKET_FLAGS_RIGHTCTRL)){
if(!((packet.ascii > 'a' && packet.ascii < 'z') || (packet.ascii > 'A' && packet.ascii < 'Z')))
continue;
strbufptr[0] = packet.ascii > 'a' ? packet.ascii - 0x60 : packet.ascii - 0x40;
}
} }
else{ else{
switch(packet.keycode){ switch(packet.keycode){
@@ -128,8 +142,9 @@ __attribute__((noreturn)) static void console_thread(){
break; break;
} }
if(packet.ascii && tty.c_lflag & ECHO) if(packet.ascii && tty.c_lflag & ECHO){
console_write(strbufptr, strbuflen); console_write(strbufptr, strbuflen);
}
for(size_t i = 0; i < strbuflen; ++i){ for(size_t i = 0; i < strbuflen; ++i){