Fa کیبورد و mmb

kohan20

Member
چطور با mmb به کیبورد کامپیوتر دسترسی داشته باشیم یعنی منظورم اینه یه برنامه بسازیم مثلا در اتوکد

وقتی برنامه رو اجرا میکنیم بین اتوکد و صفحه کلید ارتباط برقرار کنه یعنی mmb از ما بخواد طول را وارد کنید بعد بخواد زاویه رو وارد کنید اونوقت اطلاعاتو به اتوکد
منتقل کنه

هرکی میدونه کمکم کنه

این برنامه یجوری ویرایش کیبورده که با remap کار میکنه مشکل اینه اکثر نرم افزار ها باید سیستم رو ریستارت کنن اما میدونم و کار کردم با نرم افزاری که بدون

ریستارت کاراکتر های کیبورد عوض بشه

یه همچین چیزی میخوام

ممنون
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
دقیقاْ میخاید چه کنید ؟ با mmb یه سری کلید به پنجره ی مقصد بفرستید ؟
در mmb قصد دارید چه کاری انجام بدید و ارتباط mmb با اتوکد باید به چه شکل باشه ؟
 

kohan20

Member
تو اتوکد برای رسم خط باید اول ctrl+L رو بزنیم بعد اون اندازه+shift+< بعدش اندازه زاویه وبعد enter حالا من میخوام فقط بادادن دو مقدار در mmb به صورت اتوماتیک این کارهارو + اندازه خط روی اتوکد نشون بده و رسم کنه بدون دخالت یا کلیک روی اتوکد

یه چیزی تو مایه نرم افزارهایی که برای فارسی سازی استفاده میشه که تو محیط نرم افزار فاررسی متن و فونت رو انتخاب میکنی و مینویسی و با یه کلیک تو نرم افزار های دیگه این متن نوشته میشه

مثل فارسی یار که برای اتوکد است



می خوام دو editbox داشته باشه تو اولی طول خط و دومی زاویه رو بنویسم و بعد تایید نرم افزار کارهای بالا رو انجام بده و علاوه بر اون وسط خط نیز تو اتوکد اندازه خط رو بنویسه

شاید بشه از قسمت remap کیبورد استفاده بشه بدین صورت که mmb رو فعال کنی بعد اون دو مقدار از صفحه کلید بگیره بعد دوباره این کد های صفحه کلید رو اصلاح و اضافه کنه و دوباره مانند یه صفحه کلید مجازی کد ها رو تولید و به اتوکد بده

یه طور دیگه سوال میکنم برنامه ای هست که با فعال بودن mmb نه پنجرش یعنی mmb مینیمایز باشه بتونین کلید های فشاری از صفحه کیبورد رو تغییر بده مثلا اگه f12 رو زدم کپی بشه اگه f11 یه کار دیگه بکنه اگه این دو باهم زدم مثل تغییر زبان فارسی-انگلیسی کیبورد دیگه فرامین قبلی تو f11 و f12 نباشه و فرامین جدید توش باشه

یا مثلا تو بازی ها گاهی میخواهید با دکمه spac تیر بزند با دکمه q w e s حرکت کنه با دکمه دیگه یه کار دیگه اکثر بازیها از داخل برنامه اش میشود و لی شما فکر کنید همچین چیزی در بازی نیست و شما می خواهید با mmb این کار رو انجام بدین مثلا mmb رو اجرا کنید و کلید ها رو ویرایش و بازی کنید اما بعد از بستن mmb کلید ها به صورت عادی در بیاد

ممنون
 
آخرین ویرایش:

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
جدا از اینکه هدفتون دقیقاً چی هست، شما میتونید فشرده شدن کلیدها رو تشخیص بدید (با پلاگین SmallPlugin)
برای ارسال کلیدها هم پلاگین SysMetrics همچین امکانی داشت، اما تست نکردم.
من معمولاً واسه ارسال کلیدها از AutoIt استفاده میکنم، میتونید با استفاده از پلاگین MMBDLL و فایل DLL برنامه ی AutoIt که اسمش AutoItX هست اینکار روانجام بدید.

چیزی که من متوجه شدم، شما قصد دارید ترکیبی از کلیدها رو بفرستید (درواقع فشرده شدن کلیدهای کیبورد رو شبیه سازی کنید)
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
چی چیزی از AutoIt مدنظرتون هست ؟
این برنامه یک ابزار و زبان اسکریپت نویسی قوی هست، و بخاطر متدهایی که داره و فلسفه ای که باعث ایجاد این برنامه شده، قابلیت این رو داره که یکسری کارها رو بصورت اتوماتیک انجام بده
مثلاً یک برنامه رو بدون نیاز به دخالت کاربر نصب کنید (درواقع کاری که یک کاربر خودش انجام میده، بوسیله ارسال کلیدهای کیبورد، شبیه سازی میکنه)

خب دقیقن چیزی که مدنظرتون هست رو بفرمایید تا راهنمایی کنم، چون توضیح AutoIt مثل توضیح دادن یک زبان جدید هست.

UPDATE: حواسم به نوشته های قبلی نبود، اگر حتماً میخاید با MMB کار رو انجام بدید پیشنهادم استفاده از پلاگین MMBDLL و AutoitX هست، در غیراینصورت میتونید همه ی کار رو در AutoIt انجام بدید.
 

kohan20

Member
واقعیت من قبلا یه برنامه ویرایش کیبورد داشتم و مثلا میانبر های 3 دکمه مثل ctrl+alt+l رو فقط باspace انجام می دادم اما از بد ما اومدو بعد از یه مدتی هاردم سوخت حالا یه برنامه نیاز دارم که کلید های ترکیبی رو به یه کلید که خودم انتخاب کردم تبدیل کنه

از بد ما من اسم این برنامه رو ندارم و یادم نمیاد فقط می دونم ویرایش کیبورد سیستم بود اما نرم افزار های زیادی در این مورد دانلود کردم همشون نیاز به ریستارت دارن اما من با اون نرم افزار بدون ریستارت تمام کلید ها رو تغییر میدادم کارهامو انجام میدادم دوباره غیر فعال میکردم و سیستم مثل اول میشد همچین چیزی می خوام

ممنون
 

m javad

کاربر متخصص
با پلاگین های AnyKey_V2_Pro_PlugIn و plugy (برای ارسال دکمه خاص به برنامه ای خاص) میتونید یه همچین کاری کنید
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کد:
HotKeySet("{SPACE}", "Func1")
While 1
    Sleep(100)
WEnd
Func Func1()
    Send("^!l")
EndFunc
این کد AutoIt تا زمانی که درحال اجرا باشه، هرموقع کلید Space رو بزنید، CTRL+Alt+L رو ارسال میکنه

توضیحات در مورد کلیدها و کدهاشون رو می تونید از اینجا بخونید: http://www.autoitscript.com/autoit3/docs/functions/Send.htm
 

kohan20

Member
خیلی ممنون

اینم یه مثال دیگه


HotKeySet("{SPACE}", "pas")


While 1

Sleep(100)

WEnd
;;;;;;;
Func pas()
Send("^a")

EndFunc
 

kohan20

Member
[h=1]اگه بشه هوشمن کرد عالیه یعنی خود mmb دکمه فشرده شده را تشخیص بده و با دکمه دیگه که فشرده شده جایگزین کنه معرکه میشه[/h]




[h=1]Send[/h]

Sends simulated keystrokes to the active window.



Send ( "keys" [, flag] )



[h=2]Parameters[/h]

keysThe sequence of keys to send.
flag[optional] Changes how "keys" is processed:
flag = 0 (default),
Text contains special characters like + and ! to indicate SHIFT and ALT
key-presses.
flag = 1, keys are sent raw.


[h=2]Return Value[/h]None.


[h=2]Remarks[/h]See the Appendix for some
tips on using Send. AutoIt can send all ASCII and Extended ASCII characters
(0-255), to send UNICODE characters you must use the "ASC" option and the code
of the character you wish to send (see {ASC} at the bottom of the table
below).

The "Send" command syntax is similar to that of ScriptIt and the
Visual Basic "SendKeys" command. Characters are sent as written with the
exception of the following characters:

'!'
This tells AutoIt to send
an ALT keystroke, therefore Send("This is text!a") would send the keys "This is
text" and then press "ALT+a".

N.B. Some programs are very choosy about
capital letters and ALT keys, i.e. "!A" is different to "!a". The first says
ALT+SHIFT+A, the second is ALT+a. If in doubt, use lowercase!

'+'
This
tells AutoIt to send a SHIFT keystroke, therefore Send("Hell+o") would send the
text "HellO". Send("!+a") would send "ALT+SHIFT+a".

'^'
This tells
AutoIt to send a CONTROL keystroke, therefore Send("^!a") would send
"CTRL+ALT+a".

N.B. Some programs are very choosy about capital letters
and CTRL keys, i.e. "^A" is different from "^a". The first says CTRL+SHIFT+A,
the second is CTRL+a. If in doubt, use lowercase!

'#'
The hash now
sends a Windows keystroke; therefore, Send("#r") would send Win+r which launches
the Run dialog box.

You can set SendCapslockMode to make CAPS LOCK
disabled at the start of a Send operation and restored upon
completion.
However, if a user is holding down the Shift key when a Send
function begins, text may be sent in uppercase.
One workaround is to
Send("{SHIFTDOWN}{SHIFTUP}") before the other Send operations.

Certain
keyboard as the Czech one send different characters when using the Shift Key or
being in CAPS LOCK enabled and sending a char. Due to the send AutoIt
implementation the CAPS LOCKed char will be sent as Shifted one so it will
not work
.

Certain special keys can be sent and should be enclosed in
braces:

N.B. Windows does not allow the simulation of the "CTRL-ALT-DEL"
combination!


Send Command (if zero flag)Resulting Keypress
{!}!
{#}#
{+}+
{^}^
{{}{
{}}}
{SPACE}SPACE
{ENTER}ENTER key on the main keyboard
{ALT}ALT
{BACKSPACE} or {BS}BACKSPACE
{DELETE} or {DEL}DELETE
{UP}Up arrow
{DOWN}Down arrow
{LEFT}Left arrow
{RIGHT}Right arrow
{HOME}HOME
{END}END
{ESCAPE} or {ESC}ESCAPE
{INSERT} or {INS}INS
{PGUP}PageUp
{PGDN}PageDown
{F1} - {F12}Function keys
{TAB}TAB
{PRINTSCREEN}Print Screen key
{LWIN}Left Windows key
{RWIN}Right Windows key
{NUMLOCK on}NUMLOCK (on/off/toggle)
{CAPSLOCK off}CAPSLOCK (on/off/toggle)
{SCROLLLOCK toggle}SCROLLLOCK (on/off/toggle)
{BREAK}for Ctrl+Break processing
{PAUSE}PAUSE
{NUMPAD0} - {NUMPAD9}Numpad digits
{NUMPADMULT}Numpad Multiply
{NUMPADADD}Numpad Add
{NUMPADSUB}Numpad Subtract
{NUMPADDIV}Numpad Divide
{NUMPADDOT}Numpad period
{NUMPADENTER}Enter key on the numpad
{APPSKEY}Windows App key
{LALT}Left ALT key
{RALT}Right ALT key
{LCTRL}Left CTRL key
{RCTRL}Right CTRL key
{LSHIFT}Left Shift key
{RSHIFT}Right Shift key
{SLEEP}Computer SLEEP key
{ALTDOWN}Holds the ALT key down until {ALTUP} is sent
{SHIFTDOWN}Holds the SHIFT key down until {SHIFTUP} is sent
{CTRLDOWN}Holds the CTRL key down until {CTRLUP} is sent
{LWINDOWN}Holds the left Windows key down until {LWINUP} is sent
{RWINDOWN}Holds the right Windows key down until {RWINUP} is sent
{ASC nnnn}Send the ALT+nnnn key combination
{BROWSER_BACK}2000/XP Only: Select the browser "back" button
{BROWSER_FORWARD}2000/XP Only: Select the browser "forward" button
{BROWSER_REFRESH}2000/XP Only: Select the browser "refresh" button
{BROWSER_STOP}2000/XP Only: Select the browser "stop" button
{BROWSER_SEARCH}2000/XP Only: Select the browser "search" button
{BROWSER_FAVORITES}2000/XP Only: Select the browser "favorites" button
{BROWSER_HOME}2000/XP Only: Launch the browser and go to the home page
{VOLUME_MUTE}2000/XP Only: Mute the volume
{VOLUME_DOWN}2000/XP Only: Reduce the volume
{VOLUME_UP}2000/XP Only: Increase the volume
{MEDIA_NEXT}2000/XP Only: Select next track in media player
{MEDIA_PREV}2000/XP Only: Select previous track in media player
{MEDIA_STOP}2000/XP Only: Stop media player
{MEDIA_PLAY_PAUSE}2000/XP Only: Play/pause media player
{LAUNCH_MAIL}2000/XP Only: Launch the email application
{LAUNCH_MEDIA}2000/XP Only: Launch media player
{LAUNCH_APP1}2000/XP Only: Launch user app1
{LAUNCH_APP2}2000/XP Only: Launch user app2

To send the
ASCII value A (same as pressing ALT+065 on the numeric keypad)
Send("{ASC
065}")

(When using 2 digit ASCII codes you must use a leading 0,
otherwise an obsolete 437 code page is used).

To send UNICODE characters
enter the character code (decimal or hex), for example this sends a Chinese
character
Send("{ASC 2709}") or Send("{ASC 0xA95}")

Single keys
can also be repeated, e.g.
Send("{DEL 4}") ;Presses the DEL key 4
times
Send("{S 30}") ;Sends 30 'S' characters
Send("+{TAB 4}")
;Presses SHIFT+TAB 4 times

The key will be send at least once even if the
count is zero.

To hold a key down
Send("{a down}") ;Holds the A
key down
Send("{a up}") ;Releases the A key

To set the state of
the capslock, numlock and scrolllock keys
Send("{NumLock on}") ;Turns the
NumLock key on
Send("{CapsLock off}") ;Turns the CapsLock key
off
Send("{ScrollLock toggle}") ;Toggles the state of
ScrollLock

If you wish to use a variable for the count, try
$n =
4
Send("+{TAB " & $n & "}")

If you wish to send the ASCII
value A four times, then try
$x = Chr(65)
Send("{" & $x &
" 4}")

Most laptop computer keyboards have a special Fn key. This key
cannot be simulated.

Note, by setting the flag parameter to 1 the above
"special" processing will be disabled. This is useful when you want to send some
text copied from a variable and you want the text sent exactly as
written.

For example, open Folder Options (in the control panel) and try
the following:


Send("{TAB}")Navigate to next control (button, checkbox,
etc)
Send("+{TAB}")Navigate to previous control.
Send("^{TAB}")Navigate to next WindowTab (on a Tabbed dialog window)
Send("^+{TAB}")Navigate to previous WindowTab.
Send("{SPACE}")Can be used to toggle a checkbox or click a button.
Send("{+}")Usually checks a checkbox (if it's a "real" checkbox.)
Send("{-}")Usually unchecks a checkbox.
Send("{NumPadMult}")Recursively expands folders in a
SysTreeView32.

Use Alt-key combos to access menu
items. Also, open Notepad and try the following:
Send("!f") Send Alt+f, the
access key for Notepad's file menu. Try other letters!



Send("{DOWN}")Move down a menu.
Send("{UP}")Move up a menu.
Send("{LEFT}")Move leftward to new menu or expand a submenu.
Send("{RIGHT}")Move rightward to new menu or collapse a
submenu.
See Windows' Help--press Win+F1--for a
complete list of keyboard shortcuts if you don't know the importance of Alt+F4,
PrintScreen, Ctrl+C, and so on.

When running a script on a remote
computer through a program as p***ec (www.sysinternals.com) or beyondexec
(www.beyondlogic.org) it is necessary, specially when sending strokes to a
program launch by the script with a Run function, to use ControlSend or
other ControlXXX functions to directly communicate with the control. Send even
with Opt("SendAttachMode",1) is not working.
Using the -s mode when
submitting can help to have better right on the remote
computer.

Opt("SendKeyDelay",...) alters the the length of the brief
pause in between sent keystrokes.
Opt("SendKeyDownDelay",...) alters the
length of time a key is held down before being released during a
keystroke.
Set both "SendKeyDelay" and "SendKeyDownDelay" to 0 to remove all
delays when sending keystrokes. This may be required under certain
circumstances, for example, when locking the system ("#l") it may be necessary
to remove the delays in order to prevent the WIN key from being stuck
down.



[h=2]Related[/h]SendAttachMode
(Option)
, SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), ControlSend, BlockInput,
HotKeySet, WinMenuSelectItem

[h=2]Example[/h]



Send("#r")
WinWaitActive("Run")
Send("notepad.exe{Enter}")
WinWaitActive("[CLASS:Notepad]")
Send("Today's time/date is
{F5}")
 
  • Like
Reactions: 9up

جدیدترین ارسال ها

بالا