Current section
Files
Jump to
Current section
Files
lib/keebs.ex
defmodule Keebs do
defdelegate get_mouse_coords(), to: Keebs.RawInput
@spec get_keyboard() :: list(atom)
def get_keyboard() do
Enum.map(Keebs.RawInput.get_keyboard(), fn key_string ->
key_string
|> String.split_at(1)
|> then(fn {first, rest} -> "#{String.downcase(first)}#{rest}" end)
|> String.to_atom()
end)
end
@type mouse_button() :: :button0 | :button1 | :button2 | :button3 | :button4 | :button5
@spec get_mouse_buttons() :: %{mouse_button() => boolean()}
def get_mouse_buttons() do
Keebs.RawInput.get_mouse_buttons()
|> Enum.with_index()
|> Enum.map(fn {val, index} ->
button =
case index do
0 -> :button0
1 -> :button1
2 -> :button2
3 -> :button3
4 -> :button4
5 -> :button5
end
{button, val}
end)
|> Enum.reduce(%{}, fn {button, val}, acc -> Map.put(acc, button, val) end)
end
end