Well, ContextActionService
can be used to create cool custom actions by using multiple keybinds 
Let’s say I have this:
local CAS = game:GetService("ContextActionService")
local function handleAction()
--We will do our interactive stuff here
end
ContextActionService:BindAction("Interact", handleAction, true, Enum.KeyCode.T, Enum.KeyCode.ButtonR1)
Our local function
will be what we’d wanna interact with whenever it’s triggered by a Keybind in our BindAction
parameter
Now, I’ll say the parameters for what BindAction
does:
-
The first parameter is a custom function name to whatever we want, heck we can even name it to “Pie” and it’d still work
-
The second parameter is connecting the function that will detect its change when it’s called (Or handleAction
-
The third parameter is a Bool check if we want to make it a Mobile Button
, we’d wanna set that to true
-
The last parameter are just a specific amount of keybinds we want to use to trigger the action when it’s called (Or the keys on your keyboard when pressing a special skill Z, X, C)
Next what we can do, is set our properties/preferences for our Mobile Button & what we wanna do with it
We’ll first start with the Title Name, we can just simply do:
ContextActionService:SetTitle("Interact", "Talk")
The first parameter Interact
should be our custom action that we want to set our title to (That’ll be going for the rest of our properties changing), and our Title Name will be “Talk”
Next, we’ll change the Image ID:
ContextActionService:SetImage("Interact", "rbxassetid://0123456789")
The ID should be taken as an asset in the form of rbxassetid://00000000
Last, we’ll set the position:
ContextActionService:SetPosition("Interact", UDim2.new(1, -70, 0, 10))
UDim2
is a UI coordinate that’s mainly used for positioning/sizing UI Objects such as: Frames, TextButtons, ImageLabels, etc
And that should be it hopefully