diff options
author | Nathan Scott <nathans@redhat.com> | 2020-08-20 14:57:30 +1000 |
---|---|---|
committer | Nathan Scott <nathans@redhat.com> | 2020-08-20 14:57:30 +1000 |
commit | 5c5a599a2a4394237e9643f23cd82f9b58492c6d (patch) | |
tree | 39790e897d57ca9b9ca72d9baa92e2aa172955e1 | |
parent | e25ac8557d93f3255297b4cd019bba050c3ee217 (diff) | |
parent | 9ed47a213bee9fe272e1cf16f4d45730e6b37331 (diff) |
Merge branch 'hishamhm-pull-959'
-rw-r--r-- | ScreenManager.c | 16 | ||||
-rw-r--r-- | Settings.c | 4 | ||||
-rw-r--r-- | Settings.h | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/ScreenManager.c b/ScreenManager.c index db117b65..8e5f697f 100644 --- a/ScreenManager.c +++ b/ScreenManager.c @@ -190,6 +190,22 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { set_escdelay(25); ch = getch(); + if (this->settings->vimMode) { + switch (ch) { + case 'h': ch = KEY_LEFT; break; + case 'j': ch = KEY_DOWN; break; + case 'k': ch = KEY_UP; break; + case 'l': ch = KEY_RIGHT; break; + case KEY_LEFT: ch = 'h'; break; + case KEY_DOWN: ch = 'j'; break; + case KEY_UP: ch = 'k'; break; + case KEY_RIGHT: ch = 'l'; break; + case 'K': ch = 'k'; break; + case 'J': ch = 'K'; break; + case 'L': ch = 'l'; break; + } + } + HandlerResult result = IGNORED; if (ch == KEY_MOUSE && this->settings->enableMouse) { ch = ERR; @@ -61,6 +61,7 @@ typedef struct Settings_ { bool accountGuestInCPUMeter; bool headerMargin; bool enableMouse; + bool vimMode; bool changed; } Settings; @@ -253,6 +254,8 @@ static bool Settings_read(Settings* this, const char* fileName) { } else if (String_eq(option[0], "right_meter_modes")) { Settings_readMeterModes(this, option[1], 1); didReadMeters = true; + } else if (String_eq(option[0], "vim_mode")) { + this->vimMode = atoi(option[1]); } String_freeArray(option); } @@ -332,6 +335,7 @@ bool Settings_write(Settings* this) { fprintf(fd, "left_meter_modes="); writeMeterModes(this, fd, 0); fprintf(fd, "right_meters="); writeMeters(this, fd, 1); fprintf(fd, "right_meter_modes="); writeMeterModes(this, fd, 1); + fprintf(fd, "vim_mode=%d\n", (int) this->vimMode); fclose(fd); return true; } @@ -52,6 +52,7 @@ typedef struct Settings_ { bool accountGuestInCPUMeter; bool headerMargin; bool enableMouse; + bool vimMode; bool changed; } Settings; |