diff --git a/gertty/keymap.py b/gertty/keymap.py
index 1731805..c0fe4cb 100644
--- a/gertty/keymap.py
+++ b/gertty/keymap.py
@@ -65,6 +65,7 @@ EDIT_COMMIT_MESSAGE = 'edit commit message'
 SUBMIT_CHANGE = 'submit change'
 SORT_BY_NUMBER = 'sort by number'
 SORT_BY_UPDATED = 'sort by updated'
+SORT_BY_LAST_SEEN = 'sort by last seen'
 SORT_BY_REVERSE = 'reverse the sort'
 # Project list screen:
 TOGGLE_LIST_REVIEWED = 'toggle list reviewed'
@@ -128,9 +129,10 @@ DEFAULT_KEYMAP = {
     EDIT_TOPIC: 'ctrl t',
     EDIT_COMMIT_MESSAGE: 'ctrl d',
     SUBMIT_CHANGE: 'ctrl u',
-    SORT_BY_NUMBER: 'n',
-    SORT_BY_UPDATED: 'u',
-    SORT_BY_REVERSE: 'R',
+    SORT_BY_NUMBER: [['S', 'n']],
+    SORT_BY_UPDATED: [['S', 'u']],
+    SORT_BY_LAST_SEEN: [['S', 's']],
+    SORT_BY_REVERSE: [['S', 'r']],
 
     TOGGLE_LIST_REVIEWED: 'l',
     TOGGLE_LIST_SUBSCRIBED: 'L',
diff --git a/gertty/view/change_list.py b/gertty/view/change_list.py
index d1d8acb..9aa6ac9 100644
--- a/gertty/view/change_list.py
+++ b/gertty/view/change_list.py
@@ -434,13 +434,21 @@ class ChangeListView(urwid.WidgetWrap):
             key = super(ChangeListView, self).keypress(size, key)
         keys = self.app.input_buffer + [key]
         commands = self.app.config.keymap.getCommands(keys)
+        ret = self.handleCommands(commands)
+        if ret is True:
+            if keymap.FURTHER_INPUT not in commands:
+                self.app.clearInputBuffer()
+            return None
+        return key
+
+    def handleCommands(self, commands):
         if keymap.TOGGLE_LIST_REVIEWED in commands:
             self.unreviewed = not self.unreviewed
             self.refresh()
-            return None
+            return True
         if keymap.TOGGLE_REVIEWED in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             change_key = self.listbox.body[pos].change_key
             reviewed = self.toggleReviewed(change_key)
@@ -457,10 +465,10 @@ class ChangeListView(urwid.WidgetWrap):
                 # changes.
                 self.refresh()
                 self.advance()
-            return None
+            return True
         if keymap.TOGGLE_HIDDEN in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             change_key = self.listbox.body[pos].change_key
             hidden = self.toggleHidden(change_key)
@@ -475,10 +483,10 @@ class ChangeListView(urwid.WidgetWrap):
                 # where we're not just popping a row from the list of changes.
                 self.refresh()
                 self.advance()
-            return None
+            return True
         if keymap.TOGGLE_HELD in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             change_key = self.listbox.body[pos].change_key
             self.toggleHeld(change_key)
@@ -487,10 +495,10 @@ class ChangeListView(urwid.WidgetWrap):
                 change = session.getChange(change_key)
                 row.update(change, self.categories)
             self.advance()
-            return None
+            return True
         if keymap.TOGGLE_STARRED in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             change_key = self.listbox.body[pos].change_key
             self.toggleStarred(change_key)
@@ -499,10 +507,10 @@ class ChangeListView(urwid.WidgetWrap):
                 change = session.getChange(change_key)
                 row.update(change, self.categories)
             self.advance()
-            return None
+            return True
         if keymap.TOGGLE_MARK in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             change_key = self.listbox.body[pos].change_key
             row = self.change_rows[change_key]
@@ -511,10 +519,10 @@ class ChangeListView(urwid.WidgetWrap):
                 change = session.getChange(change_key)
                 row.update(change, self.categories)
             self.advance()
-            return None
+            return True
         if keymap.EDIT_TOPIC in commands:
             self.editTopic()
-            return None
+            return True
         if keymap.REFRESH in commands:
             if self.project_key:
                 self.app.sync.submitTask(
@@ -523,57 +531,57 @@ class ChangeListView(urwid.WidgetWrap):
                 self.app.sync.submitTask(
                     sync.SyncSubscribedProjectsTask(sync.HIGH_PRIORITY))
             self.app.status.update()
-            return None
+            return True
         if keymap.REVIEW in commands:
             rows = [row for row in self.change_rows.values() if row.mark]
             if not rows:
                 pos = self.listbox.focus_position
                 rows = [self.listbox.body[pos]]
             self.openReview(rows)
-            return None
+            return True
         if keymap.SORT_BY_NUMBER in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             self.sort_by = 'number'
             self.clearChangeList()
             self.refresh()
-            return None
+            return True
         if keymap.SORT_BY_UPDATED in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             self.sort_by = 'updated'
             self.clearChangeList()
             self.refresh()
-            return None
+            return True
         if keymap.SORT_BY_REVERSE in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             if self.reverse:
                 self.reverse = False
             else:
                 self.reverse = True
             self.clearChangeList()
             self.refresh()
-            return None
+            return True
         if keymap.LOCAL_CHECKOUT in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             row = self.listbox.body[pos]
             self.app.localCheckoutCommit(row.project_name, row.commit_sha)
-            return None
+            return True
         if keymap.LOCAL_CHERRY_PICK in commands:
             if not len(self.listbox.body):
-                return None
+                return True
             pos = self.listbox.focus_position
             row = self.listbox.body[pos]
             self.app.localCherryPickCommit(row.project_name, row.commit_sha)
-            return None
+            return True
         if keymap.REFINE_CHANGE_SEARCH in commands:
             default = self.getQueryString()
             self.app.searchDialog(default)
-            return None
-        return key
+            return True
+        return False
 
     def onSelect(self, button, change_key):
         try: