Форум: "Потрепаться";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизПодскажите программу для быстрый ввода символа... Найти похожие ветки
← →
Кудесник © (2005-01-04 17:09) [0]...вместо последовательности нажатых клавиш. Надо для ввода французкого текста. Типа: при нажатом CTRL последовательность ["e"+ """ + "->"] преобразуется в ["е" с правым ударением]...
← →
GuAV © (2005-01-04 17:29) [1]напиши сам :-)
начать можно с этого http://delphimaster.net/view/14-1102616026/
← →
Кудесник © (2005-01-04 17:35) [2]- Никогда не рисуй то, что можно срисовать...
- Никогда не срисовывай то, что можно скопировать...
- Никогда не копируй то, что можно вырезать и наклеить... %)))
← →
Чеширский_Кот © (2005-01-04 17:35) [3]тут всегда такой ответ: "Напиши сам"
это же сайт программеров
← →
Кудесник © (2005-01-04 17:39) [4]
> Чеширский_Кот © (04.01.05 17:35)
> тут всегда такой ответ: "Напиши сам"
> это же сайт программеров
Вот потому и спрашиваю... зачем начинать со своего трёхколёсного велосипеда, если у кого-то он уже может быть доведён до уровня фриварного маунтинбайка... %)
← →
Чеширский_Кот © (2005-01-04 17:43) [5]тут спросишь про ось, тебе скажут: "Ну напиши сам, делов-то на 3 дня"
← →
GuAV © (2005-01-04 17:44) [6]У меня есть, только переводящая не последовательность, а один хоткей. Для символов ©, ®, etc. могу сюда выложить.
← →
Кудесник © (2005-01-04 17:49) [7]Нужно что-то типа того, как это сделано в MSOffice... только глобальное...
← →
Кудесник © (2005-01-04 17:51) [8]
> GuAV © (04.01.05 17:44)
Пока искал... наткнулся только на программу, которая вставляет смайлики при нажатии F1-12...
← →
Кудесник © (2005-01-04 17:55) [9]Ладно... пошёл я пока телик ремонтировать... а то чё-то поработает пару минут и отрубается... постоит несколько минут, снова включается... ерунда какая-то... %(
← →
Anatoly Podgoretsky © (2005-01-04 18:36) [10]Установи французкую раскладку, это лучше чем пытаться изобретать вилосипед с квадратными колесами.
← →
VMcL © (2005-01-04 19:41) [11]>>Кудесник © (04.01.05 17:09)
Ну их, эти программы. Alt-ввод рулит.
← →
Кудесник © (2005-01-04 21:23) [12]
> [10] Anatoly Podgoretsky © (04.01.05 18:36)
> Установи французкую раскладку
К французкой раскладке надо найти англо-франко-русскую клавиатуру? А без неё всё-равно придётся искать буквы перебором или распечатывать их и приклеивать к клавишам... а оно надо? Я лучше нажму на пару клавиш больше... %)
← →
Agent13 © (2005-01-04 21:27) [13]
> К французкой раскладке надо найти англо-франко-русскую клавиатуру?
А у них там что, у французов, так уж дофига этих букв нестандартных, что на память выучить нельзя?
← →
Кудесник © (2005-01-04 21:29) [14]
> GuAV © (04.01.05 17:44)
> Для символов ©, ®, etc. могу сюда выложить.
Исходник?
← →
Кудесник © (2005-01-04 21:31) [15]
> [13] Agent13 © (04.01.05 21:27)
> А у них там что, у французов, так уж дофига этих букв нестандартных,
> что на память выучить нельзя?
На каждый гласный... такие, не такие и совсем не такие... %)
← →
GuAV © (2005-01-04 21:39) [16]Кудесник © (04.01.05 21:29) [14]
Сама прога
program Project1;
uses
Windows,
Messages,
ShellAPI;
{$R *.res}
const
WM_MYTRAY = WM_USER;
procedure WinMain;
var
Msg: TMsg;
begin
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
procedure SetIcon(hWnd: HWND; Create: Boolean);
const Msg: array[Boolean] of DWORD = (NIM_DELETE, NIM_ADD);
var Icon: TNotifyIconData;
begin
if Create then
begin
Icon.hIcon := LoadImage(hInstance, "MAINICON",
IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
Icon.uCallbackMessage := WM_MYTRAY;
Icon.uFlags := NIF_MESSAGE or NIF_ICON;
end
else Icon.uFlags := 0;
Icon.uID := 0;
Icon.cbSize := SizeOf(Icon);
Icon.Wnd := hWnd;
Shell_NotifyIcon(Msg[Create], @Icon);
end;
function WinInit(ClassName: PChar; WndProc: TFNWndProc): HWND;
var
WndClass: TWndClass;
begin
FillChar(WndClass, SizeOf(WndClass), 0);
with WndClass do
begin
lpszClassName := ClassName;
hInstance := SysInit.HInstance;
lpfnWndProc := WndProc;
end;
if RegisterClass(WndClass) <> 0 then
Result := CreateWindowEx(WS_EX_TOOLWINDOW, WndClass.lpszClassName, nil,
WS_POPUP, 0, 0, 0, 0, HWND_DESKTOP, 0, SysInit.HInstance, nil)
else
Result:=0;
end;
var
WM_TRAYCREATE: UINT;
procedure SendChar(wParam: WPARAM);
var h: THandle; i1, i2: DWORD;
begin
h := GetForegroundWindow;
i1 := GetCurrentThreadId;
i2 := GetWindowThreadProcessId(h, nil);
if not AttachThreadInput(i1, i2, True) then Exit;
h := GetFocus;
if h <> 0 then
PostMessage(h, WM_CHAR, wParam, 0);
AttachThreadInput(i1, i2, False);
end;
type
TShortCutRec = record
modifiers, vk: UINT;
end;
procedure RegKeys(hWnd: HWND);
var Ch: Char; R: TShortCutRec; F: File of TShortCutRec;
begin
AssignFile(F, "hot.bin");
Reset(F);
try
for Ch := #0 to #255 do
begin
Read(F, R);
if R.modifiers or R.vk <>0 then
RegisterHotKey(hWnd, ord(Ch), R.modifiers, R.vk);
end;
finally
CloseFile(F);
end;
end;
function WindowProc(hWnd: HWND; Msg: UINT;
wParam: WPARAM; lParam: LPARAM): LRESULT; export; stdcall;
begin
case Msg of
WM_CREATE:
begin
SetIcon(hWnd, True);
RegKeys(hWnd);
end;
WM_HOTKEY:
begin
SendChar(wParam);
Result := 0;
Exit;
end;
WM_MYTRAY:
case LPARAM of
WM_RBUTTONUP: DestroyWindow(hWnd);
end;
WM_DESTROY:
begin
SetIcon(hWnd, False);
PostQuitMessage(0);
end;
else
if Msg = WM_TRAYCREATE then
SetIcon(hWnd, True);
end;
Result := DefWindowProc(hWnd, Msg, wParam, lParam);
end;
begin
WM_TRAYCREATE := RegisterWindowMessage("TaskbarCreated");
if WinInit("ProgramForGeroWnd", @WindowProc) <> 0 then
WinMain;
end.
Прога для настройки сочетаний
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids; //menus
type
TShortCutRec = record
modifiers, vk: UINT;
end;
TForm1 = class(TForm)
StringGrid: TStringGrid;
HotKey1: THotKey;
Label1: TLabel;
btnCancel: TButton;
btnOK: TButton;
procedure FormCreate(Sender: TObject);
procedure StringGridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure HotKey1Change(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
function GetHotKey(I, J: Integer): TShortCut;
procedure SetHotKey(I, J: Integer; const Value: TShortCut);
private
FHotKeys: array[1..16, 1..16] of TShortCutRec;
property HotKeys[I, J:Integer]: TShortCut read GetHotKey write SetHotKey;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const fn = "hot.bin";
procedure TForm1.FormCreate(Sender: TObject);
const dig: array [1..16] of Char = "0123456789ABCDEF";
var I, J: Integer;
begin
for I:=0 to 255 do
StringGrid.Cells[I and $F + 1, I shr 4 + 1] := Chr(I);
for I:=1 to 16 do
begin
StringGrid.Cells[I, 0] := dig[I];
StringGrid.Cells[0, I] := dig[I];
end;
if FileExists(fn) then
with TFileStream.Create(fn, fmOpenRead) do
try
ReadBuffer(FHotKeys, SizeOf(FHotKeys));
finally
Free;
end;
end;
function TForm1.GetHotKey(I, J: Integer): TShortCut;
begin
with FHotKeys[I, J] do
begin
Result := vk;
if modifiers and MOD_SHIFT <> 0 then
Result := Result or scShift;
if modifiers and MOD_CONTROL <> 0 then
Result := Result or scCtrl;
if modifiers and MOD_ALT <> 0 then
Result := Result or scAlt;
end;
end;
procedure TForm1.SetHotKey(I, J: Integer; const Value: TShortCut);
begin
with FHotKeys[I, J] do
begin
vk := Value and $FF;
modifiers := 0;
if Value and scShift <> 0 then
modifiers := modifiers or MOD_SHIFT;
if Value and scCtrl <> 0 then
modifiers := modifiers or MOD_CONTROL;
if Value and scAlt <> 0 then
modifiers := modifiers or MOD_ALT;
end;
end;
procedure TForm1.StringGridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
HotKey1.HotKey := HotKeys[ARow, ACol];
HotKey1.SetFocus;
end;
procedure TForm1.HotKey1Change(Sender: TObject);
begin
with StringGrid do
if (Col <> -1) and (Row <> -1) then
HotKeys[Row, Col] := Hotkey1.HotKey;
end;
procedure TForm1.btnOKClick(Sender: TObject);
begin
with TFileStream.Create(fn, fmCreate) do
try
WriteBuffer(FHotKeys, SizeOf(FHotKeys));
finally
Free;
end;
Close;
end;
procedure TForm1.btnCancelClick(Sender: TObject);
begin
Close;
end;
end.
object Form1: TForm1
Left = 192
Top = 107
Width = 452
Height = 509
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
← →
GuAV © (2005-01-04 21:39) [17]
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 424
Width = 32
Height = 13
Caption = "Label1"
end
object StringGrid: TStringGrid
Left = 8
Top = 8
Width = 430
Height = 430
ColCount = 17
DefaultColWidth = 24
RowCount = 17
Font.Charset = RUSSIAN_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "Times New Roman"
Font.Style = []
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine]
ParentFont = False
ScrollBars = ssNone
TabOrder = 0
OnSelectCell = StringGridSelectCell
end
object HotKey1: THotKey
Left = 8
Top = 448
Width = 121
Height = 19
HotKey = 0
Modifiers = []
TabOrder = 1
OnChange = HotKey1Change
end
object btnCancel: TButton
Left = 352
Top = 448
Width = 75
Height = 25
Caption = "Cancel"
TabOrder = 2
OnClick = btnCancelClick
end
object btnOK: TButton
Left = 256
Top = 448
Width = 75
Height = 25
Caption = "OK"
TabOrder = 3
OnClick = btnOKClick
end
end
← →
GuAV © (2005-01-04 21:44) [18]Только боюсь не поможет. Для отлова хитроумной комбинации
> ["e"+ """ + "->"]
имхо хук нужен.
← →
Anatoly Podgoretsky © (2005-01-04 22:14) [19]Так запоминать ничего не надо, кроме пары deadkey клавиш.
← →
GuAV © (2005-01-04 22:58) [20]Anatoly Podgoretsky © (04.01.05 22:14) [19]
Это Вы о чём ?
← →
Anatoly Podgoretsky © (2005-01-04 23:05) [21]Это методика ввода символов с акцентами, тильдами, каре и т.д.
Наживается особая клавиша, затем нужный символ. Например для ввода в эстонской раскладке назымается тильда и затем s или z и получается s или z с каре. Это путь реализованый Микрософтом, а может и кем ни будь другим. Запоминать почти ничего и не требуется.
← →
Кудесник © (2005-01-05 00:22) [22]
> [21] Anatoly Podgoretsky © (04.01.05 23:05)
Это работает везде? И в блокноте, и в Миранде, и в the bat"е? Если да, то где это найти?
← →
Anatoly Podgoretsky © (2005-01-05 01:23) [23]Это работает ну уровде системном.
← →
Кудесник © (2005-01-05 01:54) [24]
> [23] Anatoly Podgoretsky © (05.01.05 01:23)
Так бы и написали, что надо поставить US-International... ладно хоть слово deadkey прозвучало.. по нему нашёл ответ на другом форуме...
Спасибо %)
← →
Кудесник © (2005-01-05 01:57) [25]Для символов западноевропейских языков под Винду поставляется расладка US-International.Теперь ты можешь в *любом приложении* вводить символы типа á, è, ç, ð, ö, û прямо с клавиатуры. Это интересно... А какие же кнопки для этих символов с диакритикой?
Есть два способа ввода:
1. Для некоторых часто используемых символов - AltGrey+клавиша.
Вот соответствия:
1 - ¡, 5 - ?
Q - ä, W - å, E - é, R - ®, T - þ, Y - ü, U - ú, I - í, O - ó, P - ö,
A - á, S - ß, D - ð ... L - ø
Z - æ, C - ©, N - ñ, M - µ, , - ç, / - ¿
2. Способ deadkey: после нажатия некоторых клавиш никакого символа не вводится, но такая клавиша модифицирует следующий символ: например (апостроф)+A=á
Если "мертвая клавиша" – " (апостроф), то вводятся символы с акутом (á), " (кавычки) - с диерезисом/умляутом (ä), ^ (каре/крышечка) - с циркумфлексом (â), ` (открывающий апостроф) - с грависом (à), ~ (тильда) - с тильдой (ã).
А если нужен именно тот символ, что на мертвой клавише, нажмите затем пробел!
(с) http://www.lingvoforum.net/posting.php?mode=quote&p=3085&sid=f8dcb966201baf76502c63ac35310f3e
← →
Кудесник © (2005-01-05 02:05) [26]Ещё бы кто подсказал, как в миранде изменить шрифты для отдельных пользоветелей с Кирилицы на Западный... но чтоб это не задело остальных... установлен nConvers, который позволяет сделать настройки, но никак не могу понять для чего вкладка "Contac" с "These are speciffic settings for" - выпадающий список контактов... всё-равно изменение фонтов сказывается на всех...
← →
Кудесник © (2005-01-05 02:31) [27]Вынес тему в отдельную ветку
http://delphimaster.net/view/14-1102616026/
← →
Anatoly Podgoretsky © (2005-01-05 02:46) [28]Кудесник © (05.01.05 01:54) [24]
Ну это общая для западно европейских языков, есть еще 6 чисто французких - я рекомендовал именно одну из них.
← →
Кудесник © (2005-01-05 02:53) [29]Не общая самое оно... французкую поставил, там с раскладкой полный бардак получается...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.039 c