CINXE.COM
KeymanWeb.com
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width, user-scalable=no" /> <meta name="format-detection" content="telephone=no" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" > <title>KeymanWeb.com </title> <!-- note: using CDN and not bundle for now --> <script src="https://browser.sentry-cdn.com/7.111.0/bundle.tracing.min.js" integrity="sha384-zbLcy9H6obT3ZcKjGlb5Ai7vi4G0vXMLB1UU56WRyPJWarHEDeLOkuJ3HwR/7IDd" crossorigin="anonymous" ></script> <script src="https://browser.sentry-cdn.com/7.111.0/captureconsole.min.js" integrity="sha384-29aW5YLMCGJnTd6js4VqwRHQk4lBe44qavgMQDtiMsXya0LpJqw5UqQDVyenw+SW" crossorigin="anonymous" ></script> <script> // Tags all exceptions with the active KMW instance's metadata. // Compare against the definition in the main repo: // - keymanapp/keyman/common/core/web/tools/sentry-manager/src/index.ts // // Currently separate in part b/c we can't guarantee 14.0+ in order to use // the generalized sentry-manager module yet; we allow users to specify older // versions of KMW for use. Also in part b/c keymanweb.com itself may produce errors. var prepareEvent = function(event) { // Make sure the metadata-generation function actually exists... (14.0+) try { if(window.keyman.getDebugInfo) { event.extra = event.extra || {}; event.extra.keymanState = window.keyman.getDebugInfo(); event.extra.keymanHostPlatform = 'keymanweb.com'; } } catch (ex) { /* Swallow any errors produced here */ } return event; }; var sentryRelease = "17.0"; // Note: not currently using js Loader as it does not seem to work correctly // with integrations doInitSentry(); function doInitSentry() { if(!Sentry) { // may be blocked by client return; } Sentry.init({ beforeSend: prepareEvent, dsn: "https://11f513ea178d438e8f12836de7baa87d@o1005580.ingest.us.sentry.io/5983523", release: sentryRelease, integrations: [ Sentry.captureConsoleIntegration({ levels: ['error', 'warning'] }) ], environment: // TODO: https://github.com/keymanapp/shared-sites/issues/13 ['www.keymanweb.com','keymanweb.com', 'web.keyman.com'].includes(location.host) ? 'production' : ['web.keyman-staging.com'].includes(location.host) ? 'staging' : 'development', }); } </script> <link rel='shortcut icon' href="/cdn/dev/img/keymanweb-icon-16.png"> <link rel="stylesheet" type="text/css" href="/cdn/dev/css/kmw.css" /> <link rel="stylesheet" type="text/css" href="https://r.keymanweb.com/code/bookmarklet_ui.css" /> <link rel="stylesheet" type="text/css" href="/cdn/dev/keys/keys.css" /> <link href='https://fonts.googleapis.com/css?family=Cabin:400,400italic,500,600,700,700italic|Source+Sans+Pro:400,700,900,600,300|Noto+Serif:400' rel='stylesheet' type='text/css'> <script type="text/javascript"> var demoDomain="https://keymanweb.com"; var KeymanWeb_StaticRoot = "https://s.keyman.com"; var resourceDomain="https://r.keymanweb.com"; var site_keyman_com="https://keyman.com"; // Load (only) the appropriate CSS for the device form factor var mapBCP47_ISO6393={}, mapISO6393_BCP47={}; (function(d,e) { d.aar='aa';d.abk='ab';d.afr='af';d.aka='ak';d.amh='am';d.ara='ar';d.arg='an';d.asm='as';d.ava='av';d.ave='ae';d.aym='ay';d.aze='az';d.bak='ba'; d.bam='bm';d.bel='be';d.ben='bn';d.bis='bi';d.bod='bo';d.bos='bs';d.bre='br';d.bul='bg';d.cat='ca';d.ces='cs';d.cha='ch';d.che='ce';d.chu='cu'; d.chv='cv';d.cor='kw';d.cos='co';d.cre='cr';d.cym='cy';d.dan='da';d.deu='de';d.div='dv';d.dzo='dz';d.ell='el';d.eng='en';d.epo='eo';d.est='et'; d.eus='eu';d.ewe='ee';d.fao='fo';d.fas='fa';d.fij='fj';d.fin='fi';d.fra='fr';d.fry='fy';d.ful='ff';d.gla='gd';d.gle='ga';d.glg='gl';d.glv='gv'; d.grn='gn';d.guj='gu';d.hat='ht';d.hau='ha';d.hbs='sh';d.heb='he';d.her='hz';d.hin='hi';d.hmo='ho';d.hrv='hr';d.hun='hu';d.hye='hy';d.ibo='ig'; d.ido='io';d.iii='ii';d.iku='iu';d.ile='ie';d.ina='ia';d.ind='id';d.ipk='ik';d.isl='is';d.ita='it';d.jav='jv';d.jpn='ja';d.kal='kl';d.kan='kn'; d.kas='ks';d.kat='ka';d.kau='kr';d.kaz='kk';d.khm='km';d.kik='ki';d.kin='rw';d.kir='ky';d.kom='kv';d.kon='kg';d.kor='ko';d.kua='kj';d.kur='ku'; d.lao='lo';d.lat='la';d.lav='lv';d.lim='li';d.lin='ln';d.lit='lt';d.ltz='lb';d.lub='lu';d.lug='lg';d.mah='mh';d.mal='ml';d.mar='mr';d.mkd='mk'; d.mlg='mg';d.mlt='mt';d.mon='mn';d.mri='mi';d.msa='ms';d.mya='my';d.nau='na';d.nav='nv';d.nbl='nr';d.nde='nd';d.ndo='ng';d.nep='ne';d.nld='nl'; d.nno='nn';d.nob='nb';d.nor='no';d.nya='ny';d.oci='oc';d.oji='oj';d.ori='or';d.orm='om';d.oss='os';d.pan='pa';d.pli='pi';d.pol='pl';d.por='pt'; d.pus='ps';d.que='qu';d.roh='rm';d.ron='ro';d.run='rn';d.rus='ru';d.sag='sg';d.san='sa';d.sin='si';d.slk='sk';d.slv='sl';d.sme='se';d.smo='sm'; d.sna='sn';d.snd='sd';d.som='so';d.sot='st';d.spa='es';d.sqi='sq';d.srd='sc';d.srp='sr';d.ssw='ss';d.sun='su';d.swa='sw';d.swe='sv';d.tah='ty'; d.tam='ta';d.tat='tt';d.tel='te';d.tgk='tg';d.tgl='tl';d.tha='th';d.tir='ti';d.ton='to';d.tsn='tn';d.tso='ts';d.tuk='tk';d.tur='tr';d.twi='tw'; d.uig='ug';d.ukr='uk';d.urd='ur';d.uzb='uz';d.ven='ve';d.vie='vi';d.vol='vo';d.wln='wa';d.wol='wo';d.xho='xh';d.yid='yi';d.yor='yo';d.zha='za'; d.zho='zh';d.zul='zu'; e.aa='aar';e.ab='abk';e.af='afr';e.ak='aka';e.am='amh';e.ar='ara';e.an='arg';e.as='asm';e.av='ava';e.ae='ave';e.ay='aym';e.az='aze';e.ba='bak'; e.bm='bam';e.be='bel';e.bn='ben';e.bi='bis';e.bo='bod';e.bs='bos';e.br='bre';e.bg='bul';e.ca='cat';e.cs='ces';e.ch='cha';e.ce='che';e.cu='chu'; e.cv='chv';e.kw='cor';e.co='cos';e.cr='cre';e.cy='cym';e.da='dan';e.de='deu';e.dv='div';e.dz='dzo';e.el='ell';e.en='eng';e.eo='epo';e.et='est'; e.eu='eus';e.ee='ewe';e.fo='fao';e.fa='fas';e.fj='fij';e.fi='fin';e.fr='fra';e.fy='fry';e.ff='ful';e.gd='gla';e.ga='gle';e.gl='glg';e.gv='glv'; e.gn='grn';e.gu='guj';e.ht='hat';e.ha='hau';e.sh='hbs';e.he='heb';e.hz='her';e.hi='hin';e.ho='hmo';e.hr='hrv';e.hu='hun';e.hy='hye';e.ig='ibo'; e.io='ido';e.ii='iii';e.iu='iku';e.ie='ile';e.ia='ina';e.id='ind';e.ik='ipk';e.is='isl';e.it='ita';e.jv='jav';e.ja='jpn';e.kl='kal';e.kn='kan'; e.ks='kas';e.ka='kat';e.kr='kau';e.kk='kaz';e.km='khm';e.ki='kik';e.rw='kin';e.ky='kir';e.kv='kom';e.kg='kon';e.ko='kor';e.kj='kua';e.ku='kur'; e.lo='lao';e.la='lat';e.lv='lav';e.li='lim';e.ln='lin';e.lt='lit';e.lb='ltz';e.lu='lub';e.lg='lug';e.mh='mah';e.ml='mal';e.mr='mar';e.mk='mkd'; e.mg='mlg';e.mt='mlt';e.mn='mon';e.mi='mri';e.ms='msa';e.my='mya';e.na='nau';e.nv='nav';e.nr='nbl';e.nd='nde';e.ng='ndo';e.ne='nep';e.nl='nld'; e.nn='nno';e.nb='nob';e.no='nor';e.ny='nya';e.oc='oci';e.oj='oji';e.or='ori';e.om='orm';e.os='oss';e.pa='pan';e.pi='pli';e.pl='pol';e.pt='por'; e.ps='pus';e.qu='que';e.rm='roh';e.ro='ron';e.rn='run';e.ru='rus';e.sg='sag';e.sa='san';e.si='sin';e.sk='slk';e.sl='slv';e.se='sme';e.sm='smo'; e.sn='sna';e.sd='snd';e.so='som';e.st='sot';e.es='spa';e.sq='sqi';e.sc='srd';e.sr='srp';e.ss='ssw';e.su='sun';e.sw='swa';e.sv='swe';e.ty='tah'; e.ta='tam';e.tt='tat';e.te='tel';e.tg='tgk';e.tl='tgl';e.th='tha';e.ti='tir';e.to='ton';e.tn='tsn';e.ts='tso';e.tk='tuk';e.tr='tur';e.tw='twi'; e.ug='uig';e.uk='ukr';e.ur='urd';e.uz='uzb';e.ve='ven';e.vi='vie';e.vo='vol';e.wa='wln';e.wo='wol';e.xh='xho';e.yi='yid';e.yo='yor';e.za='zha'; e.zh='zho';e.zu='zul'; })(mapISO6393_BCP47, mapBCP47_ISO6393); function iso6393ToBCP47(iso) { var bcp=mapISO6393_BCP47[iso]; return bcp?bcp:iso; } function bcp47ToISO6393(bcp) { var iso=mapBCP47_ISO6393[bcp]; return iso?iso:bcp; } var localKeyboard, localLanguage; function loadKeyboardFromHash() { var locationHash = location.hash.match(/^#(.+),(Keyboard_.+)$/i); if(locationHash) { localKeyboard = locationHash[2]; localLanguage = locationHash[1]; // Translate the language ID if necessary from ISO639-3 to BCP 47 localLanguage = iso6393ToBCP47(localLanguage); document.cookie = 'KeymanWeb_Keyboard=current%3D'+localKeyboard+'%3A'+localLanguage+'%3B; path=/'; document.cookie = 'KeymanWeb_Toolbar=recent0='+localLanguage+'%2C'+localKeyboard+'%3B; path=/'; } else if(location.hash == '#') { document.cookie = 'KeymanWeb_Keyboard=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT'; document.cookie = 'KeymanWeb_Toolbar=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT'; } else { var cookie = keyman.util.loadCookie('KeymanWeb_Keyboard'); if(cookie['current']) { var cookieMatch = cookie['current'].match(/^(Keyboard_.+):(.+)$/); if(cookieMatch) { localKeyboard = cookieMatch[1]; localLanguage = iso6393ToBCP47(cookieMatch[2]); } } } } // Set JS variable from twitter SESSION value var twitterMessage; </script> <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> <script src="/cdn/dev/js/jquery1-11-1.min.js"></script> <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.js"></script> <script src="https://r.keymanweb.com/code/bookmarklet_builder.js"></script> <script src="https://s.keyman.com/kmw/engine/17.0.332/keymanweb.js"></script> <script src="https://s.keyman.com/kmw/engine/17.0.332/kmwuitoolbar.js"></script> <!-- <script src="http://localhost/keymanweb/release/unminified/web/keymanweb.js"></script> <script src="http://localhost/keymanweb/release/unminified/web/kmwuitoolbar.js"></script> --> <script src="/cdn/dev/js/jquery.zclip.js"></script> <script src="/cdn/dev/js/kmwlive.js"></script> <script src="/prog/keyboards.php?tier=stable&version=17.0"></script> <script> loadKeyboardFromHash(); var pageLoading = true; // We finally made it properly boolean in 17.0 as part of https://github.com/keymanapp/keyman/pull/8560. var setActiveOnRegister = Number.parseFloat(keyman.version) >= 17.0 ? false : 'false'; keyman.init({ attachType:'auto', setActiveOnRegister: setActiveOnRegister }).then(function() { if(typeof afterInit == 'function') { afterInit(); } if(typeof addKeyboards == 'function') { addKeyboards(); } if(localKeyboard && localLanguage) { keyman.setActiveKeyboard(localKeyboard, localLanguage); } document.getElementById('message').focus(); }); pageLoading = false; (function() { var css = { "desktop" : "/cdn/dev/css/kmw-desktop.css", "tablet" : "/cdn/dev/css/kmw-tablet.css", "mobile" : "/cdn/dev/css/kmw-mobile.css" }; var ff='desktop',s,k, tablets=['iPad','Tablet PC'], phones=['iPhone','Opera Mobi','OPR/']; //if('ontouchstart' in window || navigator.msMaxTouchPoints) if(keyman.util.isTouchDevice()) { // Rely on KeymanWeb's touch detection. // General rule to distinguish between phones and tablets ff=(Math.min(screen.width,screen.height) > 720) ? 'tablet' : 'mobile'; // Force correct CSS selection for identified devices for(k=0; k<tablets.length; k++) { if(navigator.userAgent.indexOf(tablets[k]) >= 0) { ff='tablet'; } } for(k=0; k<phones.length; k++) { if(navigator.userAgent.indexOf(phones[k]) >= 0) { ff='mobile'; } } } //Expose the form factor for other use window.deviceFormFactor=ff; // Append the selected stylesheet to the document var lk=document.createElement('LINK'), file=css[ff]; lk.rel='stylesheet'; lk.href=file; lk.type='text/css'; document.getElementsByTagName('head')[0].appendChild(lk); })(); </script> </head> <body> <header> <div id='headerBackground'> <div id='headerRight'> <!--<a href='https://keyman.com/keymanweb/' target='blank'><img src="/cdn/dev/img/info.png" /></a>--> </div> <div id='headerLeft'><img src="/cdn/dev/img/keymanweb-logo-88.png" alt='KeymanWeb.com' title="KeymanWeb version 17.0.332" /></div> <img src="/cdn/dev/img/headerbar.png" alt="" /> </div> </header> <section id='content'> <section id='app' class='box'> <div id='KeymanWebControl' style='z-index: 10000'></div> <div id='exampleBox'> <p id='example'>Example: No examples available for this keyboard.</p> </div> <div id='messageContainer'> <textarea id='message' form='actions' placeholder='Select a keyboard and start typing.'></textarea> </div> <div id='buttons'> <div id='twitter' class='linksOff'><p>Tweet </p><span>140</span></div> <div id='search' class='linksOff'><p>Search</p></div> <div id="font"><span id="mobile-font-size" style="font-size:12pt">A</span><span style="font-size:20pt">A</span><p>Font Size</p></div> <hr/> <div id='copy' class='linksOff' data-clipboard-target="#message"><p>Copy</p></div> </div> <div id="font-size"> <span class="font-letter" id="font-small">A</span><div id="slider"></div><span class="font-letter" id="font-large">A</span> </div> <div id="mobile-font"> <div id="mobile-increase">+</div> <div id="mobile-decrease">-</div> <input type="hidden" id="mobile-font-size1" value="16"> </div> </section> <aside id='offer'> <div class='box' id='keymandesktop'> <!--<h3>Windows Version</h3>--> <p><span id='desktop-title'>Use this keyboard in any Windows app!</span> <a id='keyman-desktop-download'> <img src="/cdn/dev/img/small_download.png" alt='Download' title='Download free and open source Keyman Desktop with this keyboard bundled' /></a> <span id='free-open-source'>Free and open source!</span></p> </div> <div class='box' id='bookmarklet'> <h3>Browser Add-in</h3> <div class='keyman-bookmarklet'><a href='#'></a></div> <p>Drag this button to your Bookmarks toolbar to install this keyboard to your web browser! <a href='https://keyman.com/bookmarklet' target='_blank'>Learn more</a></p> </div> <div class='box' id='learn'> <h3>Website Plugin</h3> <p>Install the Keyman Engine for Web into your blog, CMS or website</p> <div><a href='https://keyman.com/developer/keymanweb/'>Learn more</a> | <a href='https://keyman.com/developer/keymanweb'>Get the source</a></div> </div> </aside> </section> <!-- Footer copied from keyman.com --> <div id="mobile-footer"> <div id="mobile-version">KeymanWeb version 17.0.332</div> </div> <div class="footer"> <div class="wrapper"> <div class="footer-third" id="footer-mailchimp"> <h2 class="footer-third-title">Keep me updated</h2> <!-- Begin MailChimp Signup Form --> <div id="mc_embed_signup"> <form action="//keyman.us1.list-manage.com/subscribe/post?u=99fcab2b035a8a51cd2158ca9&id=7ccdac1e32" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <div class="mc-field-group"> <input type="email" value="" name="EMAIL" class="required email kmw-disabled" id="mce-EMAIL" placeholder="email" /> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <div class="button subscribe"> <h2>Subscribe</h2> </div> </form> </div> <!--End mc_embed_signup--> <br> <div id="privacy-policy"><a href="https://software.sil.org/language-software-privacy-policy/">Privacy policy</a></div> <div id="version">KeymanWeb version 17.0.332</div> </div> <div class="footer-third" id="footer-social"> <h2 class="footer-third-title">Keep in touch</h2> <div> <a href="https://facebook.com/KeymanApp" target="_blank" data-icon=''>Facebook</a> <a href="https://twitter.com/keyman" target="_blank" data-icon=''>Twitter</a> <a href="https://blog.keyman.com/" target="_blank" data-icon=''>Keyman blog</a> <a href="https://github.com/keymanapp" target="_blank" data-icon=''>GitHub</a> <a href="https://community.software.sil.org/c/keyman" target="_blank" id='footer-community'>Keyman Community</a> </div> </div> <div class="footer-third sil-logo"> <br> <a href="https://www.sil.org/about/"><img id="sil-logo" src="/_common/assets/sil-logos-2024/sil-logo-tai-heritage-pro.png" width="50%" alt='SIL' /></a> <p>Created by <a href="https://www.sil.org/about/">SIL Global</a></p> </div> </div> </div> </body> </html>