diff --git a/game/engines/default/engine/ui/List.lua b/game/engines/default/engine/ui/List.lua
index fe87a53f3504f27d7261319f1eafd38e1bf1a4ad..8bf254d4f4e547bb87f5ae1ab969e6d59e708f81 100644
--- a/game/engines/default/engine/ui/List.lua
+++ b/game/engines/default/engine/ui/List.lua
@@ -100,6 +100,8 @@ function _M:generate()
 		end,
 	}
 	self.key:addCommands{
+		[{"_UP","ctrl"}] = function() self.key:triggerVirtual("MOVE_UP") end,
+		[{"_DOWN","ctrl"}] = function() self.key:triggerVirtual("MOVE_DOWN") end,
 		_HOME = function()
 			if self.sel and self.list[self.sel] then self.list[self.sel].focus_decay = self.focus_decay_max end
 			self.sel = 1
diff --git a/game/engines/default/engine/ui/ListColumns.lua b/game/engines/default/engine/ui/ListColumns.lua
index 0990240c388bc1bf62394dfeab98867ba9ca5452..e78688431ef60796b28076c7a1c7154c876c7ed4 100644
--- a/game/engines/default/engine/ui/ListColumns.lua
+++ b/game/engines/default/engine/ui/ListColumns.lua
@@ -196,6 +196,8 @@ function _M:generate()
 		end,
 	}
 	self.key:addCommands{
+		[{"_UP","ctrl"}] = function() self.key:triggerVirtual("MOVE_UP") end,
+		[{"_DOWN","ctrl"}] = function() self.key:triggerVirtual("MOVE_DOWN") end,
 		_HOME = function()
 			if self.sel and self.list[self.sel] then self.list[self.sel].focus_decay = self.focus_decay_max end
 			self.sel = 1
diff --git a/game/engines/default/engine/ui/TreeList.lua b/game/engines/default/engine/ui/TreeList.lua
index 20cfc9c9014b677b58acee9ad8cf94c6135ae444..1eba2cf553e6862faecd60e3ec1d6af920fb7a33 100644
--- a/game/engines/default/engine/ui/TreeList.lua
+++ b/game/engines/default/engine/ui/TreeList.lua
@@ -218,6 +218,8 @@ function _M:generate()
 		}
 	end
 	self.key:addCommands{
+		[{"_UP","ctrl"}] = function() self.key:triggerVirtual("MOVE_UP") end,
+		[{"_DOWN","ctrl"}] = function() self.key:triggerVirtual("MOVE_DOWN") end,
 		_HOME = function()
 			if self.sel and self.list[self.sel] then self.list[self.sel].focus_decay = self.focus_decay_max end
 			self.sel = 1