Skip to content
/ YAKC Public

YAKC is a Key/Mouse Click Visualizer - Perfect for content creators, developers or presentations!

License

Notifications You must be signed in to change notification settings

iammodev/YAKC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YAKC - Yet Another Key Caster

yakc-logo

YAKC is an open-source cross-platform Key & Mouse Click visualizer useful for content creators, developers or presentations!.

Big News!

I decided to try to migrate from Electron to Tauri. So I'll try to get this done quickly. I don't even know if it's possible yet, we'll see, what problems I will have to solve. Wish me luck! I am LIVE right now Twitch (Date: 11/8/2023).

Update! 11/9/2023

Good News! I have made big progress in understanding Rust and I can say that YAKC will be migrated to Tauri!

What does this mean: YAKC will be smaller than ~10MB, Performance will be insanely fast without eating much CPU/RAM. I'll be documenting my progress on Twitch!

Features

YAKC-edited

Appereance

  • Display Key & Mouse clicks and coordinates
  • Choose between Keyboard layouts
  • Highly customizable (size, opacity, text/background color, font, boldness, cornered/pointy corners)
  • Position and Offset (top-left, top-right, bottom-left, bottom-right)
  • Smooth fade transition upon remove

Behaviour

  • Display on any selected Monitor
  • Keystroke display (Modifiers only, Keystroke2Unicode)
  • Text-to-speech for each keystroke (perfect for blind people)

User Security

  • Automatic: Start capturing keystrokes when selected process is focused.
  • Manual: Right-click the tray icon to toggle keystroke capturing.

Prerequisites

  • Node.js installed on your system.
  • Electron for building and running the application.

Installation

  1. Clone the repository to your local machine:
git clone https://github.com/iammodev/YAKC.git
  1. cd YAKC

  2. npm install

  3. cd ./node_modules/@mechakeys/iohook

  4. npm install

  5. node install.js

  6. Go to Usage

Usage

  1. Make sure you are in folder ./YAKC/
  2. Start the application: npm start
  3. The application will launch and display a system tray icon.
  4. Upon pressing on any key, a popup will appear.

Build

  1. npm install --save-dev electron-packager

  2. npm run package:windows (Options: package:windows, package:mac, package:linux, package:all)

  3. run executable

Buy me a coffee

Buy Me A Coffee

ko-fi

Configuration

The configuration file ./resources/app/config.json allows you to customize the behavior of YAKC. Here are the available options:

  • keyboardLayout: Select Keyboard Layout. (options: english, german)

  • showOnMonitor: Specifies the monitor on which the pop-up text should be displayed. The value should be the index of the monitor (starting from 0)

  • popupTextMaxWidthInPercentage: Specifies the maximum width of the pop-up text as a percentage of the screen width

  • popupOpacity: Opacity of the popup text. Range: "0.0" - "1"

  • popupFadeInSeconds: Duration of Fade effect for the popup text

  • popupRemoveAfterSeconds: Remove inactive popup after X seconds

  • popupInactiveAfterSeconds: After X seconds, a new popup will be created upon key/mouse press

  • popupFontSize: Font size of popup text

  • popupFontColor: Font color of popup text

  • popupFontFamily: Font Family for the text

  • popupFontWeight: Font weight of popup text

  • popupBorderRadius: Corner border radius. Use "0" for sharp corners

  • popupBackgroundColor: Background color of popup text

  • showMouseClick: Show mouse clicks. Options: true, false

  • showMouseCoordinates: Show mouse coordinates. Options: true, false

  • showKeyboardClick: Show Keyboard clicks. Options: true, false

  • onlyKeysWithModifiers: Show only keys with modifiers. Options: true, false

  • showSpaceAsUnicode: Show space as Unicode character (␣). Options: true, false

  • textToSymbols: Change some Keystrokes to Unicode Characters (example: Tab to ↹). Options: true, false

  • textToSpeech: Speak out loud every Keystroke. (perfect for blind people!). Options: true, false

  • textToSpeechCancelSpeechOnNewKey: Cancels current SpeechToText if new Keystroke pressed. Options: true, false

  • position: Position of popup on screen. Options: "top-left", "top-right", "bottom-left", and "bottom-right"

  • topOffset: Top offset of the popup text in pixels

  • bottomOffset: Bottom offset of the pop-up text in pixels

  • leftOffset: Left offset of the pop-up text in pixels

  • rightOffset: Right offset of the pop-up text in pixels

  • filter: Whether to enable the filter function. Options: true, false

  • filterProcessName: Process Name(s) to start listening to any keystrokes when process is focused. Options: ["app1.exe, app2.exe"]

  • filterCheckEverySecond: How often to check if active window includes the filter Process(es)

TODO:

  • Reliable solution for all/common keyboard layouts
  • Improve user security to prevent the display of sensitive information.
  • position (top-left, top-right, bottom-left, bottom-right)
  • topOffset, bottomOffset, leftOffset, rightOffset
  • GUI to easily configure at runtime
  • Drag and Drop the popup to desired position
  • Add hotkey for start/stop listening to keystrokes
  • Add unit tests

Related

  • iohook for capturing keyboard & mouse input.
  • active-win to get metadata about the focused process.

Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.

Everyone can contribute!

We require an extensive collection of Keyboard Layouts to accommodate a wide range of languages and input methods.

Security Assurance

YAKC is free and open source. YAKC operates independently without any network interactions. Your private information, including passwords, is never stored or shared by YAKC, guaranteeing your safety and privacy.

Please Exercise Caution: When using YAKC for activities like presentation, recording or streaming, be mindful not to inadvertently share sensitive information. Always ensure your privacy and the security of any confidential data.

License

This project is licensed under the MIT License. See the LICENSE file for details.