init: turn keychords into a standalone class

Test: init_tests
Bug: 64114943
Change-Id: Ie760e4a3a661260ed2aabb8a92fe65fc93521cb5
diff --git a/init/init.cpp b/init/init.cpp
index 43242b2..5652c5e 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -749,12 +749,13 @@
     am.QueueBuiltinAction(MixHwrngIntoLinuxRngAction, "MixHwrngIntoLinuxRng");
     am.QueueBuiltinAction(SetMmapRndBitsAction, "SetMmapRndBits");
     am.QueueBuiltinAction(SetKptrRestrictAction, "SetKptrRestrict");
+    Keychords keychords;
     am.QueueBuiltinAction(
-        [&epoll](const BuiltinArguments& args) -> Result<Success> {
+        [&epoll, &keychords](const BuiltinArguments& args) -> Result<Success> {
             for (const auto& svc : ServiceList::GetInstance()) {
-                svc->set_keychord_id(GetKeychordId(svc->keycodes()));
+                svc->set_keychord_id(keychords.GetId(svc->keycodes()));
             }
-            KeychordInit(&epoll, HandleKeychord);
+            keychords.Start(&epoll, HandleKeychord);
             return Success();
         },
         "KeychordInit");