All Projects โ†’ JeffersonQin โ†’ Ayase

JeffersonQin / Ayase

Licence: MIT license
๐Ÿฅฅ Control everything by keyboard. Built for hackers and the blind.

Programming Languages

C#
18002 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Ayase

Xmouse Controls
Windows utility to enable or disable active window tracking, raising and also the delay in milliseconds. This is known as x-mouse behavior or focus follows mouse.
Stars: โœญ 122 (+130.19%)
Mutual labels:  accessibility, wpf, mouse
Neatinput
A .NET standard project which aims to make keyboard and mouse input monitoring easy on Windows and eventually Linux.
Stars: โœญ 89 (+67.92%)
Mutual labels:  keyboard, mouse, win32
Rkvm
Virtual KVM switch for Linux machines
Stars: โœญ 237 (+347.17%)
Mutual labels:  keyboard, mouse
Enigo
Cross platform input simulation in Rust
Stars: โœญ 254 (+379.25%)
Mutual labels:  keyboard, mouse
intuiter
Global productivity app for anyone who use Windows
Stars: โœญ 24 (-54.72%)
Mutual labels:  keyboard, mouse
mouseable
'Mouseable' is intended to replace a mouse or trackpad.
Stars: โœญ 418 (+688.68%)
Mutual labels:  keyboard, accessibility
Windows User Action Hook
A .NET library to subscribe for Windows operating system global user actions such mouse, keyboard, clipboard & print events
Stars: โœญ 224 (+322.64%)
Mutual labels:  keyboard, mouse
snake
A stylised graphical tool for configuring and controlling Razer devices on Linux
Stars: โœญ 52 (-1.89%)
Mutual labels:  keyboard, mouse
Mouse2joystick custom cemu
An AutoHotkey Script to allow the use of Mouse and Keyboard control in CEMU. This uses vJoy and provides several additional features over regular keyboard control, like: the ability to control the camera with the mouse, toggle walking speed, in BotW use MouseWheel to change weapons, a separate Toggle key for ZL useful for locking onto a target in BotW.
Stars: โœญ 76 (+43.4%)
Mutual labels:  keyboard, mouse
keynavish
Control the mouse with the keyboard, on Windows.
Stars: โœญ 59 (+11.32%)
Mutual labels:  keyboard, accessibility
habits
An application to monitor your habits with your PC. So you can study how many kilometers travel with your mouse or how many keystrokes.
Stars: โœญ 19 (-64.15%)
Mutual labels:  keyboard, mouse
uchroma
An advanced driver for Razer Chroma hardware in Linux
Stars: โœญ 45 (-15.09%)
Mutual labels:  keyboard, mouse
Hidusbf
USB Mice Overclocking Software (for Windows)
Stars: โœญ 152 (+186.79%)
Mutual labels:  keyboard, mouse
Ally.js
JavaScript library to help modern web applications with accessibility concerns
Stars: โœญ 1,447 (+2630.19%)
Mutual labels:  keyboard, accessibility
Xboxkeyboardmouse
Keyboard and mouse for Xbox One streaming on Windows 10
Stars: โœญ 235 (+343.4%)
Mutual labels:  keyboard, mouse
keyboard mouse emulate on raspberry
Bluetooth Keyboard Mouse Emulator on Raspberry Pi
Stars: โœญ 230 (+333.96%)
Mutual labels:  keyboard, mouse
creating-controls-in-assembler
Gitbook: https://mrfearless.gitbooks.io/creating-controls-in-assembler
Stars: โœญ 20 (-62.26%)
Mutual labels:  win32, win32api
Keymousego
็ฑปไผผๆŒ‰้”ฎ็ฒพ็ต็š„้ผ ๆ ‡้”ฎ็›˜ๅฝ•ๅˆถๅ’Œ่‡ชๅŠจๅŒ–ๆ“ไฝœ ๆจกๆ‹Ÿ็‚นๅ‡ปๅ’Œ้”ฎๅ…ฅ | automate mouse clicks and keyboard input
Stars: โœญ 1,145 (+2060.38%)
Mutual labels:  keyboard, mouse
Globalhooks
Allows you to create global keyboard events
Stars: โœญ 74 (+39.62%)
Mutual labels:  keyboard, mouse
dasher-web
Dasher text entry in HTML, CSS, JavaScript, and SVG
Stars: โœญ 34 (-35.85%)
Mutual labels:  keyboard, accessibility

Ayase

็ฎ€ไฝ“ไธญๆ–‡ | For Simplified Chinese version, please click here

Ayase is a tool which can help you to control everything by keyboard. This is specifically designed for lazy people like me and blind people. It is known to all that in the most cases, we have to control the computer by both mouse and keyboard. However, the frequent switch for our hand between mice and keyboards would severely threaten the health of our wrists. Meanwhile, for blind people, though in most cases, it is convenient enough to use the screen readers to control elements on screen, most softwares cannot control both precisely and swiftly. You have to wait for the element or switch many times to find the element you want to control. With Ayase, these problems are all solved.

Screenshots

Use Ayase to control Netease Music UWP:

netease-demo

Use Ayase to surf on the Internet:

surf-internet-demo

About Naming (Ayase)

I love Mitsukasa Ayase forever!

https://zh.moegirl.org.cn/ไธ‰ๅธ็ปซๆฟ‘

Features

  • Support high DPI, different DPI across multiple monitors, cross monitor display
  • Support Chrome-based Apps (e.g. Github Desktop)
  • Support Electron Apps (e.g. Visual Studio Code)
  • Support WinForms, WPF, UWP (e.g. Netease Music UWP)
  • Support the self-developed UI frameworks (e.g. Wechat & QQ of Tencent Inc.)
  • Scanning of UI tree with high speed
  • Support pinyin for Chinese (e.g. ็ฝ‘ๆ˜“ไบ‘ โ†’ wyy / wangyiyun)
  • Ignore upper and lower case

For the discussion on accessibility development and speed optimization, please refer to my following articles. Finally, the implementation scheme I adopted is to use C++ to invoke Win32API / uiautomation.h and compile into dll (dynamic link library). Then, I used P/Invoke in the C# / WPF project to use the library. In most cases, the performance was improved for about 80%.

Note that I do not have additional time and effort to translate those articles into English. Using translators can also understand the articles well. If you still have any questions or advice, you can contact me directly. You can find ways to contact me in my GitHub homepage. This is the first time I write WPF / C# this formally, so if you have any advice, please don't hesitate to raise issues or pull requests.

Project Structure

.
โ”œโ”€โ”€ Ayase                                   # Ayase Project
โ”‚   โ”œโ”€โ”€ AccessibilityBridge                 # P/Invoke bridge for .dll
โ”‚   โ”‚   โ”œโ”€โ”€ GNativeIUIAutomationManager.cs
โ”‚   โ”‚   โ””โ”€โ”€ GNativeUIElement.cs
โ”‚   โ”œโ”€โ”€ App.xaml
โ”‚   โ”œโ”€โ”€ App.xaml.cs                         # Entrance
โ”‚   โ”œโ”€โ”€ AssemblyInfo.cs
โ”‚   โ”œโ”€โ”€ AutomationLib                       # Most of them are no longer used. Serve as alternatives
โ”‚   โ”‚   โ”œโ”€โ”€ GAutomationManager.cs
โ”‚   โ”‚   โ”œโ”€โ”€ GIUIAutomationManager.cs
โ”‚   โ”‚   โ”œโ”€โ”€ GMSAAManager.cs
โ”‚   โ”‚   โ”œโ”€โ”€ GRawUIManager.cs
โ”‚   โ”‚   โ”œโ”€โ”€ GUIElement.cs
โ”‚   โ”‚   โ””โ”€โ”€ Wrapper                         # Wrapper for Win32API used in this section
โ”‚   โ”‚       โ”œโ”€โ”€ ObjectIdentifiers.cs
โ”‚   โ”‚       โ”œโ”€โ”€ RECT.cs
โ”‚   โ”‚       โ”œโ”€โ”€ ReferenceIdentifiers.cs
โ”‚   โ”‚       โ””โ”€โ”€ Win32API.cs
โ”‚   โ”œโ”€โ”€ Ayase.csproj
โ”‚   โ”œโ”€โ”€ Ayase.csproj.user
โ”‚   โ”œโ”€โ”€ HotkeyLib                           # Global hotkey wrapping
โ”‚   โ”‚   โ”œโ”€โ”€ GHotKey.cs
โ”‚   โ”‚   โ”œโ”€โ”€ GKeybdEvent.cs
โ”‚   โ”‚   โ””โ”€โ”€ VirtualKeys.cs
โ”‚   โ”œโ”€โ”€ MouseLib                            # Mouse control wrapping
โ”‚   โ”‚   โ””โ”€โ”€ GMouse.cs
โ”‚   โ”œโ”€โ”€ Properties
โ”‚   โ”‚   โ””โ”€โ”€ launchSettings.json
โ”‚   โ”œโ”€โ”€ ScreenLib                           # Screen library wrapping
โ”‚   โ”‚   โ””โ”€โ”€ PrimaryScreen.cs
โ”‚   โ”œโ”€โ”€ ThreadLib                           # Private thread pool
โ”‚   โ”‚   โ””โ”€โ”€ GThreadPool.cs
โ”‚   โ””โ”€โ”€ UI                                  # UI
โ”‚       โ”œโ”€โ”€ FormMaskWindow.xaml
โ”‚       โ”œโ”€โ”€ FormMaskWindow.xaml.cs
โ”‚       โ”œโ”€โ”€ MaskWindow.cs
โ”‚       โ”œโ”€โ”€ NotationLabel.cs
โ”‚       โ”œโ”€โ”€ ReuseWindow.cs
โ”‚       โ”œโ”€โ”€ ScreenMaskWindow.xaml
โ”‚       โ”œโ”€โ”€ ScreenMaskWindow.xaml.cs
โ”‚       โ”œโ”€โ”€ SearchWindow.xaml
โ”‚       โ”œโ”€โ”€ SearchWindow.xaml.cs
โ”‚       โ”œโ”€โ”€ SettingsWindow.xaml
โ”‚       โ”œโ”€โ”€ SettingsWindow.xaml.cs
โ”‚       โ””โ”€โ”€ WindowManager.cs                # Windows scheduling
โ”œโ”€โ”€ Ayase.Accessibility                     # dll project
โ”‚   โ”œโ”€โ”€ Ayase.Accessibility.vcxproj
โ”‚   โ”œโ”€โ”€ Ayase.Accessibility.vcxproj.filters
โ”‚   โ”œโ”€โ”€ Ayase.Accessibility.vcxproj.user
โ”‚   โ”œโ”€โ”€ GConstant.h                         # Some constants
โ”‚   โ”œโ”€โ”€ GIUIAutomationManager.cpp           # Main implementation
โ”‚   โ”œโ”€โ”€ GIUIAutomationManager.h
โ”‚   โ”œโ”€โ”€ GUIElement.cpp                      # Wrapping for data structure
โ”‚   โ”œโ”€โ”€ GUIElement.h
โ”‚   โ”œโ”€โ”€ dllmain.cpp
โ”‚   โ”œโ”€โ”€ framework.h
โ”‚   โ”œโ”€โ”€ pch.cpp
โ”‚   โ””โ”€โ”€ pch.h
โ””โ”€โ”€ Ayase.sln

The TOC for generated project:

.
โ”œโ”€โ”€ ...
โ”œโ”€โ”€ Ayase.Accessibility.dll
โ””โ”€โ”€ <.net target>
    โ”œโ”€โ”€ ...
    โ””โ”€โ”€ Ayase.exe

Dependencies

  • Microsoft.Toolkit.Uwp.Notifications
  • Notifications.Wpf
  • ToolGood.Words

Usage

  • Start UI Scanning: Alt + CapLocks (We would adjust the status of CapLocks automatically)
  • Exit UI Scanning: Esc
  • Next Element: Tab
  • Previous Element: Shift + Tab
  • Click the Selected Element: Enter
  • Move the mouse to the Selected Element: Shift + Enter

TODO

Note: most modules have been completed but not released here due to license issues. I am now making effort to crafting new alternatives that are compatible with MIT license.

  • Add voice module
  • Add settings module
  • Add support for control by AWSD
  • Add pure mouse mode
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].