{"id":27011966,"url":"https://github.com/zrafa/onscreenkeyboard","last_synced_at":"2025-04-04T11:38:59.427Z","repository":{"id":19645118,"uuid":"22897515","full_name":"zrafa/onscreenkeyboard","owner":"zrafa","description":"on-screen keyboard ideas","archived":false,"fork":false,"pushed_at":"2018-02-02T10:45:09.000Z","size":53,"stargazers_count":20,"open_issues_count":5,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-03-23T02:05:38.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zrafa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-13T00:50:59.000Z","updated_at":"2023-01-23T13:51:33.000Z","dependencies_parsed_at":"2022-08-24T04:50:32.654Z","dependency_job_id":null,"html_url":"https://github.com/zrafa/onscreenkeyboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrafa%2Fonscreenkeyboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrafa%2Fonscreenkeyboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrafa%2Fonscreenkeyboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrafa%2Fonscreenkeyboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zrafa","download_url":"https://codeload.github.com/zrafa/onscreenkeyboard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247173828,"owners_count":20896070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-04T11:38:58.299Z","updated_at":"2025-04-04T11:38:59.417Z","avatar_url":"https://github.com/zrafa.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"onscreenkeyboard\n================\n\n\nThis is a framebuffer on-screen keyboard proof of concept\nfor text console or X. Might be usefull at boot time for accessibility.\nCurrently, you can move or roll the mouse/trackball to the proper key, then hit the left mouse button to send the keystroke to the system, like a real keyboard.\n\n\n```\n * Copyright (C) 2014 Rafael Ignacio Zurita \u003crafaelignacio.zurita@gmail.com\u003e\n *\n *   osk.c and osk_mouse.c is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version. Check COPYING file.\n```\n\nosk_mouse.c and osk.c source file implements this.\n\n - No extra libraries. Great for using at boot time :\n```\n\t# ldd osk_mouse\n        linux-gate.so.1 \n        libc.so.6 =\u003e /lib/i386-linux-gnu/i686/cmov/libc.so.6 \n        /lib/ld-linux.so.2 \n```\n - on scren keyboard using framebuffer. Ok for console\n - it sends keystrokes using uinput\n\nCheck the videos to know the idea and proof of concept working :\n\nhttp://youtu.be/TwYQzoEr5Lw\n\nhttp://youtu.be/zHOJGq4hkpg\n\n\nHow to use\n==========\n\nMouse/trackball version\n-----------------------\n\n```\n# Be sure that /dev/input/mice is your real mouse/trackball, \n# you need it to choose keys from onscreen keyboard\n# Check which is your framebuffer device (/dev/fb0, /dev/fb1, etc)\n\nmake\nmodprobe uinput\n# run on text console or X\n./osk_mouse \u0026  #YOU NEED TO BE ROOT\n\nThe 'E' symbol is ENTER. 'B' backspace.\n\n```\n\nKeyboard version\n----------------\n\n```\n# Be sure that /dev/input/event0 is your real keyboard, \n# you need it to choose keys from onscreen keyboard\n\nmake\nmodprobe uinput\n# run on text console or X\n./osk \u0026  #YOU NEED TO BE ROOT\n\n# Use \"END\" key from your keyboard to choose a key from the\n# on screen keyboard. Otherwise your console or bash\n# could get two keys, the one you pressed and the choosed\n# from the on screen keyboard.\n\n# When you want to exit, you should press your \"END\" key in your\n# keyboard when green box dissappear from keyboard on screen\n# for two seconds. That happens every time it reachs to the \n# end of the on screen keyboard keys\n\n```\n\nYou will see the on screen keyboard on console on top of framebuffer.\nThere is green box which go from \"a\" to \"z\" delaying one second\non every letter. YOu have \"E\" for ENTER after \"z\"\nWhen you press the \"End\" key on your real keyboard, you choose\nthe letter where green box is, and the program sends a \nproper keystrokes to the system using uinput.\n\nFor example, if green box is under \"l\", and you press the \"END\" key\non your keyboard, you will see the \"l\" showed on console, like\nif you would had pressed the \"l\" key.\n\n\n\nOld ideas\n=========\n\nThe idea is :\n\n - draw a keyboard on framebuffer\n - someway to choose a key from that keyboard\n - send keystrokes to the Linux system as a real keyboard\n\nFor all the 3 ideas we already have examples to start.\n\nIf we ldd all the binaries for these examples we \nverify that these use just the below libraries :\n        linux-gate.so.1 (0xb7785000)\n        libc.so.6 =\u003e /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb75a2000)\n        /lib/ld-linux.so.2 (0xb7786000)\n\nwhich is that we want, in order to have on-screen keyboard ready on boot time.\n\n\nThe image.ppm is the keyboard image. We did it with Gimp and exported as raw ppm.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzrafa%2Fonscreenkeyboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzrafa%2Fonscreenkeyboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzrafa%2Fonscreenkeyboard/lists"}