Ctrl+Enterなどのキーはアクセスキーやショートカットキーなどと、その用い方によって名称が変わります。
前者はマウスを使って、メニューから選択する変わりに用いるキーの名前であり、後者は複数のキー操作を1回のキー操作にするために用いるものです。
 ところが、私が知りたいのは上記の2つのような使い方ではないのです。例えば、テキストボックスで文字を
入力していて、Ctrl+Enterを押すと改行になる、といった具合なのです。このような時の複合キーの名称はなんと呼ぶのでしょうか?
 よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

一般性があるかどうかはわかりません。


X window system で使われるウィンドウマネージャの一つに
fvwm というのがありますが、これのマニュアルの中の
設定ファイルの記述法の項に、以下のような記述があります。

Modifiers is any combination of N for no modifiers,
C for control, S for shift, M for Meta, or A for
any modifier. For example, a modifier of SM will
apply when both the Meta and shift keys are down.

これはCtrlなどを他のキィもしくはマウスボタンとの組み合わせで機能を実現する
ための設定ファイルの記述法について説明されている部分ですが、
これによると、Ctrl Shift Meta のそれぞれのキィは modifier
と呼ばれていて、これを他のキィと組み合わせて使う、
というような感じで、これらは特殊なキィとして扱っているようです。

Ctrlなどを特殊なキィと位置付けた上で、
「Ctrl+Enter」
というのは、
「Ctrl修飾つきのEnter」
なんて呼ぶんでしょうかね。

曖昧ですが、手助けになりましたでしょうか?
    • good
    • 0

ご質問の意味を取り違えているつもりはありませんが、補足します。


ショートカットキーですが、狭義では、ある操作をショートカットすることを意味し、広義では単なるキー操作を意味すると考えるのが妥当だろうと思います。
スタートボタン→ヘルプ→キーワードで「ショートカット キー」を検索し、その中のダイアログボックスを見てください。Ctrl+Enterの記述はありませんが、Enterや方向キーなどもショートカットキーとして記述されています。
別の場所では、PrintScreenやAlt+Tab、エクスプローラ上でHomeやEndなど、私の知っているかぎり代替のないものもショートカットキーとして記述されています。
マイクロソフトの各製品では大抵そうなのですが、他メーカーでも単なるキー操作をショートカットと呼んでいることがあります。
実は私としても違和感がありまして、技術者の方々ならば、makotottie氏、deagle氏のおっしゃるように、本来のショートカットでないものはショートカットと呼ばないのが多数意見だとも思っています。
あと、下記URLのページ内に「ダイアログ ボックスのキーボード コマンド」という記述がありましたが、私は、こういった表現が一般に通用しているとは思っていません。
Windowsを前提としてしまいましたが、見当違いでしたか?

参考URL:http://www.microsoft.com/JAPAN/support/kb/articl …
    • good
    • 0

アクセスキーとは、例えば「ファイル(F)」の'F'のことを指します。


ショートカットキーとは、メニューを開かなくても機能を実行することができるキーやキーの組み合わせのことを指します。
ですから、Ctrl+Enterはテキストボックスに限らずショートカットキーです。
Ctrl+Cのような機能はメニューにも項目が用意されています。Ctrl+Enterはメニューに項目がありませんが、どちらの場合でもショートカットキーと呼称します。

この回答への補足

御回答、ありがとうございます。

まず、1番目の回答を含めまして、私との認識の隔たりがある可能性がありますので、書かせていただきます。それは、2点あります。

(1)Ctrl + Enterなどの複合キーによる、改行などの
操作は、他のキーでは実現できないこと。つまり、
(ある操作を)ショートカット(する)キーではないこと。

(2)Ctrl + Enterという特定の複合キーにかかわらず、
キーの組み合わせによって初めて実現できる操作の
一般的な名称をしりたいということ。

以上の2点、よろしくお願いします。

補足日時:2001/08/06 09:43
    • good
    • 0

 名称は変わりませんよ(^_^;


 変わるとしたらそれはアプリケーションのメーカーが勝手に付けているだけで、Ctrl+Enter は Ctrl+Enter です(一般には「コントロール・エンター」あるいは「コントロール・プラス・エンター」と発音されます)。
 名前が変わるのは、「キーの名前」が変わっているのではなく、「機能」に対して名前が付いているだけなのです。
 たとえばショートカットキーは、「ある特定の操作を簡略化するためのキー」を全般的にそう呼ぶのであり、特定のキーがショートカットキーに変化するわけじゃないんです。

 ですので、分からないときは「コントロール・エンター」と言っていただければ、慣れた人にはすべてこれで通じます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVCでCtrl + Alt + Del を無効にするには?

VCでCtrl + Alt + Del を無効にするにはどうしたらよいでしょうか?
WindowsVISTAで使いたいのですが・・・
スクリーンセーバでパスワードを設定するとCtrl + Alt + Delが無効になるので方法はあると思うのですが、色々やってみた結果うまくいきません。
ちなみに、Alt + Tabすらも無効に出来ません。
SystemParametersInfoも
WindowProcでreturn TRUEもやってみました。

よろしくお願いします。

Aベストアンサー

ご参考

http://nienie.com/~masapico/doc_DisableSAS.html

QEnterキーの入力

今、RedHatLinuxでC言語を学んでいます。ゲームを作る宿題を与えられえ取り組み始めたのですがどうも最初からつまずいてしまいました…

#include <stdio.h>
#include <time.h>
void main(void){
while(1)
printf("%f\n",(float)clock()/CLOCKS_PER_SEC);
}

をENTERキーが入力されたところで停止する(無限ループから抜ける)ようにしないと話が進まないのです。
この先の、ファイルへの入出力などはフローチャートを書いてある程度予想できてるのですが、ENTERキーを入力するところがわかりません。どうか教えてください!

Aベストアンサー

void main(void)
{
while(1)
printf("%f\n",(float)clock()/CLOCKS_PER_SEC);
}
この場合、while文は無限ループですね!このループ内での処理は

printf("%f\n",(float)clock()/CLOCKS_PER_SEC);
一行だけですので、言われるように「ENTER」の入力部がありません。
またprintf関数は標準出力関数ですので、「enter」の入力は得られません
ので、このループをブロック化して、「ENTER]はキー入力なのか、ファイル
入力なのかの処理を書いてif文で判断し、真の場合「break」文で無限ループを
抜けるとよいです。

QエディットでEnterキーでのTAB移動

Win32APIを使ってプログラミングしています。
通常はTABでフォーカスを移動するのが良いと思うのですが、Enterキーで移動させたいと思います。
ところが、一行のエディットだとEnterキーを押すとビープ音が鳴ってしまいます。
フォーカス移動はできるのですが、ビープ音を鳴らないようにするにはどうすればいいのでしょう?
多分WM_KEYDOWNかWM_KEYUP、WM_CHARのどれかで書けばいいと思ってるんですが…
よろしくお願いします。

Aベストアンサー

エディットコントロールのウィンドウ処理関数において
switch(wM)
{
..............
case WM_CHAR:
switch(wP)
{
..............
case VK_RETURN:
SetFocus(次のフォーカス先のウィンドウハンドル);
break;
..............
}
return 0;
..............
}

QダイアログプログラムでEnterキーを検出するには?

おせわになります。
開発環境はWindowsXP、VisualC++.NET、SDK開発です。

ダイアログ上のテキストボックスでエンターキーが入力されたら、
値を取り込むというプログラムを考えています。
ただ、WM_KEYDOWNではENTERが検出できないで困っています。
WM_SYSKEYでもENTERを押してもOKボタンが押されてしまいます。

過去のログを見ますとTranslateMessageでフックするというような
記述がありますが、具体的なコードは無いでしょうか?

メイン関数内のループでMSGを処理するのではと思っていますが
思うような動作が出来ません。

Aベストアンサー

複数行のエディットフィールドであれば

BOOL CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
{
static LONG preProc;

switch (GetDlgCtrlID(hDlg)==IDC_EDIT1?WM_USER+1:msg)
{
case WM_USER+1:
switch (msg)
{
case WM_CHAR:
if (wParam==13) MessageBeep(0);
}
return CallWindowProcA((WNDPROC)preProc,hDlg,msg,wParam,lParam);
case WM_INITDIALOG:
preProc=SetWindowLong(GetDlgItem(hDlg,IDC_EDIT1),GWL_WNDPROC,(LONG)DlgProc);
return 1;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hDlg,0);
return 1;
}
}
return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR nCmdLine,
int lCmdShow)
{
DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),0,DlgProc,0);
return 0;
}

と言う感じ(重複サブクラスプロシージャ)でシンプルにできます。

ただし、1行専用フィールドと場合はスレッドフックが必要です。

<セット>
hHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,0,GetCurrentThreadId());

<プロシージャ>
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
if (nCode===HC_ACTION) if (wParam==0xD)
{
ここでエンターキー入力の処理
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
}

と言った感じでできると思いますよ。
スレッドフックは参考URLを参照してください。

参考URL:http://www.kumei.ne.jp/c_lang/sdk2/sdk_160.htm

複数行のエディットフィールドであれば

BOOL CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
{
static LONG preProc;

switch (GetDlgCtrlID(hDlg)==IDC_EDIT1?WM_USER+1:msg)
{
case WM_USER+1:
switch (msg)
{
case WM_CHAR:
if (wParam==13) MessageBeep(0);
}
return CallWindowProcA((WNDPROC)preProc,hDlg,msg,wParam,lParam);
case WM_INITDIALOG:
preProc=SetWindowLong(GetDlgItem(hDlg,IDC_EDIT1),GWL_WNDPROC,(LONG)DlgProc);
return 1;
case WM_COMMAND:
swi...続きを読む

Q終了条件Ctrl+zについて,結果表示ついて(C言語)

こんにちは<_ _>
自己参照構造体に関する問題を解いています。
入力したデータとは逆順につながったリストを作成するという
問題で、結果はともかく逆順表示に出力できましたが
微妙なところでNGが出ています。

まず、
(1)「Ctrl+z」一回で終了しなければならない
   以下のプログラムでは二回Ctrl+zを入力しないと
   入力が終了できません。
(2)入力時並列させること
   以下のプログラムでは入力時
   「name
tell
name
tell


    Ctrl+z」
   と入力しなければなりませんが
「name tell
name tell」
という風に入力しなければなりません・・・
(3)変数を変化、増減させてはならない
    並列させるために変数増やそうと思ったら
    bufferだけでやらなければならないみたいです・・・

三時間ぐらい調べて悩みましたがうまくいきませんでした
どうしたら以上のようにできるのかご指導、ご鞭撻のほどを
どうかよろしくお願いします<_ _>

#include<stdio.h>
#include<malloc.h>

struct tfield{
char name[20];
char tel[20];
struct tfield *pointer;
};

struct tfield *talloc(void);

int main(void)
{
struct tfield *head,*p;
char buffer[BUFSIZ];
head=NULL;

while(1){
p=talloc();
if( p == NULL ){
printf( "メモリを確保できません。\n" );
_exit( 0 );
}
if(scanf("%s",&buffer)==EOF){
break;
strcpy(p->name, buffer);
}
buffer=0;
if(scanf("%s",&buffer)==EOF){
break;
strcpy(p->tel, buffer);
}

p->pointer = head;
head = p;
}
if(head != NULL){
p=head;
while(p!=NULL){
printf("%6s %s\n",p->name,p->tel);
p=p->pointer;
}
}
return 0;
}
struct tfield *talloc(void)   /*記憶領域の取得*/
{
return (struct tfield *)malloc(sizeof(struct tfield));
}

こんにちは<_ _>
自己参照構造体に関する問題を解いています。
入力したデータとは逆順につながったリストを作成するという
問題で、結果はともかく逆順表示に出力できましたが
微妙なところでNGが出ています。

まず、
(1)「Ctrl+z」一回で終了しなければならない
   以下のプログラムでは二回Ctrl+zを入力しないと
   入力が終了できません。
(2)入力時並列させること
   以下のプログラムでは入力時
   「name
tell
name
tell


...続きを読む

Aベストアンサー

先ほど回答しようとしたところ締め切られていたのでここで改めて。
データを1行で入力しなければならない縛りが解けたみたいですね。

#include<stdio.h>
#include<malloc.h>
#include <unistd.h>
#include <string.h>

struct tfield{
char name[20];
char tel[20];
struct tfield *pointer;
};

struct tfield *talloc(void);

int main(void)
{
struct tfield *head,*p;
char buffer[BUFSIZ];

head=NULL;

while(1){
p=talloc();
if( p == NULL ){
printf( "メモリを確保できません。\n" );
_exit( 0 );
}
printf( "name? " );
if( scanf( "%s", buffer ) == EOF ){
/* Ctrl+zだとscanfはEOFを返すので、このルートを通りループを抜ける */
/* 質問者はここで構造体へデータをいれようとしていますが、それはダメ */
free( p ); /* 使わないのでメモリを開放 */
break;
}
strcpy(p->name, buffer);
printf( "tel? " );
if( scanf( "%s", buffer ) == EOF ){
/* nameと同じ */
free( p );
break;
}
strcpy(p->tel, buffer );

p->pointer = head;
head = p;
}

printf( "\n" );
if( head != NULL ){
p=head;
while( p != NULL ){
printf("%6s %s\n",p->name,p->tel);
p=p->pointer;
}
/* 確保したメモリはきちんと開放する */
do{
p = head->pointer;
free( head );
head = p;
} while( head != NULL );
}

return 0;
}
struct tfield *talloc(void) /*記憶領域の取得*/
{
return (struct tfield *)malloc(sizeof(struct tfield));
}

先ほど回答しようとしたところ締め切られていたのでここで改めて。
データを1行で入力しなければならない縛りが解けたみたいですね。

#include<stdio.h>
#include<malloc.h>
#include <unistd.h>
#include <string.h>

struct tfield{
char name[20];
char tel[20];
struct tfield *pointer;
};

struct tfield *talloc(void);

int main(void)
{
struct tfield *head,*p;
char buffer[BUFSIZ];

head=NULL;

while(1){
p=talloc();
if( ...続きを読む


人気Q&Aランキング

おすすめ情報