Coder Social home page Coder Social logo

carnac's Introduction

Carnac the Magnificent Keyboard Utility

Join the chat at https://gitter.im/Code52/carnac

A keyboard logging and presentation utility for presentations, screencasts, and to help you become a better keyboard user.

Build Status

Build status

Installation

You can install the latest version of Carnac via Chocolatey:

cinst carnac

Alternatively, you can grab the latest zip file from here, unpack it and run Setup.exe.

Note: Carnac requires .NET 4.5.2 to work - you can install that from here if you don't have it already.

Updating

We use Squirrel.Windows to update your carnac application.

The application will check for updates in the background, if a new version has been released, it will automatically install the new version and once you restart carnac you will be up-to-date.

Usage

Enabling silent mode

If you want to stop Carnac from recording certain key strokes, you can enter silent mode by pressing Ctrl+Alt+P. To exit silent mode you simply press Ctrl+Alt+P again.

Contributing

Getting started with Git and GitHub

Once you're familiar with Git and GitHub, clone the repository and run the .\build.cmd script to compile the code and run all the unit tests. You can use this script to test your changes quickly.

Resources

This blog series covers a series of refactorings which have recently happened in Carnac to make better use of Rx. If you are learning Rx and want to be shown through Carnac's codebase then this blog series may help you.

Part 1 - Refactoring the InterceptKeys class
Part 2 - Refactoring the MessageProvider class
Part 3 - Introducing the MessageController class

carnac's People

Contributors

0x49d1 avatar 8176135 avatar andrewtobin avatar ash258 avatar bfritscher avatar brooklyndev avatar dependabot[bot] avatar dustinvenegas avatar eajhnsn1 avatar gdh1995 avatar gitter-badger avatar havef avatar hnrkndrssn avatar hodavand avatar jakeginnivan avatar jongalloway avatar justo78 avatar killnine avatar leecampbell avatar michaelloewenstein avatar mikelluri avatar shanselman avatar shiftbot avatar shiftkey avatar shiftkey-tester avatar steck 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  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  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

carnac's Issues

Support different cultures (de-de f.e)

Some places i had to rework to make it work with a german Keyboard. Adding more configuration capabilities in that matter would be cool.

ReplaceKey.cs => in German some Keys map differnt. (Config file instead of hard code?)

Message.cs (I did a hack to get it right):
Special Characters like "","|","~","{",... on german Keyboards are only reachable by hitting CTRL+ALT + key. In this cases i want to have the character shown not the combination:
"CTRL+ALT+ß" == "" - Shows CTRL+ALT+ß instead

ShortcutProvider.cs:
I had to fix how you read the yml files as they did not read the Encoding correct, so my "ü" was lost.

            // GERMAN
            CultureInfo pt = CultureInfo.GetCultureInfo("de-de");
            StreamReader sr = new StreamReader(file, Encoding.GetEncoding(pt.TextInfo.ANSICodePage), true);
            yaml.Load(sr);
            // GERMAN
            // yaml.Load(File.OpenText(file));

Shortcutys Only Options Shows Everything but Shortcuts

Just cloned the repo and build with VS2013 and when the "Shortcuts Only" option is checked, every key press is shown except for Shortcuts (e.g. Alt+Tab).

When "Shortcuts Only" is unchecked then all key presses are logged.

Should be simple to fix I will have a go at writing a failing test.

Run as Administrator

Hi

I've noticed that carnac doesn't intercept keys if the active application is running with Administrator privileges.

Any workaround/fix? I've tried to run carnac itself as administrator, without succeeding (Windows 10).

Don't bind to Message class

We need to remove mutation from carnacs Rx stream and based on messages (or some intermediate type) the UI can be updated.

This is the next step in cleaning up carnac's codebase.

Is it possible to read the keyboard layout from the OS?

first, thank you for contributing such a neat and cute software.
I'm new to github, and I hope the following information will be helpful.
I use Microsoft Keyboard Layout Creator to create a personal keyboard which is similar to programmer's dvorak keyboard created by Kaufmann(you can have a glimpse of it from http://www.kaufmann.no/roland/dvorak/). And I want to use it to do some Emacs presentation.

Though I never knew C# before, I managed to modify some code to satisfy my will.
I rearranged Key.D0 to Key.D9 and others in ReplaceKey.cs

And the way Key is presented in KeyProvider.cs. I changed Line 100 to

        if ((controlPressed || altPressed) &&
            interceptKeyEventArgs.Key.Sanitise().Length==1 &&
            isLetter)
        {
            //Treat as a shortcut, don't be too smart
            if (shiftPressed)
                yield return "S";//"Shift";

            yield return interceptKeyEventArgs.Key.Sanitise().ToLower();
        }

thus when I press Ctrl+Shift+E it will show C-S-e, while "Ctrl+Shift+," will be presented as "C-<", just as our expectation. It's better to be smarter.

I hope it can read the keyboard layout from the input method instead of using only pre-defined shfit replacement from 123 to !@#. And I hope it will provide choices for how to present Ctrl, Shift, Alt, etc.

Repeat logic needs some work.

Typing really will result in real x2 y which is not ideal.

Same with full stops. They should not get repeats so i can type ... and have 3 dots appear.

I need control show or not

that means:
I would like to choose some gourps to show:
such as

  • control: contains ctrl alt shift
  • function: F1~ F12
  • Direction: left right up down home end pageup pagedown
    ...

for example:

  1. i just press “a” , the screen NOTshow “a”
  2. i press “shift + a” the screen NOTshow “A”
  3. i press "ctrl + a", the sreen show my keys: Ctrl + a

KeyShowView showing in taskbar

I had an attempt to fix this, but on Windows 8 (not sure if it is happening on other OS's) the KeyShowView is visable in the taskbar..

I have tried a heap of things, and It seems that if we set width/height of the window or the window state the window appears in the task bar...

carnac stop working when process no longer exist

Carnac stops working in the following case:

Open a console (for example: carnac\tools\xunit\xunit.console.x86.exe).
Try to create a scenario where you input a key and the console exits before carnac displays your key.
The app will stop working since GetAssociatedProcess() method won't find the process Id associated and an exception arises. Now the app no longer response.
capture

Windows key is stuck after a slow Win+L (lock desktop) chord

Sometimes after locking the screen with Windows+L key and later unlocking, Carnac thinks that the windows key is still pressed and shows it involved as a shortcut chord in every keypress. Pressing the windows key once more fixes the state. The shell itself doesn't think the key is depressed at those times because it doesn't respond to pressing "L", for example, by re-locking the screen.

It is easy to reproduce for me by holding down the windows key for about 5 seconds before pressing "L". after unlocking I see this behavior. Shorter durations are less likely to cause it, but it does happen.

For Aeoths

Hey, So this is where I am up to:

a) WindowState="Maximised" can apparently screw with TopMost="True" because other apps should be allowed to be on top and it's only topmost for that app.

b) If I use any of the p/invoke methods I can set it as topmost, not a problem, but none of the buttons (close, minimise, save) work in the other form.

Yeah, screwed if you do, screwed if you don't.

Resolution changes & Settings window can be permanently sized tiny and offscreen

I leave Carnac running all the time (I like seeing it, and I like making it clearer to any coworker audience what shortcuts I'm using)

As screen resolution gets changed, perhaps because of remoting into this workstation, the settings window and the main overlay window don't get resized/sanity checked.

Regardless of restarts, my windowed-mode settings pane is sized to 0 or is rendered offscreen (not sure) somehow and I can't get it back except by alttab to the settings window and then to maximize.

Also, if the overlay is set to the right side, screen resizes aren't recognized.

Shift and Spacebar

Hello!

Shift + ctrl + key and Shift + Alt + key are exhibited but Shift + key is not exhibited.
Spacebar is showing up nothing. Just one empty position on screen.
Shift + Space doesn't works like the Ctrl + Space.

Windows 7 x64.

Statistics

Might be cool to log statistics like number of key presses vs number of backspaces etc.

Update website to point to correct release

Using Carnac.application (sandbox-installed it and grabbed the executables out) works perfectly, instead of github-portable zip. They don't even have the same size.

Windows 8.1 Update 1, Fully updated

A (cluttered, unfortunatelly) screenshot tells all the differences:
image

Feature request : Display held keys differently

I want to use this to record my in-game controls. However, WASD movement keys constantly get repeated like "wwwwwwwwwwwwwwwwwwwwwwwwwww" when they are held down. I would like to see another way to show when keys are being held down for that purpose, like perhaps make the keys a different color, underlined or bolded?

Mouse avoidance mode?

Can there be a mode that moves out of the way when the mouse cursor is in the vicinity? Kind of like the Chrome url preview overlay flips to the right side of the screen if the mouse is near it.

Sliders not responding (No value change)

Using Carnac.application (sandbox-installed it and grabbed the executables out) gives me an issue on the sliders, that in turn change the numbers on the various options. They move left and right, but change no number.

Please note manual updating and colors work as-advertised

Windows 8.1 Update 1, Fully updated

Multiple arrows or backspace group with previous character

If I press an arrow key or backspace right after another key, it shows the previous key times 2. For example, if I press "a" and backspace quickly (at normal typing speed), I get "a x2".

image

So, if I press left, right, left, right, I get left x4.

Also, if I press Ctrl + Backspace, I get "CTRL + x2"
image

Windows system buttons wrong visual

minimized application buttons
In minimized version buttons appear like on screenshot, when you click on button and then drag mouse, still holding left MB pressed.
Found in revision with hash: d9f51ac.
Windows 7 x 64, geforce GT 230 with latest drivers.

Settings not saved

I compiled the latest sources. When I install the ClickOnce application my settings are not saved after restarting the application. The corner where the messages come from and the Shortcuts Only option for example.

I've run the original 1.0.0.0 binary prior to the ClickOnce installation.

Don't display key presses on password inputs

This tool is quite useful for presentation, but I don't like it displays my password when I type it :-)

Could you consider ability to avoid displaying if I'm typing in password input (both for win-app and in-browser app)?

Show Win key pressed after unlocking PC

For discussion, I'm not sure this is a bug in Carnac. After I unlock a PC, Carnac displays the Win key symbol beside every keystroke. For example, after I unlock my computer, if I press x, carnac shows Win + x; but the Windows Power User Menu does not appear so Windows doesn't think I pressed Win + x.

Hiding popups on maximize.

On maximizing carnac it hides popups with pressed keys. So that its topmost is "more topmost" than popups' one.

UI Refresh

MahApps.Metro hit 1.0 recently. This is waaaaaaay behind. We should update it.

@punker76 mentioned a "clean style" might be a good fit.

Error handling

Carnac does not handle errors. This should be addressed and we should log errors, or at least pop up a tooltip bubble from the tray icon saying an error happened which the user can click on.

Ideas welcome.

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.