enabled raw mode with no echo, character input rather than line input, ignore to stop build files being pushed
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
kilo
|
||||||
9
Makefile
9
Makefile
@@ -1,2 +1,9 @@
|
|||||||
kilo: kilo.c
|
kilo: kilo.c
|
||||||
$(CC) kilo.c -o kilo -Wall -Wextra -pedantic -std=c99
|
mkdir -p ./out
|
||||||
|
$(CC) kilo.c -o ./out/kilo -Wall -Wextra -pedantic -std=c99
|
||||||
|
|
||||||
|
run:
|
||||||
|
./out/kilo
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ./out
|
||||||
|
|||||||
24
kilo.c
24
kilo.c
@@ -1,8 +1,28 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <termios.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
struct termios orig_termios;
|
||||||
|
|
||||||
|
void disableRawMode() {
|
||||||
|
tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios);
|
||||||
|
}
|
||||||
|
|
||||||
|
void enableRawMode() {
|
||||||
|
tcgetattr(STDIN_FILENO, &orig_termios);
|
||||||
|
atexit(disableRawMode);
|
||||||
|
|
||||||
|
struct termios raw = orig_termios;
|
||||||
|
raw.c_lflag &= ~(ECHO);
|
||||||
|
raw.c_lflag &= ~(ICANON);
|
||||||
|
|
||||||
|
tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw);
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
enableRawMode();
|
||||||
|
|
||||||
char c;
|
char c;
|
||||||
while (read(STDIN_FILENO, &c, 1) == 1)
|
while (read(STDIN_FILENO, &c, 1) == 1 && c != 'q');
|
||||||
;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user