Giter Site home page Giter Site logo

tolikpylypchuk / keyboardswitch Goto Github PK

View Code? Open in Web Editor NEW
49.0 49.0 1.0 4.71 MB

An application which switches typed text as if it were typed with another keyboard layout

Home Page: https://keyboardswitch.tolik.io

License: MIT License

C# 96.86% PowerShell 0.92% Shell 1.93% JavaScript 0.23% Batchfile 0.06%
avaloniaui c-sharp keyboard-layout reactiveui

keyboardswitch's People

Contributors

tolikpylypchuk avatar worldbeater avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

esmaeli

keyboardswitch's Issues

Save and restore the clipboard state in instant mode

When the app switches text in instant mode, it overwrites the clipboard. This is not a problem if clipboard history is enabled, but even then it's a nuisance. The previous clipboard state (if any) shoud be saved before putting the text into the clipboard and then restored after switching the text.

Enable the converter on Linux and macOS

Show the converter on Linux and macOS and hide just the auto-configuration of converter since I don't want to spend time on that. The converter itself is platform-agnostic, so there's no reason it should be completely disabled.

Package the app for Linux

Investigate whether packaging the app as a deb package is doable, in addition to the simple tar.gz. Also, an RPM package would be nice.

Simulate pressing Ctrl+C/Ctrl+V on Linux

In order for instant switching to work, the app should simulate pressing Ctrl+C and Ctrl+V. The solution used on Windows is not cross-platform, so a new one should be implemented here.

Sometimes a keyboard layout disappears from the system

I'm not 100% sure that this has anything to do with KeyboardSwitch, but after implementing auto-configuration for the converter (which loads and unloads keyboard layouts), one of my installed layouts started randomly disappearing, even though it's listed as one of the layouts in Settings.

Update UI

The UI needs to be updated. For example, the list of languages and the hot keys window. Possibly, something else, too.

Create an installer for the application

At the moment the application is portable which is not really good, because it uses low-level keyboard hooks that are deemed dangerous by anti-viruses and therefore it may get blocked.

Restructure the project

All source files are currently in a single directory. They should be grouped into folders.

Add auto-setting character mappings

Configuring character mappings is tiring and error-prone even if it's done once and is quite easy. Still, it would be much better if the app converted each virtual key into a character for each layout, removed the duplicates somehow (e.g. by replacing all duplicate characters with spaces), and the user took from there, only slightly tweaking the settings if need be.

Create taskbar actions

The switch actions are in the context menu of the tray icon. It would be nice if they were in the taskbar, too.

Add systemd integration for Linux

Since the service app can now run as a systemd service (and this is also how starting at login is implemented), the settings app should communicate with the settings app through systemd if possible.

Add installation and usage instructions to README.md

Hello @TolikPylypchuk and thanks for the great open-source application! Just tested on my Windows PC, so far works well. Browsing the source code here was a real pleasure, noticed a few curious patterns, including ReactiveForm and localization pattern for ReactiveUI.Validation. However, worth adding a bit more verbose getting started documentation to README.md, which a user could easily follow to get KeyboardSwitch up and running on their machine.

By the way, it would be really nice to have your application listed on the Samples page on the ReactiveUI website. Please consider opening a PR to our website repository (Avalonia samples section) linking the source code of the application, once you feel the app is ready to get listed there ๐Ÿฅฐ
Thank you!

Implement checking for updates

Auto-updating is probably too advanced for me at the moment, but at least checking for updates can be done simply by putting a file with the latest version on GitHub and the settings app checking this file out.

Show the current caret position inside character mapping text boxes

The correct configuration of character mappings depends on positions of characters. So it matters a lot that the user sees which character corresponds to which ones in different layouts. A monosapced font helps, but showing the actual position of the caret would be much better.

Store mappings in local app data

It would be better to store mappings separately in case the app gets reinstalled. The most logical place would be the local app data.

Update readme

It would be better to have readme as an HTML document instead of plain text.

Implement logging to rolling files

Implement logging into a file for both the background service and the settings app. Since the servcie is expected to run indefinitely, consider rolling files for logging.

Update tab indices when moving mappings

The the user moves a mapping left or right, the tab indices of the corresponding letter boxes are not updated, which results in focus jumping back and forth on tab press.

Create a worker which switches the text

Create a headless background worker which will have the switching functionality. Investigate the possibility of this worker being implemented as a Windows service.

Hide the converter by default

The converter is needed extremely rarely, so it should be hidden most of the time. Add yet another check-box to preferences to hide it.

Make the app cross-platform

.NET Core is cross-platform, so the service app can work on Linux. The settings UI should be implemented in Avalonia, and the ReactiveUI view models should be extracted into a separate project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.