{"id":33071204,"url":"https://github.com/maximcus/WPFTabTip","last_synced_at":"2025-11-19T03:02:06.300Z","repository":{"id":144199922,"uuid":"65710822","full_name":"maximcus/WPFTabTip","owner":"maximcus","description":"Simple TabTip / Virtual Keyboard integration for WPF apps on Win 8.1 and Win 10","archived":false,"fork":false,"pushed_at":"2018-05-13T14:20:15.000Z","size":50,"stargazers_count":105,"open_issues_count":16,"forks_count":47,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-08-19T22:51:36.819Z","etag":null,"topics":["osk","tabtip","virtual-keyboard","wpf"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximcus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-08-15T06:46:33.000Z","updated_at":"2025-07-11T05:12:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"df378831-469f-4447-8fac-f62d79501eff","html_url":"https://github.com/maximcus/WPFTabTip","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/maximcus/WPFTabTip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcus%2FWPFTabTip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcus%2FWPFTabTip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcus%2FWPFTabTip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcus%2FWPFTabTip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximcus","download_url":"https://codeload.github.com/maximcus/WPFTabTip/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcus%2FWPFTabTip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285175517,"owners_count":27127379,"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","status":"online","status_checked_at":"2025-11-19T02:00:05.673Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["osk","tabtip","virtual-keyboard","wpf"],"created_at":"2025-11-14T09:00:30.296Z","updated_at":"2025-11-19T03:02:06.287Z","avatar_url":"https://github.com/maximcus.png","language":"C#","funding_links":[],"categories":["Libraries"],"sub_categories":["Individual Controls"],"readme":"# WPFTabTip\nSimple TabTip / Virtual Keyboard integration for WPF apps on Win 8.1 and Win 10\n\n## Simple to use\n\nThe easiest way to install the WPFTabTip is using the [Package Manager Console](https://docs.NuGet.org/consume/package-manager-console) in Visual Studio:\n\n~~~powershell\nPM\u003e Install-Package WPFTabTip\n~~~\n\nOne line of code in your startup logic, and you good to go!\n\n```c#\nTabTipAutomation.BindTo\u003cTextBox\u003e();\n```\n\nYou can bind TabTip automation logic to any `UIElement`. Virtual Keyboard will open when any such element will get focus, and it will close when element will lose focus. Not only that, but `TabTipAutomation` will move `UIElement` (or `Window`) into  view, so that TabTip will not block focused element.\n\n## Hardware keyboard detection\n\nBy default TabTip automation will occur only if no hardware keyboard is detected.\n\nYou can change that behavior by setting `TabTipAutomation.IgnoreHardwareKeyboard` to any of the following values:\n\n```c#\npublic enum HardwareKeyboardIgnoreOptions\n    {\n        /// \u003csummary\u003e\n        /// Do not ignore any keyboard.\n        /// \u003c/summary\u003e\n        DoNotIgnore,\n\n        /// \u003csummary\u003e\n        /// Ignore keyboard, if there is only one, and it's description \n        /// can be found in ListOfKeyboardsToIgnore.\n        /// \u003c/summary\u003e\n        IgnoreIfSingleInstanceOnList,\n\n        /// \u003csummary\u003e\n        /// Ignore keyboard, if there is only one.\n        /// \u003c/summary\u003e\n        IgnoreIfSingleInstance,\n        \n        /// \u003csummary\u003e\n        /// Ignore all keyboards for which the description \n        /// can be found in ListOfKeyboardsToIgnore\n        /// \u003c/summary\u003e\n        IgnoreIfOnList,\n\n        /// \u003csummary\u003e\n        /// Ignore all keyboards\n        /// \u003c/summary\u003e\n        IgnoreAll\n    }\n```\n\nIf you want to ignore specific keyboard you should set `TabTipAutomation.IgnoreHardwareKeyboard` to either `IgnoreIfSingleInstanceOnList` or `IgnoreIfOnList`, and add keyboard description to `TabTipAutomation.ListOfKeyboardsToIgnore`.\n\nTo get description of keyboards connected to machine you can use following code:\n\n```c#\nnew ManagementObjectSearcher(new SelectQuery(\"Win32_Keyboard\")).Get()\n                .Cast\u003cManagementBaseObject\u003e()\n                .SelectMany(keyboard =\u003e\n                    keyboard.Properties\n                        .Cast\u003cPropertyData\u003e()\n                        .Where(k =\u003e k.Name == \"Description\")\n                        .Select(k =\u003e k.Value as string))\n                .ToList();\n```\n\n## Change keyboard layout\n\nTo specify keyboard layout to be used with certain element you can set `InputScope` property in xaml to one of the following:\n- Default\n- Url\n- EmailSmtpAddress\n- Number\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximcus%2FWPFTabTip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximcus%2FWPFTabTip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximcus%2FWPFTabTip/lists"}