{"id":185,"date":"2026-04-09T16:12:31","date_gmt":"2026-04-09T16:12:31","guid":{"rendered":"https:\/\/keyboardflow.com\/?page_id=185"},"modified":"2026-04-09T16:16:04","modified_gmt":"2026-04-09T16:16:04","slug":"assamese","status":"publish","type":"page","link":"https:\/\/keyboardflow.com\/index.php\/assamese\/","title":{"rendered":"Assamese"},"content":{"rendered":"\n\n<style>\n:root {\n    --kb-bg: #064e3b; \/* Dark Green *\/\n    --key-main: #ffffff;\n    --key-text: #064e3b;\n    --accent: #059669; \/* Tea Green *\/\n    --accent-soft: #ecfdf5;\n    --key-shadow: #cbd5e1;\n}\n\n.app-container {\n    width: 98%;\n    max-width: 1400px;\n    background: white;\n    border-radius: 12px;\n    padding: 15px;\n    margin: 20px auto;\n    box-shadow: 0 4px 10px rgba(0,0,0,0.1);\n}\n\n.keyboard {\n    background: var(--kb-bg);\n    padding: 15px;\n    border-radius: 12px;\n    display: flex;\n    flex-direction: column;\n    gap: 6px;\n    user-select: none;\n}\n\n.row {\n    display: flex;\n    justify-content: center;\n    gap: 5px;\n}\n\n.key {\n    flex: 1;\n    min-width: 40px;\n    max-width: 70px;\n    height: 55px;\n    background: var(--key-main);\n    border-radius: 6px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    position: relative;\n    cursor: pointer;\n    border-bottom: 3px solid var(--key-shadow);\n}\n\n.key.active-press {\n    transform: translateY(2px);\n    border-bottom-width: 1px;\n    background: var(--accent-soft);\n}\n\n.key.modifier {\n    background: #e2e8f0;\n    font-size: 11px;\n    max-width: 100px;\n}\n\n.key.space {\n    max-width: 500px;\n    flex: 4;\n}\n\n.eng {\n    position: absolute;\n    top: 3px;\n    right: 5px;\n    font-size: 10px;\n    color: #94a3b8;\n}\n\n.normal {\n    font-size: 20px;\n    font-weight: bold;\n}\n\n.shift-val {\n    position: absolute;\n    bottom: 3px;\n    left: 5px;\n    font-size: 10px;\n    color: var(--accent);\n}\n\ntextarea#asInput {\n    width: 100%;\n    margin-top: 20px;\n    height: 250px;\n    font-size: 28px;\n    padding: 20px;\n    border: 2px solid #e2e8f0;\n    border-radius: 8px;\n}\n<\/style>\n\n<div class=\"app-container\">\n    <div id=\"askb\" class=\"keyboard\"><\/div>\n    <textarea id=\"asInput\" placeholder=\"\u0987\u09df\u09be\u09a4 \u099f\u09be\u0987\u09aa \u0995\u09f0\u0995...\"><\/textarea>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n\n\/\/ Assamese Inscript Mapping\nconst imap = {\n    '1':['\u09e7','!'],'2':['\u09e8','@'],'3':['\u09e9','#'],'4':['\u09ea','$'],\n    '5':['\u09eb','%'],'6':['\u09ec','^'],'7':['\u09ed','&'],'8':['\u09ee','*'],\n    '9':['\u09ef','('],'0':['\u09e6',')'],'-':['-','_'],'=':['=','+'],\n\n    'q':['\u09cc','\u0994'],'w':['\u09c8','\u0990'],'e':['\u09be','\u0986'],'r':['\u09c0','\u0988'],\n    't':['\u09c2','\u098a'],'y':['\u09ac','\u09ad'],'u':['\u09b9','\u0999'],'i':['\u0995','\u0996'],\n    'o':['\u09a4','\u09a5'],'p':['\u099c','\u099d'],'[':['\u09a1','\u09a2'],']':['\u099e','\u099e'],'\\\\':['',''],\n\n    'a':['\u09cb','\u0993'],'s':['\u09c7','\u098f'],'d':['\u09cd','\u0985'],'f':['\u09bf','\u0987'],\n    'g':['\u09c1','\u0989'],'h':['\u09aa','\u09ab'],'j':['\u09f0','\u09b0'],'k':['\u0995','\u0997'],\n    'l':['\u09a4','\u09a6'],';':['\u099a','\u099b'],\"'\":['\u099f','\u09a0'],\n\n    'z':['\u09c7','\u0990'],'x':['\u0982','\u0983'],'c':['\u09ae','\u09a3'],'v':['\u09a8','\u09a8'],\n    'b':['\u09f1','\u09ac'],'n':['\u09b2','\u09b2'],'m':['\u09b8','\u09b6'],\n\n    ',':['\u09b7',','],'.':['\u0964','.'],'\/':['\u09df','?']\n};\n\nconst rows = [\n    ['1','2','3','4','5','6','7','8','9','0','-','=','backspace'],\n    ['tab','q','w','e','r','t','y','u','i','o','p','[',']'],\n    ['caps','a','s','d','f','g','h','j','k','l',';',\"'\",'enter'],\n    ['shift','z','x','c','v','b','n','m',',','.','\/','shift'],\n    ['space']\n];\n\nconst kb = document.getElementById('askb');\nconst input = document.getElementById('asInput');\n\nrows.forEach(row => {\n    const rowDiv = document.createElement('div');\n    rowDiv.className = 'row';\n\n    row.forEach(key => {\n        const keyDiv = document.createElement('div');\n        keyDiv.className = 'key';\n        keyDiv.dataset.key = key;\n\n        if (['backspace','tab','caps','enter','shift'].includes(key))\n            keyDiv.classList.add('modifier');\n        if (key === 'space') keyDiv.classList.add('space');\n\n        if (imap[key]) {\n            keyDiv.innerHTML = `\n                <span class=\"eng\">${key.toUpperCase()}<\/span>\n                <span class=\"normal\">${imap[key][0]}<\/span>\n                <span class=\"shift-val\">${imap[key][1]}<\/span>\n            `;\n        } else {\n            keyDiv.innerHTML = `<span>${key.toUpperCase()}<\/span>`;\n        }\n\n        keyDiv.addEventListener('mousedown', (e) => {\n            e.preventDefault();\n            handleKey(key, e.shiftKey);\n        });\n\n        rowDiv.appendChild(keyDiv);\n    });\n    kb.appendChild(rowDiv);\n});\n\nfunction handleKey(key, shift) {\n    const start = input.selectionStart;\n    const end = input.selectionEnd;\n    let char = '';\n\n    if (imap[key]) {\n        char = shift ? imap[key][1] : imap[key][0];\n    } else if (key === 'space') char = ' ';\n    else if (key === 'enter') char = '\\n';\n    else if (key === 'backspace') {\n        input.setRangeText('', start === end ? start - 1 : start, end, 'end');\n        input.focus();\n        return;\n    }\n\n    if (char) {\n        input.setRangeText(char, start, end, 'end');\n    }\n\n    input.focus();\n    input.scrollTop = input.scrollHeight;\n}\n\nwindow.addEventListener('keydown', (e) => {\n    const key = e.key.toLowerCase();\n    if (imap[key] || key === ' ' || key === 'enter' || key === 'backspace') {\n        if (document.activeElement === input) {\n            e.preventDefault();\n            handleKey(key === ' ' ? 'space' : key, e.shiftKey);\n        }\n    }\n    const el = document.querySelector(`.key[data-key=\"${key}\"]`);\n    if (el) el.classList.add('active-press');\n});\n\nwindow.addEventListener('keyup', (e) => {\n    const key = e.key.toLowerCase();\n    const el = document.querySelector(`.key[data-key=\"${key}\"]`);\n    if (el) el.classList.remove('active-press');\n});\n\n});\n<\/script>\n\n\n\n\n\n<div class=\"guide-container\" style=\"margin-top: 50px; border-top: 2px solid #e2e8f0; padding-top: 30px; font-family: 'Segoe UI', sans-serif;\">\n    \n    <section style=\"text-align: center; margin-bottom: 40px;\">\n        <h2 style=\"color: #064e3b; font-size: 28px; margin-bottom: 10px;\">How to Use the Assamese Virtual Keyboard<\/h2>\n        <p style=\"color: #64748b; max-width: 800px; margin: 0 auto;\">A professional-grade interface designed for seamless Assamese (Asamiya) digital composition without the need for specialized hardware or system-level font installations.<\/p>\n    <\/section>\n\n    <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-bottom: 40px;\">\n        <div style=\"background: #ffffff; padding: 25px; border-radius: 12px; border: 1px solid #e2e8f0;\">\n            <h3 style=\"color: #059669; display: flex; align-items: center; gap: 10px;\">\n                <span style=\"font-size: 24px;\">\u2328\ufe0f<\/span> How It Works\n            <\/h3>\n            <p style=\"color: #475569; line-height: 1.6;\">The keyboard layout is designed to provide a comprehensive visual map for every keystroke:<\/p>\n            <ul style=\"list-style: none; padding: 0; color: #475569;\">\n                <li style=\"margin-bottom: 12px; display: flex; align-items: start; gap: 10px;\">\n                    <strong style=\"min-width: 100px; color: #1e293b;\">Top-Right:<\/strong> <span>The corresponding English key on your physical keyboard.<\/span>\n                <\/li>\n                <li style=\"margin-bottom: 12px; display: flex; align-items: start; gap: 10px;\">\n                    <strong style=\"min-width: 100px; color: #1e293b;\">Center:<\/strong> <span>Primary Assamese character (Consonants or base vowels).<\/span>\n                <\/li>\n                <li style=\"margin-bottom: 12px; display: flex; align-items: start; gap: 10px;\">\n                    <strong style=\"min-width: 100px; color: #1e293b;\">Bottom-Left:<\/strong> <span>Shift-activated character (Vowel signs or aspirated letters).<\/span>\n                <\/li>\n            <\/ul>\n        <\/div>\n\n        <div style=\"background: #ffffff; padding: 25px; border-radius: 12px; border: 1px solid #e2e8f0;\">\n            <h3 style=\"color: #059669; display: flex; align-items: center; gap: 10px;\">\n                <span style=\"font-size: 24px;\">\ud83d\udca1<\/span> Assamese Typing Tips\n            <\/h3>\n            <div style=\"color: #475569; line-height: 1.6;\">\n                <p><strong>Vowel Signs (Kar):<\/strong> Type the base consonant first, followed by the vowel sign (e.g., \u0995 + \u09be = \u0995\u09be). Note: Assamese utilizes specific signs like the &#8216;O-kar&#8217;.<\/p>\n                <p><strong>Conjuncts (Zuktaxar):<\/strong> Use the <code style=\"background: #f1f5f9; padding: 2px 6px; border-radius: 4px; border: 1px solid #cbd5e1;\">d<\/code> key (\u09cd &#8211; Hasanta) between two consonants to stack them (e.g., \u0995 + \u09cd + \u09a4 = \u0995\u09cd\u09a4).<\/p>\n                <p><strong>Unique Characters:<\/strong> Access Assamese-specific letters like <strong>\u09f0<\/strong> (Ra) on the <code style=\"background: #f1f5f9; padding: 2px 6px; border-radius: 4px;\">j<\/code> key and <strong>\u09f1<\/strong> (Wa) on the <code style=\"background: #f1f5f9; padding: 2px 6px; border-radius: 4px;\">b<\/code> key.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <section style=\"margin-bottom: 40px; background: #f0fdf4; padding: 30px; border-radius: 12px;\">\n        <h3 style=\"text-align: center; color: #1e293b; margin-top: 0;\">Key Advantages<\/h3>\n        <div style=\"display: flex; justify-content: space-around; flex-wrap: wrap; gap: 20px; text-align: center;\">\n            <div style=\"flex: 1; min-width: 200px;\">\n                <div style=\"font-size: 30px; margin-bottom: 10px;\">\ud83c\udf93<\/div>\n                <h4 style=\"margin: 0; color: #0f172a;\">Educational Tool<\/h4>\n                <p style=\"font-size: 14px; color: #64748b;\">An ideal reference for learners to visualize the Assamese Inscript character map.<\/p>\n            <\/div>\n            <div style=\"flex: 1; min-width: 200px;\">\n                <div style=\"font-size: 30px; margin-bottom: 10px;\">\ud83d\ude80<\/div>\n                <h4 style=\"margin: 0; color: #0f172a;\">Instant Accessibility<\/h4>\n                <p style=\"font-size: 14px; color: #64748b;\">Works entirely in-browser; no need to install Assamese software or language packs.<\/p>\n            <\/div>\n            <div style=\"flex: 1; min-width: 200px;\">\n                <div style=\"font-size: 30px; margin-bottom: 10px;\">\ud83d\udd12<\/div>\n                <h4 style=\"margin: 0; color: #0f172a;\">Strict Privacy<\/h4>\n                <p style=\"font-size: 14px; color: #64748b;\">Local data processing ensures your Assamese text is never tracked or stored on our servers.<\/p>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <footer style=\"background: #064e3b; color: #a7f3d0; padding: 25px; border-radius: 12px; font-size: 13px; line-height: 1.6;\">\n        <div style=\"display: flex; align-items: center; gap: 15px; margin-bottom: 10px;\">\n            <span style=\"background: #059669; color: white; padding: 2px 8px; border-radius: 4px; font-weight: bold; font-size: 11px;\">DISCLAIMER<\/span>\n            <span style=\"color: #f8fafc; font-weight: 600;\">Privacy &#038; Terms<\/span>\n        <\/div>\n        <p style=\"margin: 0;\">\n            This tool is provided for <strong>educational and practice purposes only<\/strong>. While optimized for usability, it follows the standard Inscript layout which may differ from phonetic transliteration methods. \n            <strong>Privacy Note:<\/strong> This is a &#8220;Client-Side&#8221; application. All text typed here remains local to your browser and is cleared upon page refresh.\n        <\/p>\n    <\/footer>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>How to Use the Assamese Virtual Keyboard A professional-grade interface designed for seamless Assamese (Asamiya) digital composition without the need for specialized hardware or system-level font installations. \u2328\ufe0f How It Works The keyboard layout is designed to provide a comprehensive visual map for every keystroke: Top-Right: The corresponding English key on your physical keyboard. Center:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-185","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/pages\/185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":2,"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/pages\/185\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/pages\/185\/revisions\/189"}],"wp:attachment":[{"href":"https:\/\/keyboardflow.com\/index.php\/wp-json\/wp\/v2\/media?parent=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}