{"id":771,"date":"2026-03-17T14:11:24","date_gmt":"2026-03-17T03:11:24","guid":{"rendered":"https:\/\/securelang.net\/cms\/?p=771"},"modified":"2026-03-17T14:11:24","modified_gmt":"2026-03-17T03:11:24","slug":"blitting-mouse-input-now-works","status":"publish","type":"post","link":"https:\/\/securelang.net\/cms\/blog\/2026\/03\/17\/blitting-mouse-input-now-works\/","title":{"rendered":"Blitting &amp; Mouse Input Now Works"},"content":{"rendered":"\n<p>An initial version of my GUI API is now complete but not yet ready for detailed screenshots. I may upload some initial output from my new <em>guitest<\/em> program later.<\/p>\n\n\n\n<p>This kernel-level API is reasonably well designed and should be flexible enough for future extension, but for now only covers the most basic operations of blitting to a screen and receiving associated mouse\/touch input (with keyboard input half connected but unfinished for now, i.e. without keymap support).<\/p>\n\n\n\n<p>Further experimentation particularly focused on performance &amp; reliability will determine whether to expand the kernel-level API into a full GUI system or whether to leave it as basic drivers and use a portable graphics server such as <em>Nano-X <\/em> (the kernel-level interface is designed for both possibilities but windowing is not yet fully implemented in the kernel).<\/p>\n\n\n\n<p>The choice was specifically made to offer a simple and easy to document interface rather than to require opening multiple different devices or configure modes from the program&#8217;s end for basic operations, the system is tuned for simple &#8220;framebuffer and mouse pointer&#8221; operations.<\/p>\n\n\n\n<p>In summary this should be one of the better implementations of a graphics API as far as programmers are concerned, and is very easy to operate &amp; extend with a minimum of fuss required at the program&#8217;s end to push pixels to a graphics output and receive events associated with the same screen (whether a physical screen or, later, a windowed abstraction).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An initial version of my GUI API is now complete but not yet ready for detailed screenshots. I may upload some initial output from my new guitest program later. This kernel-level API is reasonably well designed and should be flexible enough for future extension, but for now only covers the most basic operations of blitting [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-771","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/posts\/771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":1,"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"predecessor-version":[{"id":772,"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/posts\/771\/revisions\/772"}],"wp:attachment":[{"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/securelang.net\/cms\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}