Git Product home page Git Product logo

symwin's Introduction

SymWin ♠

Allows one to type special characters such as å or λ on Windows without the alt-key bullshit or frequent language switching which is just cumbersome.

Inspired by Apple's iOS and OS X keyboard symbol selection, this shows a popup with symbols wherever you are typing.

It looks like this:

screenshot

To type a symbol hold down CAPSLOCK and then (say) the a key. This will show the above popup.

To type an uppercase symbol, simply add SHIFT to the above key sequence.

To cycle options keep pressing the letter key, or use the arrow keys on the keyboard. You can also use the mouse to select a symbol. To go backwards, hold the ALT key in addition to the other keys.

IMPORTANT This is just an initial rough version which is working well for me, but has some known issues. It works particularly well for Microsoft applications which use the Win32 Caret api (SetCaretPos in particular), other applications work but without positioning of the popup at the caret. Instead, the centre of the screen is chosen for these applications.

It is possible to configure one's symbol settings, these will be saved on a per-user basis (see tasktray menu).

It is also possible to temporarily disable SymWin if you need access to CAPSLOCK for instance (see tasktray menu).

How To

A ready-made version can be found here: https://github.com/mjvh80/SymWin/releases .

It is easy to build, however, by running the build.cmd script or using Visual Studio. The steps are:

  • clone this repository
  • run build.cmd or use Visual Studio

Configuring Custom Symbols

Right-clicking on the SymWin tray icon and selecting Configure Symbols opens the dialog.

  • Either type the key while the dropdown is selected, or select the appopriate key from the dropdown
  • Add the character you want to add on that key to the end of both boxes (one is for each case: e.g. é or É)
    • To assign more than one character to a key, just add each character one after another (e.g. type äå for ä and å)

Todo:

  • SymWin does not activate the popup window when the keyboard is used which makes the application appear within the application the user is currently working in. This does not, however, work when the mouse is used (the target application loses focus for a second). I don't currently know how to prevent this. Any help is appreciated.

Nice Features Perhaps:

  • figure out the best way to run in the background with enough privileges to avoid UAC popups or run into UIPI windows issues - this isn't required to use this tool but it'd make it more generally available (and we could create an installer etc)
  • make default symbol mappings depend on the current active keyboard, e.g. a Swedish keyboard doesn't need the å symbol for instance
  • make "hot key" (currently CAPSLOCK) configurable
  • (not sure) dynamically re-order symbols based on usage patterns (e.g. more frequently used symbols are faster to get to)

If you're interested in any of these features feel free to implement them and open a pull request. Otherwise talk to me, I might just be persuaded to implement the feature.

Metro

SymWin does not currently show in Metro because all kinds of special stuff needs to happen:

  • The window requires WS_EX_TOPMOST a flag which WPF does not set if ShowInTaskbar = false, but can be set using SetWindowPos.
  • The application must have uiaccess="true" for which it must be signed using a certificate which must be installed to the Trusted Root Certificate Authority.
  • It must be run from a trusted location, e.g. Prog Files

Is such support realistically possible without being Microsoft?

See http://blogs.microsoft.co.il/pavely/2012/05/16/windows-8-topmost-vs-topmost/ for details.

Finally

I know CAPSLOCK may not appease everyone and my app currently disables it. I never use CAPSLOCK for anything meaningful and it is one of the few key combinations that I could think off that is not already used and is easy to type.

symwin's People

Contributors

kmgb avatar lalten avatar mjvh80 avatar neilbalch 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

symwin's Issues

Memory Leak in WPF

There is a memory leak in WPF in SymWin.
Using dotMemory I did not manage to track it down as the leak appears to reside within WPF itself. Ultimately it will cause SymWin to slow down which suggests that events are being registered (thus stacked into long lists that take time to execute) without being unregistered. But because it's WPF internal I have not managed to find the cause. Perhaps it's related to the low level hook?

Key press order for uppercase symbols

Can we have

  • Shift+Capslock+a (gives äåàáαæ) and
  • Capslock+Shift+a (gives äåàáαæ) behave like
  • Capslock+a+Shift (gives ÄÅÀáאÆ), which is what I would expect?

Prevent mouse down activating the popup.

I don't currently know how to do this. It appears that message hooks on the popup windows do not receive WM_MOUSEACTIVATE which I can thus not block.
Also setting the window to never activate using SetWindowLong causes no keyboard messages etc to be processed at all.

Ideas?

Impact: low, but I am mainly curious to see if it can be done and it would be just that little bit nicer not to have the target application "flash" for a second.

CAPS lock sometimes in incorrect state when started.

Sometimes CAPS lock is enabled when SymWin starts, after which there's no easy way to disable it. There's currently some code in SymWin to attempt to reset CAPS lock but it doesn't appear to work consistently.

Windows 10?

Is this supposed to work in windows 10? I'm trying in a VM, and maybe that is interfering with things somehow, but I cannot get it to work.

I desperately need get a solution to type all sorts of unusual characters without switching layouts all the time (I use a Japanese layout and I'm happy with it), and after a lot of searching I was about to give up, until I found SymWin.

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.