-
Notifications
You must be signed in to change notification settings - Fork 0
Key mapping example
Terje Tjervaag edited this page Apr 24, 2024
·
11 revisions
Here's an example of mapping a few useful functions using which-key:

require("which-key").register {
["<leader>ib"] = { require("simctl.api").boot, "Boot Simulator" },
["<leader>is"] = { require("simctl.api").shutdown, "Shut down Simulator" },
["<leader>il"] = { require("simctl.api").launch, "Launch app" },
["<leader>it"] = { require("simctl.api").terminate, "Terminate app" },
["<leader>io"] = {
function()
vim.ui.input({ prompt = "URL: " }, function(url)
if not url then
return
end
require("simctl.api").openurl { url = url }
end)
end,
"Open URL",
},
["<leader>iu"] = { require("simctl.api").uninstall, "Uninstall app" },
["<leader>ia"] = { require("simctl.api").ui.toggleAppearance, "Toggle appearance" },
["<leader>ic"] = { require("simctl.api").ui.setContentSize, "Set content size" },
}
You might want to default to the booted device to automatically affect the Simulator you are working in rather than having to pick a Simulator every time. Note that if you have several Simulators booted this will pick one of them, seemingly at random. 🤷♂️
wk.register {
["<leader>ib"] = { require("simctl.api").boot, "Boot Simulator" },
["<leader>is"] = { require("simctl.api").shutdown, "Shut down Simulator" },
["<leader>il"] = {
function()
require("simctl.api").launch({ deviceId = "booted" })
end,
"Launch app",
},
["<leader>it"] = {
function()
require("simctl.api").terminate({ deviceId = "booted" })
end,
"Terminate app",
},
["<leader>io"] = {
function()
vim.ui.input({ prompt = "URL: " }, function(url)
if not url then
return
end
simctlArgs.url = url
require("simctl.api").openurl({ deviceId = "booted" })
end)
end,
"Open URL",
},
["<leader>iu"] = {
function()
require("simctl.api").uninstall({ deviceId = "booted" })
end,
"Uninstall app",
},
["<leader>ia"] = {
function()
require("simctl.api").ui.toggleAppearance({ deviceId = "booted" })
end,
"Toggle appearance",
},
["<leader>ic"] = { " Content size" },
["<leader>icc"] = {
function()
require("simctl.api").ui.setContentSize({ deviceId = "booted" })
end,
"Set content size",
},
["<leader>ic+"] = {
function()
require("simctl.api").ui.increaseContentSize({ deviceId = "booted" })
end,
"Increase content size",
},
["<leader>ic-"] = {
function()
require("simctl.api").ui.decreaseContentSize({ deviceId = "booted" })
end,
"Decrease content size",
},
["<leader>icr"] = {
function()
local simctl = require "simctl.api"
simctl.ui.setContentSize({
deviceId = "booted",
size = simctl.ui.ContentSize.LARGE,
})
end,
"Default content size",
},
["<leader>icm"] = {
function()
local simctl = require "simctl.api"
simctl.ui.setContentSize({
deviceId = "booted",
size = simctl.ui.ContentSize.EXTRA_EXTRA_EXTRA_LARGE,
})
end,
"Max content size",
},
["<leader>ica"] = {
function()
local simctl = require "simctl.api"
simctl.ui.setContentSize({
deviceId = "booted",
size = simctl.ui.ContentSize.ACCESSIBILITY_EXTRA_EXTRA_EXTRA_LARGE,
})
end,
"Max accessibility content size",
},
["<leader>im"] = { " Biometry" },
["<leader>ime"] = {
function()
local simctl = require "simctl.api"
simctl.biometry.toggleEnrollment({ deviceId = "booted" }, function(success, isEnrolled)
if (success) then
vim.notify("Biometry is now " .. (isEnrolled and "enrolled" or "disenrolled"))
end
end)
end,
"Toggle Biometry Enrollment",
},
["<leader>ima"] = {
function()
local simctl = require "simctl.api"
simctl.biometry.authenticate({ deviceId = "booted", match = true })
end,
"Authenticate (matching)",
},
["<leader>imb"] = {
function()
local simctl = require "simctl.api"
simctl.biometry.authenticate({ deviceId = "booted", match = false })
end,
"Authenticate (non-matching)",
},
}