Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Adam Jackson
xserver
Commits
a6ac9002
Commit
a6ac9002
authored
Nov 05, 2007
by
Ben Byer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
formatting cleanup
parent
67e96be1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
72 deletions
+31
-72
hw/darwin/quartz/quartzKeyboard.c
hw/darwin/quartz/quartzKeyboard.c
+31
-72
No files found.
hw/darwin/quartz/quartzKeyboard.c
View file @
a6ac9002
/*
quartzKeyboard.c
Code to build a keymap using the Carbon Keyboard Layout API,
which is supported on Mac OS X 10.2 and newer.
Code to build a keymap using the Carbon Keyboard Layout API.
Copyright (c) 2003, 2007 Apple Inc.
...
...
@@ -150,15 +149,11 @@ unsigned int
DarwinModeSystemKeymapSeed
(
void
)
{
static
unsigned
int
seed
;
static
KeyboardLayoutRef
last_key_layout
;
KeyboardLayoutRef
key_layout
;
KLGetCurrentKeyboardLayout
(
&
key_layout
);
if
(
key_layout
!=
last_key_layout
)
seed
++
;
if
(
key_layout
!=
last_key_layout
)
seed
++
;
last_key_layout
=
key_layout
;
return
seed
;
...
...
@@ -190,10 +185,8 @@ macroman2ucs (unsigned char c)
0xaf
,
0x2d8
,
0x2d9
,
0x2da
,
0xb8
,
0x2dd
,
0x2db
,
0x2c7
,
};
if
(
c
<
128
)
return
c
;
else
return
table
[
c
-
128
];
if
(
c
<
128
)
return
c
;
else
return
table
[
c
-
128
];
}
static
KeySym
...
...
@@ -202,10 +195,7 @@ make_dead_key (KeySym in)
int
i
;
for
(
i
=
0
;
i
<
sizeof
(
dead_keys
)
/
sizeof
(
dead_keys
[
0
]);
i
++
)
{
if
(
dead_keys
[
i
].
normal
==
in
)
return
dead_keys
[
i
].
dead
;
}
if
(
dead_keys
[
i
].
normal
==
in
)
return
dead_keys
[
i
].
dead
;
return
in
;
}
...
...
@@ -249,53 +239,39 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info)
an X11 keysym (which may just the bit that says "this is
Unicode" if it can't find the real symbol.) */
for
(
i
=
0
;
i
<
num_keycodes
;
i
++
)
{
for
(
i
=
0
;
i
<
num_keycodes
;
i
++
)
{
static
const
int
mods
[
4
]
=
{
0
,
MOD_SHIFT
,
MOD_OPTION
,
MOD_OPTION
|
MOD_SHIFT
};
k
=
info
->
keyMap
+
i
*
GLYPHS_PER_KEY
;
for
(
j
=
0
;
j
<
4
;
j
++
)
{
if
(
is_uchr
)
{
for
(
j
=
0
;
j
<
4
;
j
++
)
{
if
(
is_uchr
)
{
UniChar
s
[
8
];
UniCharCount
len
;
UInt32
dead_key_state
,
extra_dead
;
UInt32
dead_key_state
=
0
,
extra_dead
=
0
;
dead_key_state
=
0
;
err
=
UCKeyTranslate
(
chr_data
,
i
,
kUCKeyActionDown
,
mods
[
j
]
>>
8
,
keyboard_type
,
0
,
&
dead_key_state
,
8
,
&
len
,
s
);
if
(
err
!=
noErr
)
continue
;
if
(
err
!=
noErr
)
continue
;
if
(
len
==
0
&&
dead_key_state
!=
0
)
{
if
(
len
==
0
&&
dead_key_state
!=
0
)
{
/* Found a dead key. Work out which one it is, but
remembering that it's dead. */
extra_dead
=
0
;
err
=
UCKeyTranslate
(
chr_data
,
i
,
kUCKeyActionDown
,
mods
[
j
]
>>
8
,
keyboard_type
,
kUCKeyTranslateNoDeadKeysMask
,
&
extra_dead
,
8
,
&
len
,
s
);
if
(
err
!=
noErr
)
continue
;
if
(
err
!=
noErr
)
continue
;
}
if
(
len
>
0
&&
s
[
0
]
!=
0x0010
)
{
if
(
len
>
0
&&
s
[
0
]
!=
0x0010
)
{
k
[
j
]
=
ucs2keysym
(
s
[
0
]);
if
(
dead_key_state
!=
0
)
k
[
j
]
=
make_dead_key
(
k
[
j
]);
if
(
dead_key_state
!=
0
)
k
[
j
]
=
make_dead_key
(
k
[
j
]);
}
}
else
{
UInt32
c
,
state
=
0
;
}
else
{
// kchr
UInt32
c
,
state
=
0
,
state2
=
0
;
UInt16
code
;
code
=
i
|
mods
[
j
];
...
...
@@ -307,67 +283,50 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info)
us the actual dead character. */
if
(
state
!=
0
)
{
UInt32
state2
=
0
;
c
=
KeyTranslate
(
chr_data
,
code
|
128
,
&
state2
);
}
/* Characters seem to be in MacRoman encoding. */
if
(
c
!=
0
&&
c
!=
0x0010
)
{
if
(
c
!=
0
&&
c
!=
0x0010
)
{
k
[
j
]
=
ucs2keysym
(
macroman2ucs
(
c
&
255
));
if
(
state
!=
0
)
k
[
j
]
=
make_dead_key
(
k
[
j
]);
if
(
state
!=
0
)
k
[
j
]
=
make_dead_key
(
k
[
j
]);
}
}
}
if
(
k
[
3
]
==
k
[
2
])
k
[
3
]
=
NoSymbol
;
if
(
k
[
2
]
==
k
[
1
])
k
[
2
]
=
NoSymbol
;
if
(
k
[
1
]
==
k
[
0
])
k
[
1
]
=
NoSymbol
;
if
(
k
[
0
]
==
k
[
2
]
&&
k
[
1
]
==
k
[
3
])
k
[
2
]
=
k
[
3
]
=
NoSymbol
;
if
(
k
[
3
]
==
k
[
2
])
k
[
3
]
=
NoSymbol
;
if
(
k
[
2
]
==
k
[
1
])
k
[
2
]
=
NoSymbol
;
if
(
k
[
1
]
==
k
[
0
])
k
[
1
]
=
NoSymbol
;
if
(
k
[
0
]
==
k
[
2
]
&&
k
[
1
]
==
k
[
3
])
k
[
2
]
=
k
[
3
]
=
NoSymbol
;
}
/* Fix up some things that are normally missing.. */
if
(
HACK_MISSING
)
{
for
(
i
=
0
;
i
<
sizeof
(
known_keys
)
/
sizeof
(
known_keys
[
0
]);
i
++
)
{
if
(
HACK_MISSING
)
{
for
(
i
=
0
;
i
<
sizeof
(
known_keys
)
/
sizeof
(
known_keys
[
0
]);
i
++
)
{
k
=
info
->
keyMap
+
known_keys
[
i
].
keycode
*
GLYPHS_PER_KEY
;
if
(
k
[
0
]
==
NoSymbol
&&
k
[
1
]
==
NoSymbol
if
(
k
[
0
]
==
NoSymbol
&&
k
[
1
]
==
NoSymbol
&&
k
[
2
]
==
NoSymbol
&&
k
[
3
]
==
NoSymbol
)
{
k
[
0
]
=
known_keys
[
i
].
keysym
;
}
k
[
0
]
=
known_keys
[
i
].
keysym
;
}
}
/* And some more things. We find the right symbols for the numeric
keypad, but not the KP_ keysyms. So try to convert known keycodes. */
if
(
HACK_KEYPAD
)
{
if
(
HACK_KEYPAD
)
{
for
(
i
=
0
;
i
<
sizeof
(
known_numeric_keys
)
/
sizeof
(
known_numeric_keys
[
0
]);
i
++
)
{
/
sizeof
(
known_numeric_keys
[
0
]);
i
++
)
{
k
=
info
->
keyMap
+
known_numeric_keys
[
i
].
keycode
*
GLYPHS_PER_KEY
;
if
(
k
[
0
]
==
known_numeric_keys
[
i
].
normal
)
{
k
[
0
]
=
known_numeric_keys
[
i
].
keypad
;
}
}
}
if
(
currentKeyLayoutRef
)
CFRelease
(
currentKeyLayoutRef
);
if
(
currentKeyLayoutRef
)
CFRelease
(
currentKeyLayoutRef
);
return
TRUE
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment