Keyboard and mouse interaction on Linux - windows

I recently came across a Windows library called AHK that gives me great control to interact with applications.
Is there an equivalent in the Linux world?

There are several ports of autohotkey to linux in progress.
Here is mine: AutoHotkey using winelibsource: ahkx.git
autohotkey forum
Also, you can checkout IronAhk, autokey, and xdotool

There's nothing quite as awesome as AutoHotkey for Linux unfortunately. However a program called xbindkeys will do a lot of the keyboard bindings that you can do in AutoHotkey.

I don't think there is an equivalent to AHK in the Linux world. You might be able to get it to run with Wine, and if you were up to the challenge you could port it since the c++ source is availiable.

The thing Autohotkey does so well in Windows is work with the GUI as well as the system itself. I haven't found anything close to it in Linux. There are hotkey apps and apps that do text-replacement but nothing like Autohotkey on Windows.
I can't figure out if IronAHK is still in Alpha or it's abandoned altogether. Haven't heard much of anything lately. Autokey is just text-replacement if I recall correctly.
You can run Autohotkey in Wine but it loses the ability to manipulate the GUI in that environment and only can interact with other programs running in Wine as far as I know.

I would certainly look at Gnome-Do on which functions much like Quicksilver on the Mac. Fantastic launcher and more for Linux.

Related

Programming Mac Keys with Lua

So I'm pretty new to gaming and coding in general, but I've had some experience with iMacros (CSS and HTML, x/y) and Lua.
Because I need to be very mobile and so on, I'm not really looking for a gaming keyboard, instead I was hoping to be able to program my Mac's keys to do Lua programmed mouse clicks.
I haven't found a way to do this so far.
I was thinking that I could create a separate user account and modify the keyboard on that, so the main keyboard is intact for daily use.
Note: I have looked into the one-handed gaming keypads - but those are still too big for my need. I am currently using the Logitech Proteus G502 mouse.
Note: Yes I know macs aren't ideal gaming computers. I use it for school and work and I prefer it over other laptops. The game I play is web based and I've had no issues so far.
You said you are familiar with Lua. How did you program then? It was likely on a desktop - so its the same on a laptop. You just need to figure out what kind of programming you are wanting to do. Are you using Lua to script in games like Roblox? Roblox Studio is available on a Mac. General command-line programming? Open Terminal in Mac and you can program in most languages. Doing more serious programming? Then grt an IDE (Integrated Development Environment) like Eclipse. Try to narrow down specifically what you want to do and we can help you get set up.

c++ hide terminal with GTKMM gui apps

I've been looking around on the cplusplus forum and here on stackoverflow, but I have not been able to find an answer. All I find is Windows stuff or people working with IDE'S that do the work for them.
I am creating an application with c++ and GTKMM and nothing else, I just have a texteditor and a compiler that I control with my terminal (I adress this because a lot of people always talk about IDE'S and stuff) on UNIX based computers.
When I run my application (./application) I always see my terminal along with my gui application and I would like to hide the terminal. How would I achieve this?
Thanks in prior :)
So I found out it differs from operation system. I've written out what I've found on my website, so check it out if you want to create a mac application.

Console widget wxpython

I have forked an interpreter written in C (Picoc), and I want to create a GUI for that interpreter.
The GUI should have a textarea (TextView in pygtk) and a console in the bottom, that will show the output of the script that you just written, and also prompt the input if its needed.
I do create a PyGTK GUI that has VTE Console widget, but the problem is that i want to make PyGTK cross-platform, i'm using GTKSourceView and as i was looking on Google, its no so easy to port GTK to windows, so, i research about WxPython (which is the same window Manager of Code::Blocks), but the question is:
It DO exists a Console Widget on wxPython?
and most important, how portable it is? can i port it to windows easier than GTK?
It was my understanding that PyGTK is cross-platform. It just doesn't use native widgets. I've certainly used an application written in it on Windows anyway. Admittedly, I've never had much luck actually using it on Windows.
As for wxPython, no it doesn't have a console widget. You would have to use Python's subprocess to launch a console window and communicate with it. On the other hand, wxPython is quite portable. I've seen screenshots of apps on all 3 major platforms and I've written a couple of mine to work on Windows and Ubuntu.

How can a Windows programmer be sufficiently productive on Mac OS X?

I've been using MacBook Pro for a few months at home, and I was wondering if there's a good book or guide that can help me be a better programmer on Mac. Maybe Mac-equivalent of Beginning Linux Programming. Note I am not looking for resource on how to program Mac application, instead I am looking for more general guide of using Mac for general development environment.
As a background, I am a Windows programmer by day. I've also done some Linux and BSD over the years, esp in school, like socket programming, graphics, make install type stuff. At home, I'll be doing Java, Scala, PHP, etc. on Mac.
So far, I've been using Eclipse, QuickSilver, and TextMate. VMWare Fusion, XCode and NetBeans are set up, but I don't use them. A DVI KVM switch is hooked up to real keyboard, trackball, and monitor. Recently stayed up till late fighting with MacPorts, and figured out I needed x86_64. The most struggle I had was configuring PHP. I don't know why they don't ship with MySQL and GD library. I eventually figured it out Googling around, and built the extensions from source. I have a feeling that I didn't get the memo and didn't read some basic guide on how to become a programmer on Mac, like how the whole architecture works. How can a Windows programmer be sufficiently productive on Mac OS X?
Related: Setting up a Mac for programmers
Edit: The specific type of application I want to develop doesn't really matter in my opinion. It could be Java, Scala, PHP as I mentioned or Cocoa, C++, or whatever.
What I am looking for is specific book, resource, advice on how to be more effective programmer on Mac, preferably something beyond "install XYZ".
Having converted from Windows to Mac OS X about five years ago, I often find myself thinking the same thing. I just cannot be productive on Windows (as much, I can be productive) as I can on Mac OS X.
To be honest, there are lots of small differences between Mac OS X and Windows. I find the biggest reason for people thinking like this (at it normally only applies to gamers and developers) is that they are trying to use the Mac like a Windows machine. You need to learn to accept that you have to use the command key, not the control key, etc.
It sounds like you are using a Mac because you have to as opposed to because you want to. It really is a much better platform than Windows once you get used to it.
I think a lot of Windows programmers come to Mac and don't try to learn it properly because they are complacent thinking they know it all because they have "used Windows all their life". I guess once you discover Spotlight, Expose, Mac OS X Keyboard shortcuts, etc. You will find your self being MUCH more productive that you ever were on Windows.... and its actually a fun OS to use.
Checkout some of the best Mac applications you can get here and here. You can also do a search for "top 100 mac apps".
Also, I noticed you were trying to setup some kind of web server directly into Mac OS X. It does ship with one, but if you are going to add MySQL and some other extensions I wouldn't go the MacPorts route. Get VMWare Fusion or VirtualBox (open source) and run the server in a VM. Much cleaner. I have a subversion/trac FreeBSD VM that handles my local version control.
I would like to add that if you don't presently use Xcode, you should definitely learn it and use it asap. It's a much nicer IDE to use than Visual Studio and it will make your life much easier.
Don't forget you have probably spent years on Windows help sites, you're going to a small degree need to do that with the Mac. Whenever you have a problem about using the Mac, ask a question on ServerFault. We are all more than eager to help you out.
Good luck.
You seem to want an overview of how Mac OS X works at a system level, more than recomenations about tools and so forth. If that's the case, I'd start with the (very basic) Mac OS X System Architecture Guide from Apple, then move on to Getting Started with Mac OS X, which should give you enough of an overview to get started.
It's not clear from your question what you intend to actually make with your programming time, but if you decide to persue Cocoa/OS X development, I recommend Cocoa Programming for Mac OS X by Aaron Hillegass.
I have a similar situation like yours. I use Windows for development and about a year back purchased a MBP for home (as I shifted to an office). I find it really difficult to get any real work done on my MBP. Somehow am used to the Windows environment with dual screens. But let that not stop you. A couple of software which I suggest you should get are:
Transmit - Good ftp client
MAMP - Runs a webserver nearly out-of-the-box. Good for basic development
Quicksilver - Helps in quick finding of applications
Spaces along with gestures (Configure your gestures to move from one screen to another, I use three fingers glide. its amazing)
Entourage - for email
Terminal - for ssh (putty alternative) (included)
Dreamweaver/BBedit/Textmate (all pretty decent. but i love editplus on windows. not a fan of IDE)
I assume your question is not about learning COCOA and more about being more effective using a MAC. Well, the above tools might help you.
Unfortunately, your question isn't very clear as to what you really want.
If you're looking to write anything cross-platform, it can be very helpful to have a virtual machine for testing. When in Linux, I've always used VirtualBox, and it works on OS X as well.
Also, as for choice of IDE, a lot of it comes down to your preference. Eclipse is nice because there's a plugin for almost everything for it. My experience with TextMate is limited, but my local Ruby Users Group swears by it.
Finally, a suggestion for not just Mac, but any platform really. Learn your hotkeys, set up new ones for things you commonly do, and use them frequently. Not having to take your hands off the keyboard to click a mouse through a few menus can really improve productivity. It may take a little time for them to grow on you, but once they become second nature, you'll wonder how you lived without them.
Basically, you can apply all your Linux/UNIX knowledge that you already have to the Mac. If you use the Terminal (/Applications/Utilities/Terminal.app) you can run all your favorite UNIX commands. Mac has a special command called "open" which is equivalent to the Windows "start" command (used to launch programs and files). You can also use "open -a" to open an application by name (e.g. "open -a Finder").
You might want to reconsider Xcode. Xcode opens more quickly than Eclipse and provides very good syntax highlighting, brace matching, block indenting, and more. Xcode doesn't have to be used as an IDE, you can also use it as a code editor, just like you are currently using TextMate.
For code editing (and everything else), try Aquamacs (http://www.aquamacs.org). It's a Cocoa-native build of Emacs, and it's brilliant for any programming task.

Good resources for writing console style applications for Windows?

For certain programs nothing beats the command line. Unfortunately, I have never seen good documentation or examples on how to write console applications that go beyond "Hello World". I'm interested in making console apps like Vim or Emacs. Well not exactly like Vim or Emacs but one that takes over the entire command prompt while it is in use and then after you exit it leaves no trace behind. I know that on Unix there is the curses library but for Windows? ...
PDCurses works on Win32.
I found List of Console Functions on msdn, PDCurses, and The Console Module.
You can certainly write that kind of application with Delphi, which has reasonable commandline support. People often overlook that Delphi can build any kind of Windows executable, not just GUI apps.
I don't know off-hand if the free 'Turbo' edition of Delphi has anything cobbled into it to PREVENT you from using it to build console apps - I would have thought it would be fine for this kind of thing.
There is a small but good tutorial on using C++ for the Windows console at www.benryves.com/tutorials/?t=winconsole&c=all going as far as coding a simple painting program.
You could also try Free Pascal. It is a free ((L)GPL) Object Pascal compiler which is compatible with the Delphi-compiler. It has an console-based IDE, which proves that you can make very good console-applications with it, and which you can use as an example.
If you want to use a graphical IDE to build your console-application, you can download the Lazarus IDE.
As a bonus your application will run on Windows (32/64 bit), Linux, Mac OS X, FreeBSD, Solaris etc...
In Windows or DOS, I used the conio library from Borland. It's very old but fine enough for a beginner like me.
As Robsoft says Delphi would be a good start. There is Turbo Delphi (Pascal based) or Turbo C++ both free editions.
web site here.
http://www.turboexplorer.com/
Check out some of the mono libs. They have a great one to parse command line arguments but can't remember the namespace.
Miguel just posted some terminal code as well.
For ncurses-like library/framework on Windows, I'll highly suggest to get your hand dirty with PDCurses.
If you trying/using C#, there's Curses-Sharp.
This is the best tool for it I've ever seen!!
1) Create any application using VB6 IDE
2) Convert it to Console Application, using THIS!

Resources