Articles of autohotkey

更改由xterm为键组合生成的转义序列

我的目标是build立一个terminal,其中一个命令行界面程序将按照键盘input的预期行事(该程序是最初为Windows编写的xharbour,但现在我想将它移植到linux)。 我select了xterm,因为它更简单,不需要禁用默认的terminal组合键。 用腻子大多数人物工作得很好,对于那些不使用autohotkey,一个ahk脚本,并做这项工作。 例如,对于Ctrl + F1: ^F1::SendInput ^[O5P 我尝试和修改,重新编译terminfo,改变它,并改变键盘types,但不能实现获得^ [O5P响应按Ctrl + F1在terminal。 如果你知道这样做的任何方式,请告诉我…我已经读了几百页,据说这样做,但所有这些变化没有任何影响或没有预期的效果。 所以我试图修改terminal设置来实现我的Ctrl + F1到^ [O5P的目标,并尝试了一些类似于autohotkey的命令和程序: xmodmap ,但对于键组合,它不工作 xdotool windowactivate xyztypes^ [O5P,这将返回单个字符的char代码 xmacro ,它不会将按键发送到其他窗口 ironahk ,我一开始就遇到了一个错误,试图运行example.ahk,在光手册中找不到我希望的命令。 bind '\e[1;5P":"\e[O5P"' ,这里第一个键码就是我当前inputctrl + f1时所得到的结果,并且是我希望通过这个组合得到的结果。 xbindkeys + xvkbd ,也没有帮助。 如果您已经知道,请帮助我,以某种方式进行pipe理(更改为组合键返回的关键代码)。 我使用最新的CentOS和Ubuntu进行testing。

在“locking”屏幕后面会发生什么?

我一直在研究Windows自动化和监控。 当我locking一台Windows机器的屏幕时究竟发生了什么? 目前我正在使用Windows 7,如果切换到Vista或服务器版本,行为是否有很大差异? 还有一个可以通过api访问的桌面吗? 我知道我仍然可以发送按键和鼠标点击到特定的窗口(通过ControlSend和ControlClick ),但似乎没有“桌面”本身。 是否有人能够对这件事情有所了解,或者将我指向一个可读的来源,在那里我可以概览这个话题?

AutoHotKey可以切换键盘映射吗?

所以我试图在AutoHotKey中编写一个简单的脚本,它将使用NumLock(我已经映射到我的registry中的大写字母)作为开关将我的方向键转换为数字键盘的NAB键。 我的脚本如下: GetKeyState, state, NumLock, T if state = D { Up::Numpad8 Down::Numpad2 Left::Numpad4 Right::Numpad6 Enter::Numpad5 } if state = U { $Up::Up $Down::Down $Left::Left $Right::Right $Enter::Enter } Return 但是,我得到一个错误,说第15行重复。我如何告诉AutoHotKey将我的密钥返回到其原始密钥指示? 我试图留下一个“其他”部分空白,而不是“if state = U”部分,但是当再次切换时,这些键保持在它们改变的状态。 我确定有一些简单的我错过了。

如何将AltGr键全局映射到Alt键?

我想我的AltGr键行为完全像左Alt 。 通常,我使用Autohotkey来做这种事情,但是我对不同的解决scheme是开放的。 我试过这个: LControl & RAlt::Alt 和Autohotkey显示错误关于Alt不被识别的动作。 然后我尝试了下面的代码: LControl & RAlt:: Send {Alt down} KeyWait LCtrl KeyWait Ralt Send {Alt up} return 哪种工作 – 我能够使用AltGr键来访问热键,但它仍然有不同的performance: 当我按下并释放左侧的Alt时 ,当前程序中的第一个菜单项将获得焦点。 用这个脚本按下并释放AltGr什么也不做。 有任何想法吗? 这甚至可以用Autohotkey? (重新右键Ctrl和Shift到左边的兄弟姐妹是小菜一碟) 注意:我试着在代码LAlt Alt切换到LAlt ,这没有任何区别。

我怎样才能更改密钥更改在Windows 10中的桌面与autohotkey?

Windows 10终于有了多桌面,你可以用ctrl + win +右(或左)键来切换桌面。 这是一个很好的function,但你有两个用两只手来切换桌面。 我试图用autohotkey这样的键来映射,所以我可以用一只手,另一只手放在鼠标中。 ctrl + mouse wheel up –> ctrl + win + right ctrl + mouse wheel down –> ctrl + win + left 消息框出现所以ctrl +轮子正在工作,但它不会切换桌面。 ~LControl & WheelUp:: MsgBox, Go to desktop right. Send, {ctrl up}{lwin ctrl righ} return ~LControl & WheelDown:: MsgBox, Go to desktop left. Send, {ctrl […]

ControlSend使用SetKeyDelay时,随机发送错误字符(修改和未修改),0,0

我自我回答这个问题,因为我已经看到它在互联网上的问题,但几乎没有有用的答案,而且我肯定没有堆栈溢出的决议。 示例代码 考虑这个代码,它只是写几行shell命令: ^0:: SetKeyDelay, 0, 0 myWindow = ahk_exe Notepad.exe ControlSend, , set c=".cshrc-andrew.cheong"`n, %myWindow% ControlSend, , set v=".vimrc-andrew.cheong"`n, %myWindow% ControlSend, , foreach d ( /userhome/andrew.cheong /home/$USER /data/$USER )`n, %myWindow% ControlSend, , if ( -e $d/$c ) source $d/$c`n, %myWindow% ControlSend, , if ( -e $d/$v ) alias vim "vim -N -u $d/$v"`n, %myWindow% […]

在使用罗马尼亚程序员布局键入罗马尼亚字符的同时,使用Autohotkey重新映射Alt / Ctrl / Win,窗口变得疯狂

我使用Autohotkey重新映射了一些键,如下所示: LWin::LAlt LCtrl::LWin LAlt::LCtrl 我正在使用罗马尼亚(程序员)键盘布局的Windows 7。 例如,如果我想inpută,则命中RAlt + a。 这就是所谓的“程序员”,因为它是一个美国的QWERTY布局,额外的RAlt激活。 但是,如果我运行我的Autohotkey脚本,然后发送一个RAlt + a / s / t / i,系统就会发疯。 即使我closures了Autohotkey,它仍然performance得如此。 我必须注销/重新启动或按魔术键序列来解决它(我还没有弄清楚什么序列)。 我正在猜测的是,Alt以某种方式卡住了,我按下的每个按键都与Alt混合在一起。 按Esc键切换Windows,在应用程序中按F键打开文件菜单等。 这是一个Autohotkey错误还是我做错了什么? 我过去曾经使用过SharpKeys,但是由于一些要求 – 共享电脑 – 我需要每个用户的东西,最好能closures。 Autohotkey本来是完美的。 谢谢。 后期编辑 – 解决scheme是什么576i(第一部分+键映射,以取代我以前使用的键盘映射 – 我放弃了罗马尼亚程序员) ; Remap Ctrl to Win, Win to Alt, Alt to Ctrl – credit to 579i $*LWin::Send {LAlt Down} $*LWin […]

Autohotkey:发送5位hexUnicode字符

我一直在试图find一种方法来重新映射我的键盘和发送5位hexUnicode字符,这里描述的方法: ahk发送只支持4位hex代码{U + nnnn},我知​​道在过去,autohotkey没有本地支持unicode,所以需要一些function才能做到这一点,也许这就是我的解决scheme。 例: #If GetKeyState("CapsLock","T") +u::Send {U+1D4B0} 结果是풰而不是and,풰的代码是{U + D4B0},这意味着AHK只读取最后4位数字。 即使我需要做出新的function来实现这个function,我该如何修复它? 谢谢 -标记

保持与AutoHotkey最大化的窗口?

我有一个AutoHotkey脚本来启动一个像这样最大化的应用程序: `Run, myprogram.exe,, Max` 然后它摆脱了最小化和恢复button。 我仍然可以点击任务栏并向下拖动恢复窗口。 有没有什么好办法让我的窗口在AHK中最大化? 如何locking窗户的位置?

捕获右键单击+用autohotkey左键单击; 意外的行为

我想捕获按键的鼠标右键按下,然后按下鼠标左键。 在autohotkey没有问题。 不过,我仍然无法单独使用鼠标右键。 1)这个工作: RButton & LButton:: Send X Return 按预期工作: 如果我按下鼠标右键,然后鼠标左键,“X”被发送到活动窗口 右键单击事件被Authotkey捕获:当我单击鼠标右键时, 不会出现上下文菜单。 这是预期的结果 2)这个工程 ~RButton & LButton:: Send Y Return 按预期工作: 如果我按下鼠标右键,然后鼠标左键,“Y”被发送到活动窗口 右键单击事件不被Authotkey捕获:当我单击鼠标右键或与左键一起时,上下文菜单会出现。 这是预期的结果 3)现在我想根据活动窗口做不同的事情。 这不起作用(小心:这将禁用每个应用程序的右键单击) #If WinActive("ahk_class MozillaWindowClass") RButton & LButton:: Send X Return #If !WinActive("ahk_class MozillaWindowClass") ~RButton & LButton:: Send Y Return 不按预期工作: 在Firefox中左右发送X,在其他应用程序中左右发送Y. 但是, 每个应用程序都禁用右键单击 我在这里做错了什么? 编辑: 目标是这样的:我想要一个全局热键右键+左键单击RButton & LButton […]