Compare commits
75 Commits
6eea3bda06
...
3a13017ede
Author | SHA1 | Date | |
---|---|---|---|
3a13017ede | |||
4a85f03d02 | |||
fb40f5c9b2 | |||
47db5da419 | |||
64e8f30f02 | |||
b5b90f13f7 | |||
562cbb3cc3 | |||
903e363254 | |||
248aedee72 | |||
46c67c1e7f | |||
c20e4bad05 | |||
241e11de0d | |||
99f1263fba | |||
1550c1ffc5 | |||
bab456591e | |||
6fec9aa158 | |||
dc1d8a9b38 | |||
c8cfee514e | |||
c161a86893 | |||
3af8301dec | |||
496715c3a6 | |||
3c93266dd8 | |||
a022dd2d07 | |||
3072641362 | |||
93a5826b5b | |||
6116f57876 | |||
344f299bd7 | |||
bc22430ec5 | |||
b39a6f5c00 | |||
e12a02d63f | |||
8fa4bb854b | |||
ff9be2f4e7 | |||
4d7db20d6f | |||
306966183e | |||
01b74c0a8c | |||
af18824f29 | |||
a23f0b93d2 | |||
77d33ca737 | |||
4dae2c8571 | |||
9a9e9a7efe | |||
d3a4054e5b | |||
a3979caf2e | |||
8c4fbdb30d | |||
70fed7e27f | |||
f26ba66801 | |||
15b5b5cc4d | |||
1281989a8a | |||
95c5eeeb0d | |||
f0265a347d | |||
328aa16656 | |||
3cdc8e818a | |||
d49f59500b | |||
bb2fe8a9d7 | |||
be54a2e663 | |||
857d0011b3 | |||
7bb7f63587 | |||
99148870fc | |||
a5089ab9ee | |||
ff03cc189c | |||
2dc9236aaf | |||
a08dbbc33f | |||
670d8d9445 | |||
9c35a0acde | |||
a1089da945 | |||
da879bc2b4 | |||
54af27ceaa | |||
1fbafe3f3a | |||
9007c40dd7 | |||
d29de852cf | |||
b2e12127f3 | |||
09fab9d96d | |||
c7f4cb4868 | |||
e029679fba | |||
15f4f7c72f | |||
0002c2314c |
@ -35,7 +35,6 @@ luna_app(time.cpp time)
|
|||||||
luna_app(ln.cpp ln)
|
luna_app(ln.cpp ln)
|
||||||
luna_app(mktemp.cpp mktemp)
|
luna_app(mktemp.cpp mktemp)
|
||||||
luna_app(sysfuzz.cpp sysfuzz)
|
luna_app(sysfuzz.cpp sysfuzz)
|
||||||
luna_app(pivot_root.cpp pivot_root)
|
|
||||||
luna_app(cp.cpp cp)
|
luna_app(cp.cpp cp)
|
||||||
luna_app(kill.cpp kill)
|
luna_app(kill.cpp kill)
|
||||||
luna_app(gol.cpp gol)
|
luna_app(gol.cpp gol)
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
#include <os/ArgumentParser.h>
|
|
||||||
#include <sys/syscall.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
Result<int> luna_main(int argc, char** argv)
|
|
||||||
{
|
|
||||||
StringView new_root;
|
|
||||||
StringView put_old;
|
|
||||||
|
|
||||||
os::ArgumentParser parser;
|
|
||||||
parser.add_description("Move the current root directory to another directory and replace it with another mount.");
|
|
||||||
parser.add_system_program_info("pivot_root"_sv);
|
|
||||||
parser.add_positional_argument(new_root, "new_root", true);
|
|
||||||
parser.add_positional_argument(put_old, "put_old", true);
|
|
||||||
parser.parse(argc, argv);
|
|
||||||
|
|
||||||
long rc = syscall(SYS_pivot_root, new_root.chars(), put_old.chars());
|
|
||||||
return Result<int>::from_syscall(rc);
|
|
||||||
}
|
|
@ -19,21 +19,20 @@ constexpr u8 RIGHT_SHIFT = 0x36;
|
|||||||
constexpr u8 CAPS_LOCK = 0x3a;
|
constexpr u8 CAPS_LOCK = 0x3a;
|
||||||
|
|
||||||
constexpr u8 LEFT_CONTROL = 0x1D;
|
constexpr u8 LEFT_CONTROL = 0x1D;
|
||||||
constexpr u8 TAB = 0x0F;
|
|
||||||
constexpr u8 LEFT_ALT = 0x38;
|
constexpr u8 LEFT_ALT = 0x38;
|
||||||
constexpr u8 F11 = 0x57;
|
constexpr u8 F11 = 0x57;
|
||||||
constexpr u8 F12 = 0x58;
|
constexpr u8 F12 = 0x58;
|
||||||
|
|
||||||
static bool should_ignore_key(u8 scancode)
|
static bool should_ignore_key(u8 scancode)
|
||||||
{
|
{
|
||||||
return (scancode > 0x3A && scancode < 0x47) || scancode == TAB || scancode == F11 || scancode == F12;
|
return (scancode > 0x3A && scancode < 0x47) || scancode == F11 || scancode == F12;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr char key_table[] = {
|
constexpr char key_table[] = {
|
||||||
'\0',
|
'\0',
|
||||||
'\1', // escape
|
'\1', // escape
|
||||||
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b',
|
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b',
|
||||||
'\0', // tab
|
'\t', // tab
|
||||||
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\n',
|
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\n',
|
||||||
'\0', // left ctrl
|
'\0', // left ctrl
|
||||||
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`',
|
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`',
|
||||||
@ -75,7 +74,7 @@ constexpr char shifted_key_table[] = {
|
|||||||
'\0',
|
'\0',
|
||||||
'\1', // escape
|
'\1', // escape
|
||||||
'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '\b',
|
'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '\b',
|
||||||
'\0', // tab
|
'\t', // tab
|
||||||
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', '\n',
|
'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', '\n',
|
||||||
'\0', // left ctrl
|
'\0', // left ctrl
|
||||||
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~',
|
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~',
|
||||||
|
@ -106,6 +106,7 @@ void ConsoleDevice::process_key_event(u8 scancode)
|
|||||||
{
|
{
|
||||||
TextConsole::putwchar(L'\b');
|
TextConsole::putwchar(L'\b');
|
||||||
if (_iscntrl(maybe_char.value())) TextConsole::putwchar(L'\b');
|
if (_iscntrl(maybe_char.value())) TextConsole::putwchar(L'\b');
|
||||||
|
if (maybe_char.value() == '\t') TextConsole::wprint(L"\b\b");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -179,7 +180,7 @@ void ConsoleDevice::process_key_event(u8 scancode)
|
|||||||
if (m_settings.c_lflag & ECHOCTL)
|
if (m_settings.c_lflag & ECHOCTL)
|
||||||
{
|
{
|
||||||
bool should_echo = true;
|
bool should_echo = true;
|
||||||
if (key == '\n' || key == '\0' || key == m_settings.c_cc[VEOF]) should_echo = false;
|
if (key == '\n' || key == '\t' || key == '\0' || key == m_settings.c_cc[VEOF]) should_echo = false;
|
||||||
|
|
||||||
if (should_echo)
|
if (should_echo)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user