CINXE.COM
Keyman 17.0 is now available in beta – Keyman Blog
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset='UTF-8'> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="pingback" href="https://blog.keyman.com/xmlrpc.php"> <title>Keyman 17.0 is now available in beta – Keyman Blog</title> <link rel='dns-prefetch' href='//secure.gravatar.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel='dns-prefetch' href='//s.w.org' /> <link rel='dns-prefetch' href='//v0.wordpress.com' /> <link rel="alternate" type="application/rss+xml" title="Keyman Blog » Feed" href="https://blog.keyman.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="Keyman Blog » Comments Feed" href="https://blog.keyman.com/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="Keyman Blog » Keyman 17.0 is now available in beta Comments Feed" href="https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/feed/" /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blog.keyman.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.6.14"}}; !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55357,56424,8205,55356,57212],[55357,56424,8203,55356,57212])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://blog.keyman.com/wp-includes/css/dist/block-library/style.min.css?ver=5.6.14' type='text/css' media='all' /> <style id='wp-block-library-inline-css' type='text/css'> .has-text-align-justify{text-align:justify;} </style> <link rel='stylesheet' id='bodhi-svgs-attachment-css' href='https://blog.keyman.com/wp-content/plugins/svg-support/css/svgs-attachment.css?ver=5.6.14' type='text/css' media='all' /> <link rel='stylesheet' id='bootstrap-css' href='https://blog.keyman.com/wp-content/themes/hestia/assets/bootstrap/css/bootstrap.min.css?ver=5.6.14' type='text/css' media='all' /> <link rel='stylesheet' id='font-awesome-css' href='https://blog.keyman.com/wp-content/themes/hestia/assets/font-awesome/css/font-awesome.min.css?ver=4.7.0' type='text/css' media='all' /> <link rel='stylesheet' id='hestia_style-css' href='https://blog.keyman.com/wp-content/themes/hestia/style.css?ver=1.1.30' type='text/css' media='all' /> <style id='hestia_style-inline-css' type='text/css'> .feature-box:nth-child(1) .icon { color: #e91e63; }.feature-box:nth-child(2) .icon { color: #00bcd4; }.feature-box:nth-child(3) .icon { color: #4caf50; } a,.blogs article:nth-child(6n+1) .category a, a:hover, .card-blog a.moretag:hover, .card-blog a.more-link:hover, .widget a:hover, .navbar.navbar-color-on-scroll:not(.navbar-transparent) li.active a { color:#e91e63; } button, button:hover, input[type="button"], input[type="button"]:hover, input[type="submit"], input[type="submit"]:hover, input#searchsubmit, .pagination span.current, .pagination span.current:focus, .pagination span.current:hover, .btn.btn-primary, .btn.btn-primary:link, .btn.btn-primary:hover, .btn.btn-primary:focus, .btn.btn-primary:active, .btn.btn-primary.active, .btn.btn-primary.active:focus, .btn.btn-primary.active:hover, .btn.btn-primary:active:hover, .btn.btn-primary:active:focus, .btn.btn-primary:active:hover, .open > .btn.btn-primary.dropdown-toggle, .open > .btn.btn-primary.dropdown-toggle:focus, .open > .btn.btn-primary.dropdown-toggle:hover, .navbar .dropdown-menu li > a:hover, .navbar .dropdown-menu li > a:focus, .navbar.navbar-default .dropdown-menu li > a:hover, .navbar.navbar-default .dropdown-menu li > a:focus, .label.label-primary, .work .portfolio-item:nth-child(6n+1) .label, .added_to_cart.wc-forward:hover, #add_payment_method .wc-proceed-to-checkout a.checkout-button:hover, #add_payment_method .wc-proceed-to-checkout a.checkout-button, .added_to_cart.wc-forward, .woocommerce-message a.button, .woocommerce nav.woocommerce-pagination ul li span.current, .woocommerce ul.products li.product .onsale, .woocommerce span.onsale, .woocommerce .single-product div.product form.cart .button, .woocommerce #respond input#submit, .woocommerce button.button, .woocommerce input.button, .woocommerce-cart .wc-proceed-to-checkout a.checkout-button, .woocommerce-checkout .wc-proceed-to-checkout a.checkout-button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button:disabled, .woocommerce input.button:disabled[disabled], .woocommerce a.button.wc-backward:hover, .woocommerce a.button.wc-backward, .woocommerce .single-product div.product form.cart .button:hover, .woocommerce #respond input#submit:hover, .woocommerce-message a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, .woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover, .woocommerce-checkout .wc-proceed-to-checkout a.checkout-button:hover, .woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce input.button:disabled:hover, .woocommerce input.button:disabled[disabled]:hover, .woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li.active a, .woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li.active a:hover, .woocommerce #respond input#submit.alt.disabled, .woocommerce #respond input#submit.alt.disabled:hover, .woocommerce #respond input#submit.alt:disabled, .woocommerce #respond input#submit.alt:disabled:hover, .woocommerce #respond input#submit.alt:disabled[disabled], .woocommerce #respond input#submit.alt:disabled[disabled]:hover, .woocommerce a.button.alt.disabled, .woocommerce a.button.alt.disabled:hover, .woocommerce a.button.alt:disabled, .woocommerce a.button.alt:disabled:hover, .woocommerce a.button.alt:disabled[disabled], .woocommerce a.button.alt:disabled[disabled]:hover, .woocommerce button.button.alt.disabled, .woocommerce button.button.alt.disabled:hover, .woocommerce button.button.alt:disabled, .woocommerce button.button.alt:disabled:hover, .woocommerce button.button.alt:disabled[disabled], .woocommerce button.button.alt:disabled[disabled]:hover, .woocommerce input.button.alt.disabled, .woocommerce input.button.alt.disabled:hover, .woocommerce input.button.alt:disabled, .woocommerce input.button.alt:disabled:hover, .woocommerce input.button.alt:disabled[disabled], .woocommerce input.button.alt:disabled[disabled]:hover, .woocommerce a.button.woocommerce-Button, #secondary div[id^=woocommerce_price_filter] .price_slider .ui-slider-range, .footer div[id^=woocommerce_price_filter] .price_slider .ui-slider-range, div[id^=woocommerce_product_tag_cloud].widget a, div[id^=woocommerce_widget_cart].widget .buttons .button { background-color: #e91e63; } button, .button, input[type="submit"], input[type="button"], .btn.btn-primary, .added_to_cart.wc-forward, .woocommerce .single-product div.product form.cart .button, .woocommerce #respond input#submit, .woocommerce button.button, .woocommerce input.button, #add_payment_method .wc-proceed-to-checkout a.checkout-button, .woocommerce-cart .wc-proceed-to-checkout a.checkout-button, .woocommerce-checkout .wc-proceed-to-checkout a.checkout-button, .woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce input.button:disabled, .woocommerce input.button:disabled[disabled], .woocommerce-message a.button, .woocommerce a.button.wc-backward, .woocommerce div[id^=woocommerce_widget_cart].widget .buttons .button { -webkit-box-shadow: 0 2px 2px 0 rgba(233,30,99,0.14),0 3px 1px -2px rgba(233,30,99,0.2),0 1px 5px 0 rgba(233,30,99,0.12); box-shadow: 0 2px 2px 0 rgba(233,30,99,0.14),0 3px 1px -2px rgba(233,30,99,0.2),0 1px 5px 0 rgba(233,30,99,0.12); } .card .header-primary, .card .content-primary { background: #e91e63; } .button:hover, button:hover, input[type="submit"]:hover, input[type="button"]:hover, input#searchsubmit:hover, .pagination span.current, .btn.btn-primary:hover, .btn.btn-primary:focus, .btn.btn-primary:active, .btn.btn-primary.active, .btn.btn-primary:active:focus, .btn.btn-primary:active:hover, .woocommerce nav.woocommerce-pagination ul li span.current, .added_to_cart.wc-forward:hover, .woocommerce .single-product div.product form.cart .button:hover, .woocommerce #respond input#submit:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, #add_payment_method .wc-proceed-to-checkout a.checkout-button:hover, .woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover, .woocommerce-checkout .wc-proceed-to-checkout a.checkout-button:hover, .woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover, .woocommerce input.button:disabled:hover, .woocommerce input.button:disabled[disabled]:hover, .woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li.active a, .woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li.active a:hover, .woocommerce-message a.button:hover, .woocommerce a.button.wc-backward:hover, .woocommerce div[id^=woocommerce_widget_cart].widget .buttons .button:hover { -webkit-box-shadow: 0 14px 26px -12pxrgba(233,30,99,0.42),0 4px 23px 0 rgba(0,0,0,0.12),0 8px 10px -5px rgba(233,30,99,0.2); box-shadow: 0 14px 26px -12px rgba(233,30,99,0.42),0 4px 23px 0 rgba(0,0,0,0.12),0 8px 10px -5px rgba(233,30,99,0.2); color: #fff; } .form-group.is-focused .form-control { background-image: -webkit-gradient(linear,left top, left bottom,from(#e91e63),to(#e91e63)),-webkit-gradient(linear,left top, left bottom,from(#d2d2d2),to(#d2d2d2)); background-image: -webkit-linear-gradient(#e91e63),to(#e91e63),-webkit-linear-gradient(#d2d2d2,#d2d2d2); background-image: linear-gradient(#e91e63),to(#e91e63),linear-gradient(#d2d2d2,#d2d2d2); } #secondary div[id^=woocommerce_price_filter] .price_slider .ui-slider-handle, .footer div[id^=woocommerce_price_filter] .price_slider .ui-slider-handle { border-color: #e91e63; } </style> <link rel='stylesheet' id='hestia_fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A300%2C400%2C500%2C700%7CRoboto+Slab%3A400%2C700&subset=latin%2Clatin-ext' type='text/css' media='all' /> <link rel='stylesheet' id='jetpack_css-css' href='https://blog.keyman.com/wp-content/plugins/jetpack/css/jetpack.css?ver=9.2.4' type='text/css' media='all' /> <script type='text/javascript' src='https://blog.keyman.com/wp-includes/js/jquery/jquery.min.js?ver=3.5.1' id='jquery-core-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.3.2' id='jquery-migrate-js'></script> <link rel="https://api.w.org/" href="https://blog.keyman.com/wp-json/" /><link rel="alternate" type="application/json" href="https://blog.keyman.com/wp-json/wp/v2/posts/1256" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.keyman.com/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://blog.keyman.com/wp-includes/wlwmanifest.xml" /> <meta name="generator" content="WordPress 5.6.14" /> <link rel="canonical" href="https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/" /> <link rel='shortlink' href='https://wp.me/p8O1kk-kg' /> <link rel="alternate" type="application/json+oembed" href="https://blog.keyman.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.keyman.com%2F2024%2F02%2Fkeyman-17-0-is-now-available-in-beta%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://blog.keyman.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.keyman.com%2F2024%2F02%2Fkeyman-17-0-is-now-available-in-beta%2F&format=xml" /> <style type='text/css'>img#wpstats{display:none}</style><style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="article" /> <meta property="og:title" content="Keyman 17.0 is now available in beta" /> <meta property="og:url" content="https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/" /> <meta property="og:description" content="We are excited to announce that Keyman 17.0 is officially in beta. You can download Keyman 17.0 beta on Keyman downloads website. You are welcome to send us any feedback for Keyman 17.0 on Keyman c…" /> <meta property="article:published_time" content="2024-02-15T08:41:03+00:00" /> <meta property="article:modified_time" content="2024-02-15T08:41:03+00:00" /> <meta property="og:site_name" content="Keyman Blog" /> <meta property="og:image" content="https://blog.keyman.com/wp-content/uploads/2017/05/cropped-keyman-icon-1024-1.png" /> <meta property="og:image:width" content="512" /> <meta property="og:image:height" content="512" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:text:title" content="Keyman 17.0 is now available in beta" /> <meta name="twitter:image" content="https://blog.keyman.com/wp-content/uploads/2017/05/cropped-keyman-icon-1024-1-270x270.png" /> <meta name="twitter:card" content="summary" /> <!-- End Jetpack Open Graph Tags --> <link rel="icon" href="https://blog.keyman.com/wp-content/uploads/2017/05/cropped-keyman-icon-1024-1-32x32.png" sizes="32x32" /> <link rel="icon" href="https://blog.keyman.com/wp-content/uploads/2017/05/cropped-keyman-icon-1024-1-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://blog.keyman.com/wp-content/uploads/2017/05/cropped-keyman-icon-1024-1-180x180.png" /> <meta name="msapplication-TileImage" content="https://blog.keyman.com/wp-content/uploads/2017/05/cropped-keyman-icon-1024-1-270x270.png" /> </head> <body class="post-template-default single single-post postid-1256 single-format-standard blog-post"> <div class="wrapper"> <header class="header"> <nav class="navbar navbar-default navbar-fixed-top "> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navigation"> <span class="sr-only">Toggle Navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div class="title-logo-wrapper"> <a class="navbar-brand" href="https://blog.keyman.com/" title="Keyman Blog"><p>Keyman Blog</p></a> </div> </div> <div id="main-navigation" class="collapse navbar-collapse"><ul id="menu-socials-top-menu" class="nav navbar-nav navbar-right"><li id="menu-item-959" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-959"><a title="Facebook" href="http://www.facebook.com">Facebook</a></li> <li id="menu-item-960" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-960"><a title="Twitter" href="http://www.twitter.com">Twitter</a></li> <li id="menu-item-961" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-961"><a title="Google" href="http://www.google.com">Google</a></li> <li id="menu-item-962" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-962"><a title="Linkedin" href="http://www.linkedin.com">Linkedin</a></li> <li id="menu-item-963" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-963"><a title="Instagram" href="http://www.instagram.com">Instagram</a></li> <li id="menu-item-964" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-964"><a title="Pinterest" href="http://www.pinterest.com">Pinterest</a></li> <li id="menu-item-965" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-965"><a title="Youtube" href="http://www.youtube.com">Youtube</a></li> </ul></div> </div> </nav> <div id="primary" class="page-header header-filter header-small" data-parallax="active" style="background-image: url('https://blog.keyman.com/wp-content/uploads/2017/05/iStock_000014066889-2000x1200.jpg');"> <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1 text-center"> <h1 class="title">Keyman 17.0 is now available in beta <h4 class="author"> Published by <a href="https://blog.keyman.com/author/mengheng/"><b>MengHeng Hav</b></a> on <time>February 15, 2024</time></h4> </div> </div> </div> </div> </header> <div class="main main-raised"> <div class="blog-post"> <div class="container"> <div class="row"> <div class=" col-md-8"> <article id="post-1256" class="section section-text"> <p>We are excited to announce that <strong>Keyman 17.0</strong> is officially in beta.</p> <p>You can download Keyman 17.0 beta on <a rel="noreferrer noopener" href="https://keyman.com/downloads/pre-release/" data-type="URL" data-id="https://keyman.com/downloads/pre-release/" target="_blank">Keyman downloads website</a>.</p> <p>You are welcome to send us any feedback for Keyman 17.0 on <a rel="noreferrer noopener" href="https://community.software.sil.org/t/keyman-17-0-beta-release/8388" data-type="URL" data-id="https://community.software.sil.org/t/keyman-17-0-beta-release/8388" target="_blank">Keyman community site</a>.</p> <p>The Keyman team has been working hard to improve Keyman and we are pleased to introduce the following new features:</p> <ul><li>Support for the new <a href="https://cldr.unicode.org/index/keyboard-workgroup">LDML Keyboard Standard</a> on desktop computers and laptops.</li><li>Improving gesture support on touch layouts. This includes introducing new gestures such as flicks, and multitap, and improving the usability of existing gestures, such as holding a modifier key while tapping on another key.</li><li>Enhancements to the predictive text suggestion banner, showing more suggestions and handling longer words better.</li><li>In Keyman Developer, an all new keyboard compiler that runs on Windows, macOS, and Linux.</li></ul> <p>Alongside the new features, there have been many less visible improvements:</p> <ul><li>Keyboarding on macOS is now much more reliable with the introduction of Keyman Core into Keyman for macOS.</li><li>Diacritics and other marks can now be more consistently and clearly displayed on the On Screen Keyboard.</li><li>Keyman for Linux now works with Wayland.</li></ul> <h3>Using Gestures on the Touch Layout Keys</h3> <p>There are now several gestures available to interact with some keys on the keyboard. Keys which have gestures available will normally show a hint in the top right of the key:</p> <ul><li><strong>Long press</strong>: Press and hold a key, and after a moment a submenu will appear. Slide the finger to the submenu to select a key. Release the finger, and the highlighted key from the submenu will be output.</li><li><strong>Flick</strong>: Press and hold a key, and then slide the finger in various directions on a key to reach alternate outputs. The key will animate to show the expected output when the finger is released. A common flick is to slide down to reach numerals on the top row of the keyboard.<img loading="lazy" src="https://github.com/keymanapp/keyman/assets/4498365/848eebdd-17d9-4026-8aba-09c6f2a90c2d" alt="flick down on y to get 6" width="" height=""></li><li><strong>Multitap</strong>: Some keys can be pressed repeatedly and rapidly to reach alternate outputs. Tapping rapidly twice on <kbd>Shift</kbd> will activate <kbd>Caps Lock</kbd> on many keyboards.</li></ul> <h3>Improved Suggestion Banner</h3> <ul><li>Drag the banner horizontally to see more suggestions</li><li>Overly-long suggestions are partially hidden, but expand when a finger is held on them</li><li>Displays up to 8 suggestions</li></ul> <figure class="wp-block-image"><img src="https://github.com/keymanapp/keyman/assets/4498365/3d3a20e7-a801-4e20-b631-376f85aff235" alt="improved banner"/></figure> <h3>Creating LDML Keyboards with Keyman Developer</h3> <ul><li>New project wizard for creating LDML keyboards</li><li>Integrated LDML keyboard test window</li></ul> <h3>New Keyman Developer compiler toolchain</h3> <ul><li>The Windows-only <code>kmcomp.exe</code> command-line compiler has been replaced with a cross-platform <code>kmc</code> tool, with more consistent parameters. <code>kmc</code> is also up to 100x faster than <code>kmcomp.exe</code> when batch building keyboards.</li></ul> <p>The full change log is available <a href="https://github.com/keymanapp/keyman/blob/beta/HISTORY.md">here</a>.</p> <hr class="wp-block-separator"/> <h3>Keyman for Windows</h3> <ul><li>Minimum supported version of Windows is 10.0</li></ul> <h3>Keyman for macOS</h3> <ul><li>Minimum supported version of macOS is 10.10 Yosemite.</li><li>Internals of Keyman Engine for macOS rewritten to use shared Keyman Core, improving reliability and consistency with other platforms <a href="https://github.com/keymanapp/keyman/pull/7857">#7857</a></li></ul> <h3>Keyman for iPhone and iPad</h3> <ul><li>Minimum supported version of iOS is 12.2.</li><li>Multitap and flick gestures are now supported for iOS. <a href="https://github.com/keymanapp/keyman/pull/7324">#7324</a></li><li>Predictive text suggestions are now handled more flexibly on the banner <a href="https://github.com/keymanapp/keyman/pull/7934">#7934</a><ul><li>Can now display up to 8 suggestions on screen</li><li>Can drag the banner left and right to see more suggestions</li><li>Shortens long suggestions to avoid long words overwhelming the available space.</li></ul></li><li>Improves scaling of key caps for some keyboards <a href="https://github.com/keymanapp/keyman/pull/10506">#10506</a></li></ul> <h3>Keyman for Android</h3> <ul><li>Minimum supported version of Android is 5.0 (Chrome 37.0)</li><li>Multitap and flick gestures are now supported for Android. <a href="https://github.com/keymanapp/keyman/pull/7324">#7324</a></li><li>When suggestions aren’t enabled, displays a themed banner. This area is for displaying top row key gestures and is also reserved for future enhancements <a href="https://github.com/keymanapp/keyman/pull/9696">#9696</a></li><li>Removes in-app browser <a href="https://github.com/keymanapp/keyman/pull/8430">#8430</a></li><li>Predictive text suggestions are now handled more flexibly on the banner <a href="https://github.com/keymanapp/keyman/pull/7934">#7934</a><ul><li>Can now display up to 8 suggestions on screen</li><li>Can drag the banner left and right to see more suggestions</li><li>Shortens long suggestions to avoid long words overwhelming the available space.</li></ul></li><li>Improves scaling of key caps for some keyboards <a href="https://github.com/keymanapp/keyman/pull/10506">#10506</a></li></ul> <h3>Keyman for Linux</h3> <ul><li>Keyman for Linux now supports Ubuntu Noble and ends support for Lunar. <a href="https://github.com/keymanapp/keyman/pull/10561">#10561</a></li><li>Works now with Wayland <a href="https://github.com/keymanapp/keyman/issues/4273">#4273</a></li><li>It is now possible to specify an arbitrary language tag when installing a keyboard package from the command line. Previously this only worked for the language tags listed in the keyboard package. <a href="https://github.com/keymanapp/keyman/pull/8598">#8598</a></li></ul> <h3>KeymanWeb</h3> <ul><li>Minimum supported version of Chrome is 53.0</li><li>Now targets ES6 rather than ES5 <a href="https://github.com/keymanapp/keyman/pull/10257">#10257</a></li></ul> <h3>Keyman Developer</h3> <ul><li>Updated to Unicode 15.1 <a href="https://github.com/keymanapp/keyman/pull/9555">#9555</a></li><li><strong>BREAKING</strong> <code>kmcomp</code> is replaced by <code>kmc</code> <a href="https://github.com/keymanapp/keyman/pull/9158">#9158</a></li><li>kmc is available as an NPM package with <code>npm install @keymanapp/kmc@beta</code> <a href="https://github.com/keymanapp/keyman/pull/8954">#8954</a></li><li>Extra fields are available in packages for license file, welcome file, typing examples, related packages (including deprecated packages), additional font files, replacing these metadata fields previously stored in .keyboard_info files. <a href="https://github.com/keymanapp/keyman/pull/9485">#9485</a></li><li><code>&displayMap</code> allows keyboard developers to specify a font mapping for the On Screen Keyboard and Touch Layout to resolve diacritic rendering issues. <a href="https://github.com/keymanapp/keyman/pull/9032">#9032</a></li><li>Adds non-printing characters such as spacing, joiner, and marker characters for On Screen Keyboards and Touch Layouts. <a href="https://github.com/keymanapp/keyman/pull/9846">#9846</a></li><li>Keyman Developer now warns if attempting to use virtual keys in output of rules <a href="https://github.com/keymanapp/keyman/pull/10062">#10062</a></li><li>Keyman Developer now includes basic LDML keyboard editing and testing <a href="https://github.com/keymanapp/keyman/pull/10459">#10459</a></li><li>Keyman Developer now supports ngrok v3 <a href="https://github.com/keymanapp/keyman/pull/10359">#10359</a></li></ul> <h3>Keyman Core</h3> <ul><li>Keyman Core on Windows, Linux, and macOS now supports LDML Keyboards</li><li>Keyman Core on Windows, Linux, and macOS supports full normalization for LDML keyboard output <a href="https://github.com/keymanapp/keyman/pull/10390">#10390</a></li><li><strong>BREAKING</strong> header file has been renamed from keyboardprocessor.h to keyman_core_api.h <a href="https://github.com/keymanapp/keyman/pull/9723">#9723</a></li><li><strong>BREAKING</strong> API identifiers have been renamed from <code>km_kbp_</code> to <code>km_core_</code> <a href="https://github.com/keymanapp/keyman/pull/9724">#9724</a></li><li><strong>BREAKING</strong> Context APIs have been dramatically simplified, with only 2 APIs to be used by most consumers <a href="https://github.com/keymanapp/keyman/pull/10401">#10401</a></li><li><strong>BREAKING</strong> Introduced debug logging API for retrieving context <a href="https://github.com/keymanapp/keyman/pull/10644">#10644</a></li><li><strong>BREAKING</strong> Action APIs have now been simplified <a href="https://github.com/keymanapp/keyman/pull/10644">#10644</a></li></ul> <h3>Keyman Engine for Android</h3> <ul><li><strong>BREAKING</strong> Changes package name from <code>com.tavultesoft.kmea</code> to <code>com.keyman.engine</code> <a href="https://github.com/keymanapp/keyman/pull/7881">#7881</a></li><li><strong>BREAKING</strong> Updates to Java 11 <a href="https://github.com/keymanapp/keyman/pull/8543">#8543</a></li></ul> <h3>Keyman Engine for iOS</h3> <ul><li><strong>BREAKING</strong> Now uses the framework weichsel/ZIPFoundation in place of marmelroy/Zip for unzipping Keyman packages. <a href="https://github.com/keymanapp/keyman/pull/9958">#9958</a></li></ul> <h3>Keyman Engine for Web</h3> <ul><li><strong>BREAKING</strong> Initialization option <a href="https://help.keyman.com/developer/engine/web/17.0/reference/core/init"><code>setActiveOnRegister</code></a> is now a boolean and not a string <a href="https://github.com/keymanapp/keyman/pull/8458">#8458</a></li><li><strong>BREAKING</strong> Reworks Keyman Engine for Web internally to use ES modules throughout; this has resulted in significant internal changes.<br>The current <a href="https://help.keyman.com/developer/engine/web/current-version/">API</a> will continue to work without modification, but use of undocumented functionality may break <a href="https://github.com/keymanapp/keyman/pull/8560">#8560</a></li><li>The on-screen-keyboard for Keyman Engine for Web has been modularized in preparation for embedding in other Keyman platforms <a href="https://github.com/keymanapp/keyman/pull/8560">#8560</a></li><li>Multitap and flick gestures are now supported for Web. <a href="https://github.com/keymanapp/keyman/pull/7324">#7324</a></li></ul> <h3>New Localizations</h3> <ul><li>Mon (Burmese script) added for Windows, Android, Linux <a href="https://github.com/keymanapp/keyman/pull/9550">#9550</a></li></ul> </article> <div class="section section-blog-info"> <div class="row"> <div class="col-md-6"> <div class="entry-categories">Categories: <span class="label label-primary"><a href="https://blog.keyman.com/category/developing-keyman/developing-keyman-developing-keyman/">Developing Keyman</a></span> </div> </div> <div class="col-md-6"> <div class="entry-social"> <a target="_blank" rel="tooltip" data-original-title="Share on Facebook" class="btn btn-just-icon btn-round btn-facebook" href="https://www.facebook.com/sharer/sharer.php?u=https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/"><i class="fa fa-facebook"></i></a> <a target="_blank" rel="tooltip" data-original-title="Share on Twitter" class="btn btn-just-icon btn-round btn-twitter" href="https://twitter.com/home?status=Keyman 17.0 is now available in beta - https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/"><i class="fa fa-twitter"></i></a> <a target="_blank" rel="tooltip" data-original-title="Share on Google+" class="btn btn-just-icon btn-round btn-google" href="https://plus.google.com/share?url=https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/"><i class="fa fa-google"></i></a> </div> </div> </div> <hr> <div id="comments" class="section section-comments"> <div class="row"> <div class="col-md-12"> <div class="media-area"> <h3 class="title text-center"> 3 thoughts on “Keyman 17.0 is now available in beta” </h3> <div class="comment even thread-even depth-1 parent media" id="comment-25724"> <a class="pull-left" href=" "> <div class="comment-author avatar vcard"> <img alt='' src='https://secure.gravatar.com/avatar/93cadad6289ee59a6e522667513bbbd4?s=64&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/93cadad6289ee59a6e522667513bbbd4?s=128&d=mm&r=g 2x' class='avatar avatar-64 photo' height='64' width='64' loading='lazy'/> </div> </a> <div class="media-body"> <h4 class="media-heading"> Kannan <small> · June 30, 2024 at 4:45 pm </small> </h4> <p>Keyman Versions 10, 11 ….17 Not working for Coreldraw all Versions in Tamil Language<br /> and Keyman Off and ON Prapare working</p> <div class="media-footer"> <a rel='nofollow' class='comment-reply-link pull-right' href='https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/?replytocom=25724#respond' data-commentid="25724" data-postid="1256" data-belowelement="comment-25724" data-respondelement="respond" data-replyto="Reply to Kannan" aria-label='Reply to Kannan'><i class="fa fa-mail-reply"></i> Reply</a> </div> </div> </div> <ul class="children"> <div class="comment byuser comment-author-mengheng bypostauthor odd alt depth-2 media" id="comment-25733"> <a class="pull-left" href=" "> <div class="comment-author avatar vcard"> <img alt='' src='https://secure.gravatar.com/avatar/82f694f1c9013dd5c7afbb8ad6ce17f9?s=64&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/82f694f1c9013dd5c7afbb8ad6ce17f9?s=128&d=mm&r=g 2x' class='avatar avatar-64 photo' height='64' width='64' loading='lazy'/> </div> </a> <div class="media-body"> <h4 class="media-heading"> MengHeng Hav <small> · July 1, 2024 at 5:02 am </small> </h4> <p>Hi! Thanks for bringing this up. Could you describe in detail the issue’s behavior over at our community site (<a href="https://community.software.sil.org/new-message?groupname=keyman" rel="nofollow ugc">https://community.software.sil.org/new-message?groupname=keyman</a>) to help clarify as we are investigating this issue?</p> <div class="media-footer"> <a rel='nofollow' class='comment-reply-link pull-right' href='https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/?replytocom=25733#respond' data-commentid="25733" data-postid="1256" data-belowelement="comment-25733" data-respondelement="respond" data-replyto="Reply to MengHeng Hav" aria-label='Reply to MengHeng Hav'><i class="fa fa-mail-reply"></i> Reply</a> </div> </div> </div> </li><!-- #comment-## --> </ul><!-- .children --> </li><!-- #comment-## --> <div class="pingback even thread-even depth-1 media" id="comment-24231"> <div class="media-body"> <h4 class="media-heading"> <a href='https://blog.keyman.com/2024/03/keyman-update-for-15-march-2024/' rel='external nofollow ugc' class='url'>Keyman Update for 15 March 2024 – Keyman Blog</a> <small> · March 20, 2024 at 8:07 am </small> </h4> <p>[…] The release to 17.0 beta. Read more in our detailed blog post […]</p> <div class="media-footer"> <a rel='nofollow' class='comment-reply-link pull-right' href='https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/?replytocom=24231#respond' data-commentid="24231" data-postid="1256" data-belowelement="comment-24231" data-respondelement="respond" data-replyto="Reply to Keyman Update for 15 March 2024 – Keyman Blog" aria-label='Reply to Keyman Update for 15 March 2024 – Keyman Blog'><i class="fa fa-mail-reply"></i> Reply</a> </div> </div> </div> </li><!-- #comment-## --> </div> <div class="media-body"> <div id="respond" class="comment-respond"> <h3 class="title text-center">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2024/02/keyman-17-0-is-now-available-in-beta/#respond" style="display:none;">Cancel reply</a></small></h3> <span class="pull-left author"> <div class="avatar"><img src="https://blog.keyman.com/wp-content/themes/hestia/assets/img/placeholder.jpg" height="64" width="64"/></div> </span> <div class="media-body"><form action="https://blog.keyman.com/wp-comments-post.php" method="post" id="commentform" class="form"><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> Required fields are marked <span class="required">*</span></p><div class="row"> <div class="col-md-4"> <div class="form-group label-floating is-empty"> <label class="control-label">Name <span class="required">*</span></label><input id="author" name="author" class="form-control" type="text" aria-required='true' /> <span class="hestia-input"></span> </div> </div> <div class="col-md-4"> <div class="form-group label-floating is-empty"> <label class="control-label">Email <span class="required">*</span></label><input id="email" name="email" class="form-control" type="email" aria-required='true' /> <span class="hestia-input"></span> </div> </div> <div class="col-md-4"> <div class="form-group label-floating is-empty"> <label class="control-label">Website</label><input id="url" name="url" class="form-control" type="url" aria-required='true' /> <span class="hestia-input"></span> </div> </div> </div> <div class="form-group label-floating is-empty"> <label class="control-label">What's on your mind?</label><textarea id="comment" name="comment" class="form-control" rows="6" aria-required="true"></textarea><span class="hestia-input"></span> </div> </div><p class="comment-subscription-form"><input type="checkbox" name="subscribe_comments" id="subscribe_comments" value="subscribe" style="width: auto; -moz-appearance: checkbox; -webkit-appearance: checkbox;" /> <label class="subscribe-label" id="subscribe-label" for="subscribe_comments">Notify me of follow-up comments by email.</label></p><p class="comment-subscription-form"><input type="checkbox" name="subscribe_blog" id="subscribe_blog" value="subscribe" style="width: auto; -moz-appearance: checkbox; -webkit-appearance: checkbox;" /> <label class="subscribe-label" id="subscribe-blog-label" for="subscribe_blog">Notify me of new posts by email.</label></p><p class="form-submit"><input name="submit" type="submit" id="submit" class="btn btn-primary pull-right" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='1256' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="1d36bd2ddc" /></p><p style="display: none !important;"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="36"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div><!-- #respond --> <p class="akismet_comment_form_privacy_notice">This site uses Akismet to reduce spam. <a href="https://akismet.com/privacy/" target="_blank" rel="nofollow noopener">Learn how your comment data is processed</a>.</p> </div> </div> </div> </div> </div> </div> <aside id="secondary" class="col-md-3 blog-sidebar col-md-offset-1" role="complementary"> <div id="blog_subscription-2" class="widget"><h5>Subscribe to Blog via Email</h5> <form action="#" method="post" accept-charset="utf-8" id="subscribe-blog-blog_subscription-2"> <div id="subscribe-text"><p>Enter your email address to subscribe to this blog and receive notifications of new posts by email.</p> </div> <p id="subscribe-email"> <label id="jetpack-subscribe-label" class="screen-reader-text" for="subscribe-field-blog_subscription-2"> Email Address </label> <input type="email" name="email" required="required" value="" id="subscribe-field-blog_subscription-2" placeholder="Email Address" /> </p> <p id="subscribe-submit"> <input type="hidden" name="action" value="subscribe"/> <input type="hidden" name="source" value="https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/"/> <input type="hidden" name="sub-type" value="widget"/> <input type="hidden" name="redirect_fragment" value="blog_subscription-2"/> <button type="submit" name="jetpack_subscriptions_widget" > Subscribe </button> </p> </form> </div> <div id="recent-posts-2" class="widget"> <h5>Recent Posts</h5> <ul> <li> <a href="https://blog.keyman.com/2025/02/keyman-update-for-14-february-2025/">Keyman Update for 14 February 2025</a> </li> <li> <a href="https://blog.keyman.com/2025/02/keyman-18-0-is-now-available-in-beta/">Keyman 18.0 is now available in beta</a> </li> <li> <a href="https://blog.keyman.com/2025/02/keyman-update-for-31-january-2025/">Keyman Update for 31 January 2025</a> </li> <li> <a href="https://blog.keyman.com/2025/01/keyman-update-for-17-january-2025/">Keyman Update for 17 January 2025</a> </li> <li> <a href="https://blog.keyman.com/2024/12/keyman-update-for-20-december-2024/">Keyman Update for 20 December 2024</a> </li> </ul> </div><div id="recent-comments-2" class="widget"><h5>Recent Comments</h5><ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link">Marc Durdin</span> on <a href="https://blog.keyman.com/2024/12/keyman-update-for-06-december-2024/#comment-29978">Keyman Update for 06 December 2024</a></li><li class="recentcomments"><span class="comment-author-link">key man</span> on <a href="https://blog.keyman.com/2024/12/keyman-update-for-06-december-2024/#comment-29971">Keyman Update for 06 December 2024</a></li><li class="recentcomments"><span class="comment-author-link">keymaper</span> on <a href="https://blog.keyman.com/2024/12/keyman-update-for-06-december-2024/#comment-29970">Keyman Update for 06 December 2024</a></li><li class="recentcomments"><span class="comment-author-link">MengHeng Hav</span> on <a href="https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/#comment-25733">Keyman 17.0 is now available in beta</a></li><li class="recentcomments"><span class="comment-author-link">Kannan</span> on <a href="https://blog.keyman.com/2024/02/keyman-17-0-is-now-available-in-beta/#comment-25724">Keyman 17.0 is now available in beta</a></li></ul></div><div id="archives-2" class="widget"><h5>Archives</h5> <ul> <li><a href='https://blog.keyman.com/2025/02/'>February 2025</a></li> <li><a href='https://blog.keyman.com/2025/01/'>January 2025</a></li> <li><a href='https://blog.keyman.com/2024/12/'>December 2024</a></li> <li><a href='https://blog.keyman.com/2024/11/'>November 2024</a></li> <li><a href='https://blog.keyman.com/2024/10/'>October 2024</a></li> <li><a href='https://blog.keyman.com/2024/09/'>September 2024</a></li> <li><a href='https://blog.keyman.com/2024/08/'>August 2024</a></li> <li><a href='https://blog.keyman.com/2024/07/'>July 2024</a></li> <li><a href='https://blog.keyman.com/2024/06/'>June 2024</a></li> <li><a href='https://blog.keyman.com/2024/05/'>May 2024</a></li> <li><a href='https://blog.keyman.com/2024/04/'>April 2024</a></li> <li><a href='https://blog.keyman.com/2024/03/'>March 2024</a></li> <li><a href='https://blog.keyman.com/2024/02/'>February 2024</a></li> <li><a href='https://blog.keyman.com/2024/01/'>January 2024</a></li> <li><a href='https://blog.keyman.com/2023/12/'>December 2023</a></li> <li><a href='https://blog.keyman.com/2023/11/'>November 2023</a></li> <li><a href='https://blog.keyman.com/2023/10/'>October 2023</a></li> <li><a href='https://blog.keyman.com/2023/09/'>September 2023</a></li> <li><a href='https://blog.keyman.com/2023/08/'>August 2023</a></li> <li><a href='https://blog.keyman.com/2023/07/'>July 2023</a></li> <li><a href='https://blog.keyman.com/2023/02/'>February 2023</a></li> <li><a href='https://blog.keyman.com/2022/06/'>June 2022</a></li> <li><a href='https://blog.keyman.com/2022/04/'>April 2022</a></li> <li><a href='https://blog.keyman.com/2022/03/'>March 2022</a></li> <li><a href='https://blog.keyman.com/2021/03/'>March 2021</a></li> <li><a href='https://blog.keyman.com/2020/12/'>December 2020</a></li> <li><a href='https://blog.keyman.com/2020/03/'>March 2020</a></li> <li><a href='https://blog.keyman.com/2019/11/'>November 2019</a></li> <li><a href='https://blog.keyman.com/2019/02/'>February 2019</a></li> <li><a href='https://blog.keyman.com/2019/01/'>January 2019</a></li> <li><a href='https://blog.keyman.com/2018/11/'>November 2018</a></li> <li><a href='https://blog.keyman.com/2018/10/'>October 2018</a></li> <li><a href='https://blog.keyman.com/2018/06/'>June 2018</a></li> <li><a href='https://blog.keyman.com/2018/05/'>May 2018</a></li> <li><a href='https://blog.keyman.com/2017/08/'>August 2017</a></li> <li><a href='https://blog.keyman.com/2017/06/'>June 2017</a></li> <li><a href='https://blog.keyman.com/2016/03/'>March 2016</a></li> <li><a href='https://blog.keyman.com/2015/06/'>June 2015</a></li> <li><a href='https://blog.keyman.com/2015/04/'>April 2015</a></li> <li><a href='https://blog.keyman.com/2015/03/'>March 2015</a></li> <li><a href='https://blog.keyman.com/2015/02/'>February 2015</a></li> <li><a href='https://blog.keyman.com/2015/01/'>January 2015</a></li> <li><a href='https://blog.keyman.com/2014/12/'>December 2014</a></li> <li><a href='https://blog.keyman.com/2014/11/'>November 2014</a></li> <li><a href='https://blog.keyman.com/2014/10/'>October 2014</a></li> <li><a href='https://blog.keyman.com/2014/09/'>September 2014</a></li> <li><a href='https://blog.keyman.com/2014/07/'>July 2014</a></li> <li><a href='https://blog.keyman.com/2014/06/'>June 2014</a></li> <li><a href='https://blog.keyman.com/2014/04/'>April 2014</a></li> <li><a href='https://blog.keyman.com/2014/03/'>March 2014</a></li> <li><a href='https://blog.keyman.com/2014/02/'>February 2014</a></li> <li><a href='https://blog.keyman.com/2014/01/'>January 2014</a></li> <li><a href='https://blog.keyman.com/2013/12/'>December 2013</a></li> <li><a href='https://blog.keyman.com/2013/11/'>November 2013</a></li> <li><a href='https://blog.keyman.com/2013/10/'>October 2013</a></li> <li><a href='https://blog.keyman.com/2013/09/'>September 2013</a></li> <li><a href='https://blog.keyman.com/2013/08/'>August 2013</a></li> <li><a href='https://blog.keyman.com/2013/06/'>June 2013</a></li> <li><a href='https://blog.keyman.com/2013/05/'>May 2013</a></li> <li><a href='https://blog.keyman.com/2013/04/'>April 2013</a></li> <li><a href='https://blog.keyman.com/2012/11/'>November 2012</a></li> <li><a href='https://blog.keyman.com/2012/10/'>October 2012</a></li> <li><a href='https://blog.keyman.com/2012/06/'>June 2012</a></li> <li><a href='https://blog.keyman.com/2012/05/'>May 2012</a></li> <li><a href='https://blog.keyman.com/2012/04/'>April 2012</a></li> <li><a href='https://blog.keyman.com/2012/03/'>March 2012</a></li> <li><a href='https://blog.keyman.com/2012/02/'>February 2012</a></li> <li><a href='https://blog.keyman.com/2011/11/'>November 2011</a></li> <li><a href='https://blog.keyman.com/2011/09/'>September 2011</a></li> <li><a href='https://blog.keyman.com/2011/08/'>August 2011</a></li> <li><a href='https://blog.keyman.com/2011/07/'>July 2011</a></li> <li><a href='https://blog.keyman.com/2011/06/'>June 2011</a></li> <li><a href='https://blog.keyman.com/2011/05/'>May 2011</a></li> <li><a href='https://blog.keyman.com/2011/02/'>February 2011</a></li> <li><a href='https://blog.keyman.com/2010/12/'>December 2010</a></li> <li><a href='https://blog.keyman.com/2010/04/'>April 2010</a></li> <li><a href='https://blog.keyman.com/2010/02/'>February 2010</a></li> <li><a href='https://blog.keyman.com/2010/01/'>January 2010</a></li> <li><a href='https://blog.keyman.com/2009/12/'>December 2009</a></li> <li><a href='https://blog.keyman.com/2009/11/'>November 2009</a></li> <li><a href='https://blog.keyman.com/2009/09/'>September 2009</a></li> <li><a href='https://blog.keyman.com/2009/07/'>July 2009</a></li> <li><a href='https://blog.keyman.com/2009/06/'>June 2009</a></li> <li><a href='https://blog.keyman.com/2009/05/'>May 2009</a></li> <li><a href='https://blog.keyman.com/2008/06/'>June 2008</a></li> <li><a href='https://blog.keyman.com/2007/11/'>November 2007</a></li> <li><a href='https://blog.keyman.com/2007/09/'>September 2007</a></li> <li><a href='https://blog.keyman.com/2007/02/'>February 2007</a></li> <li><a href='https://blog.keyman.com/2006/12/'>December 2006</a></li> <li><a href='https://blog.keyman.com/2006/08/'>August 2006</a></li> </ul> </div><div id="categories-2" class="widget"><h5>Categories</h5> <ul> <li class="cat-item cat-item-2"><a href="https://blog.keyman.com/category/amharic/">Amharic</a> </li> <li class="cat-item cat-item-3"><a href="https://blog.keyman.com/category/android/">Android</a> </li> <li class="cat-item cat-item-4"><a href="https://blog.keyman.com/category/developing-keyboards/">Developing Keyboards</a> </li> <li class="cat-item cat-item-1"><a href="https://blog.keyman.com/category/developing-keyman/developing-keyman-developing-keyman/">Developing Keyman</a> </li> <li class="cat-item cat-item-5"><a href="https://blog.keyman.com/category/developing-keyman/">Developing Keyman</a> </li> <li class="cat-item cat-item-6"><a href="https://blog.keyman.com/category/keyman-for-android/">Keyman for Android</a> </li> <li class="cat-item cat-item-7"><a href="https://blog.keyman.com/category/keyman-for-ipad/">Keyman for iPad</a> </li> <li class="cat-item cat-item-8"><a href="https://blog.keyman.com/category/keyman-for-iphone/">Keyman for iPhone</a> </li> <li class="cat-item cat-item-9"><a href="https://blog.keyman.com/category/keymanweb/">KeymanWeb</a> </li> <li class="cat-item cat-item-30"><a href="https://blog.keyman.com/category/roadmap/">Roadmap</a> </li> <li class="cat-item cat-item-10"><a href="https://blog.keyman.com/category/travel/">Travel</a> </li> <li class="cat-item cat-item-11"><a href="https://blog.keyman.com/category/using-keyman-desktop/">Using Keyman Desktop</a> </li> <li class="cat-item cat-item-12"><a href="https://blog.keyman.com/category/webtech/">Web/Tech</a> </li> </ul> </div><div id="meta-2" class="widget"><h5>Meta</h5> <ul> <li><a href="https://blog.keyman.com/wp-login.php">Log in</a></li> <li><a href="https://blog.keyman.com/feed/">Entries feed</a></li> <li><a href="https://blog.keyman.com/comments/feed/">Comments feed</a></li> <li><a href="https://wordpress.org/">WordPress.org</a></li> </ul> </div><div id="search-1" class="widget"><h5>Search</h5><form role="search" method="get" class="search-form" action="https://blog.keyman.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> </label> <input type="submit" class="search-submit" value="Search" /> </form></div> </aside><!-- .sidebar .widget-area --> </div> </div> </div> </div> <div class="section"> <div class="container"> <div class="row"> <div class="col-md-12"> <h2 class="title text-center">Related Posts</h2> <div class="row"> <div class="col-md-4"> <div class="card card-blog"> <div class="content"> <h6 class="category text-info"><a href="https://blog.keyman.com/category/developing-keyman/developing-keyman-developing-keyman/" title="View all posts in Developing Keyman" >Developing Keyman</a> </h6> <h4 class="card-title"><a class="blog-item-title-link" href="https://blog.keyman.com/2025/02/keyman-update-for-14-february-2025/" title="Keyman Update for 14 February 2025" rel="bookmark">Keyman Update for 14 February 2025</a></h4> <p class="card-description">This blog reports on significant Keyman product and keyboard development updates over the period from 03 February 2025 — 14 February 2025. As always, you can follow all of our development online at github.com/keymanapp/keyman, and<a class="moretag" href="https://blog.keyman.com/2025/02/keyman-update-for-14-february-2025/"> Read more…</a></p> </div> </div> </div> <div class="col-md-4"> <div class="card card-blog"> <div class="content"> <h6 class="category text-info"><a href="https://blog.keyman.com/category/developing-keyman/developing-keyman-developing-keyman/" title="View all posts in Developing Keyman" >Developing Keyman</a> </h6> <h4 class="card-title"><a class="blog-item-title-link" href="https://blog.keyman.com/2025/02/keyman-18-0-is-now-available-in-beta/" title="Keyman 18.0 is now available in beta" rel="bookmark">Keyman 18.0 is now available in beta</a></h4> <p class="card-description">We are excited to announce that Keyman 18.0 is officially in beta! Keyman 18.0 beta is free to download from Keyman downloads website. You are welcome to send us any feedback on Keyman community site.<a class="moretag" href="https://blog.keyman.com/2025/02/keyman-18-0-is-now-available-in-beta/"> Read more…</a></p> </div> </div> </div> <div class="col-md-4"> <div class="card card-blog"> <div class="content"> <h6 class="category text-info"><a href="https://blog.keyman.com/category/developing-keyman/developing-keyman-developing-keyman/" title="View all posts in Developing Keyman" >Developing Keyman</a> </h6> <h4 class="card-title"><a class="blog-item-title-link" href="https://blog.keyman.com/2025/02/keyman-update-for-31-january-2025/" title="Keyman Update for 31 January 2025" rel="bookmark">Keyman Update for 31 January 2025</a></h4> <p class="card-description">This blog reports on significant Keyman product and keyboard development updates over the period from 20 January 2025 — 31 January 2025. The Keyman team is now preparing for beta release of Keyman 18. The<a class="moretag" href="https://blog.keyman.com/2025/02/keyman-update-for-31-january-2025/"> Read more…</a></p> </div> </div> </div> </div> </div> </div> </div> </div> <div class="footer-wrapper"> <footer class="footer footer-black footer-big"> <div class="container"> <ul id="menu-footer" class="footer-menu pull-left"><li id="menu-item-938" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-938"><a href="https://keyman.com">keyman.com</a></li> </ul> <div class="copyright pull-right"> <a href="https://themeisle.com/themes/hestia/" target="_blank" rel="nofollow">Hestia</a> | Powered by <a href="http://wordpress.org" rel="nofollow">WordPress</a> </div> </div> </footer> </div> </div> <div style="display:none"> <div class="grofile-hash-map-93cadad6289ee59a6e522667513bbbd4"> </div> <div class="grofile-hash-map-82f694f1c9013dd5c7afbb8ad6ce17f9"> </div> </div> <script type='text/javascript' src='https://secure.gravatar.com/js/gprofiles.js?ver=202508' id='grofiles-cards-js'></script> <script type='text/javascript' id='wpgroho-js-extra'> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.keyman.com/wp-content/plugins/jetpack/modules/wpgroho.js?ver=9.2.4' id='wpgroho-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-includes/js/comment-reply.min.js?ver=5.6.14' id='comment-reply-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-content/themes/hestia/assets/bootstrap/js/bootstrap.min.js?ver=5.6.14' id='jquery-bootstrap-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-content/themes/hestia/assets/js/material.js?ver=5.6.14' id='jquery-hestia-material-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-content/themes/hestia/assets/js/jquery.matchHeight.js?ver=5.6.14' id='jquery-matchHeight-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-includes/js/jquery/ui/core.min.js?ver=1.12.1' id='jquery-ui-core-js'></script> <script type='text/javascript' id='hestia_scripts-js-extra'> /* <![CDATA[ */ var hestiaViewcart = {"view_cart_label":"View cart","view_cart_link":""}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.keyman.com/wp-content/themes/hestia/assets/js/scripts.js?ver=1.1.30' id='hestia_scripts-js'></script> <script type='text/javascript' src='https://blog.keyman.com/wp-includes/js/wp-embed.min.js?ver=5.6.14' id='wp-embed-js'></script> <script type='text/javascript' src='https://stats.wp.com/e-202508.js' async='async' defer='defer'></script> <script type='text/javascript'> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:9.2.4',blog:'130132192',post:'1256',tz:'0',srv:'blog.keyman.com'} ]); _stq.push([ 'clickTrackerInit', '130132192', '1256' ]); </script> </body> </html> <!-- Dynamic page generated in 0.075 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2025-02-22 12:12:50 --> <!-- Compression = gzip -->