diff --git a/esoui/libraries/zo_templates/editboxtemplates_keyboard.xml b/esoui/libraries/zo_templates/editboxtemplates_keyboard.xml
new file mode 100644
index 0000000..8900886
--- /dev/null
+++ b/esoui/libraries/zo_templates/editboxtemplates_keyboard.xml
@@ -0,0 +1,99 @@
+<GuiXml>
+    <Controls>
+        <Backdrop name="ZO_EditBackdrop" virtual="true">
+            <Dimensions y="28"/>
+            <Edge file="EsoUI/Art/ChatWindow/textEntry_edge.dds" edgeFileWidth="64" edgeFileHeight="8" virtual="true"/>
+            <Center file="EsoUI/Art/ChatWindow/textEntry_center.dds" />
+            <Insets left="8" top="8" right="-8" bottom="-8" />
+        </Backdrop>
+
+        <Backdrop name="ZO_SingleLineEditBackdrop_Keyboard" inherits="ZO_EditBackdrop" virtual="true">
+            <OnInitialized>
+                ZO_SingleLineEditContainerSize_Keyboard_OnInitialized(self)
+            </OnInitialized>
+        </Backdrop>
+
+        <Backdrop name="ZO_SingleLineEditBackdropDark_Keyboard" inherits="ZO_DefaultBackdrop" virtual="true">
+            <OnInitialized>
+                ZO_SingleLineEditContainerDarkSize_Keyboard_OnInitialized(self)
+            </OnInitialized>
+        </Backdrop>
+
+        <Backdrop name="ZO_MultiLineEditBackdrop_Keyboard" inherits="ZO_EditBackdrop" virtual="true"/>
+
+        <EditBox name="ZO_DefaultEdit" font="ZoFontEdit" mouseEnabled="true" virtual="true">
+            <Dimensions y="24" />
+            <OnMouseDown>
+                self:TakeFocus()
+            </OnMouseDown>
+            <OnEnter>
+                self:LoseFocus()
+            </OnEnter>
+            <OnEscape>
+                self:LoseFocus()
+            </OnEscape>
+
+            <OnFocusGained>
+                if WINDOW_MANAGER:IsHandlingHardwareEvent() then
+                    PlaySound(SOUNDS.EDIT_CLICK)
+                end
+            </OnFocusGained>
+        </EditBox>
+
+        <EditBox name="ZO_EditDefaultText" virtual="true">
+            <OnTextChanged>
+                ZO_EditDefaultText_OnTextChanged(self)
+            </OnTextChanged>
+            <OnIMEBeginComposition>
+                ZO_EditDefaultText_OnIMECompositionChanged(self)
+            </OnIMEBeginComposition>
+            <OnIMEEndComposition>
+                ZO_EditDefaultText_OnIMECompositionChanged(self)
+            </OnIMEEndComposition>
+            <Controls>
+                <Label name="$(parent)Text" color="INTERFACE_COLOR_TYPE_TEXT_COLORS:INTERFACE_TEXT_COLOR_DEFAULT_TEXT" font="ZoFontEdit">
+                    <Anchor point="TOPLEFT" offsetX="3"/>
+                    <Anchor point="BOTTOMRIGHT"/>
+                </Label>
+            </Controls>
+        </EditBox>
+
+        <EditBox name="ZO_DefaultEditForBackdrop" inherits="ZO_DefaultEdit" virtual="true">
+            <Anchor point="TOPLEFT" offsetX="ZO_SINGLE_LINE_EDIT_CONTAINER_PADDING_LEFT" offsetY="ZO_SINGLE_LINE_EDIT_CONTAINER_PADDING_TOP"/>
+            <Anchor point="BOTTOMRIGHT" offsetX="-ZO_SINGLE_LINE_EDIT_CONTAINER_PADDING_RIGHT" offsetY="-ZO_SINGLE_LINE_EDIT_CONTAINER_PADDING_BOTTOM"/>
+        </EditBox>
+
+        <EditBox name="ZO_DefaultEditForDarkBackdrop" inherits="ZO_DefaultEdit" font="ZoFontEdit20NoShadow" virtual="true">
+            <Anchor point="TOPLEFT" offsetX="ZO_SINGLE_LINE_EDIT_CONTAINER_DARK_PADDING_LEFT" offsetY="ZO_SINGLE_LINE_EDIT_CONTAINER_DARK_PADDING_TOP"/>
+            <Anchor point="BOTTOMRIGHT" offsetX="-ZO_SINGLE_LINE_EDIT_CONTAINER_DARK_PADDING_LEFT" offsetY="-ZO_SINGLE_LINE_EDIT_CONTAINER_DARK_PADDING_BOTTOM"/>
+        </EditBox>
+
+        <EditBox name="ZO_DefaultEditMultiLine" font="ZoFontEdit" mouseEnabled="true" multiLine="true" virtual="true">
+            <OnMouseDown>
+                self:TakeFocus()
+            </OnMouseDown>
+            <OnEscape>
+                self:LoseFocus()
+            </OnEscape>
+            <OnMouseWheel>
+                local currentLine = self:GetTopLineIndex()
+                if shift then
+                    delta = delta * 10
+                end
+                local nextLine = zo_clamp(currentLine - delta, 1, self:GetScrollExtents() + 1)
+                self:SetTopLineIndex(nextLine)
+            </OnMouseWheel>
+
+            <OnFocusGained>
+                if WINDOW_MANAGER:IsHandlingHardwareEvent() then
+                    PlaySound(SOUNDS.EDIT_CLICK)
+                end
+            </OnFocusGained>
+        </EditBox>
+
+        <EditBox name="ZO_DefaultEditMultiLineForBackdrop" inherits="ZO_DefaultEditMultiLine" virtual="true">
+            <Anchor point="TOPLEFT" offsetX="ZO_MULTI_LINE_EDIT_CONTAINER_PADDING_LEFT" offsetY="ZO_MULTI_LINE_EDIT_CONTAINER_PADDING_TOP"/>
+            <Anchor point="BOTTOMRIGHT" offsetX="-ZO_MULTI_LINE_EDIT_CONTAINER_PADDING_RIGHT" offsetY="-ZO_MULTI_LINE_EDIT_CONTAINER_PADDING_BOTTOM"/>
+        </EditBox>
+    </Controls>
+</GuiXml>
\ No newline at end of file